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)