Hi guys,

I'm bringing an issue https://github.com/NFLabs/zeppelin/issues/278 to this
mailing list for discussion.

Zeppelin creates interpreter instance with each separate classloader to
avoid interfere(dependency conflictions, singletons, static members) with
other interpreter instance. It was working well until now but i can see
some limitations.

a) When multiple interpreter instances are running concurrently, they can
not avoid interfere of their stdin/stdout/stderr.
b) When interpreter's one dependency is designed(== hardcoded) to use
Application classloader, it won't work within Zeppelin because Zeppelin
loads interpreter's dependency jars in it's threadcontext classloader, not
Application classloader.

Run interpreter in separate process is the solution i can think.
In detail, because of interpreter is abstracted by it's public methods,
everything will be simply done if we can call those method remotely by some
sort of RPC mechanism.

Therefore

a) Main entry point and run script to run interpreter in separate process
b) RPC mechanism between Zeppelin and separate interpreter process
c) Option to enabling/disabling this capability.

are major tasks i'm thinking.

What do you guys think? Please share if there're some idea.

Best,
moon

Reply via email to