Passing LUA script via python rados execute

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02/19/2017 12:15 PM, Patrick Donnelly wrote:
> On Sat, Feb 18, 2017 at 2:55 PM, Noah Watkins <noahwatkins at gmail.com> wrote:
>> The least intrusive solution is to simply change the sandbox to allow
>> the standard file system module loading function as expected. Then any
>> user would need to make sure that every OSD had consistent versions of
>> dependencies installed using something like LuaRocks. This is simple,
>> but could make debugging and deployment a major headache.
>
> A locked down require which doesn't load C bindings (i.e. only load
> .lua files) would probably be alright.
>
>> A more ambitious version would be to create an interface for users to
>> upload scripts and dependencies into objects, and support referencing
>> those objects as standard dependencies in Lua scripts as if they were
>> standard modules on the file system. Each OSD could then cache scripts
>> and dependencies, allowing applications to use references to scripts
>> instead of sending a script with every request.
>
> This is very doable. I imagine we'd just put all of the Lua modules in
> a flattened hierarchy under a RADOS namespace? The potentially
> annoying nit in this is writing some kind of mechanism for installing
> a Lua module tree into RADOS. Users would install locally and then
> upload the tree through some tool.

Using rados objects for this is not really feasible. It would be
incredibly complex within the osd - it involves multiple objects, cache
invalidation, and has all kinds of potential issues with consistent
versioning and atomic updates across objects.

The simple solution of loading modules from the local fs sounds
way better to me. Putting modules on all osds and reloading the modules
or restarting the osds seems like a pretty simple deployment model with
any configuration management system.

That said, for research purposes you could resurrect something like the
ability to load modules into the cluster from a client - just store
them on the local fs of each osd, not in rados objects. This was
removed back in 2011:

https://github.com/ceph/ceph/commit/7c04f81ca16d11fc5a592992a4462b34ccb199dc
https://github.com/ceph/ceph/commit/964a0a6e1326d4f773c547655ebb2a5c97794268

Josh


[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux