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)

Reply via email to