Github user agoodm commented on the issue:
https://github.com/apache/zeppelin/pull/1439
Thank you very much for the detailed explanation. To be precise, I made the
`cmd` argument that gets registered a String solely because
`Interpreter.interpret()` accepts a String representation of the code rather
than actual callable objects. I think actually being able to do that (eg, use
some API like ` z.registerCallback("post_exec", callback_func)` rather than
`z.registerCallback("post_exec", "callback_func()") `would depend on the
language that's being interpreted and what sort of libraries are available to
connect it to the JVM (eg py4j with python).
Nevertheless I think you have made a very compelling point. The source of
my problem with my first implementation of the registry system using the
`Interpreter` class was that I only considered attempting an implementation of
pre/post execute from a Paragraph execution perspective. This is why I thought
that I needed to broadcast changes in the registry to the `ZeppelinServer`, as
I processed the registry from within the `Paragraph` class rather than from the
`RemoteInterpreterServer` class. As a result of your explanation I think I
understand everything a lot better now, so I'll go ahead and work on an
implementation tomorrow which works exclusively through the interpreter process.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---