Lee moon soo created ZEPPELIN-2035:
--------------------------------------
Summary: BI directional RPC framework between ZeppelinServer and
InterpreterProcess on top of thrift
Key: ZEPPELIN-2035
URL: https://issues.apache.org/jira/browse/ZEPPELIN-2035
Project: Zeppelin
Issue Type: Improvement
Reporter: Lee moon soo
Priority: Minor
ZeppelinServer and InterpreterProcess communicates using thrift protocol.
InterpreterProcess run as a thrift server, ZeppelinServer run as a thrift
client.
Since thrift provides client->server RPC mechanism, ZeppelinServer can call
methods in InterpreterProcess and get result back.
{noformat}
[ZeppelinServer] ---ThriftMethodCall---> [InterpreterProcess]
{noformat}
However, thrift does not provides mechanism to call method from
InterpreterProcess to ZeppelinServer. Currently,
[RemoteInterpreterEventClient|https://github.com/apache/zeppelin/blob/master/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterEventClient.java]
and
[RemoteInterpreterEventPoller|https://github.com/apache/zeppelin/blob/master/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterEventPoller.java]
provides a mechanism to call method from InterpreterProcess to ZeppelinServer.
{noformat}
(method call)
[InterpreterProcess] ---EventPoller/EventClient---> [ZeppelinServer] ---+
| |
| (return result) |
+-----------------------------ThriftMethodCall--------------------------+
{noformat}
Therefore
1. To add method call from ZeppelinServer to InterpreterProcess,
- add method in thrift IDL
- implement the thrift method
- call the method from ZeppelinServer
2. To add method call from InterpreterProcess to ZeppelinServer,
- add message type in thrift IDL
- implement send message function in EventClient
- implement receive message message functions in EventPoller
- add thriftIDL to receive result
- implement the thrift method
- implement method return wait mechanism in InterpreterProcess
- call the method from InterpreterProcess and get return from ZeppelinServer
It would be nice if Zeppelin provides some simplified layer for 2), which
currently quite painful to do for every single method call from
InterpreterProcess to ZeppelinServer.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)