Michael Pollmeier created TINKERPOP-1230:
--------------------------------------------

             Summary: Serialising lambdas for RemoteGraph
                 Key: TINKERPOP-1230
                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1230
             Project: TinkerPop
          Issue Type: Improvement
          Components: driver, server
            Reporter: Michael Pollmeier
            Priority: Minor


I just made an attempt to serialise lambdas and send them via the RemoteGraph. 
I didn't quite get there, but wanted to share my findings: 

* it's possible to serialise lambdas on the jvm by just extending 
`Serializable`:
http://stackoverflow.com/questions/22807912/how-to-serialize-a-lambda/22808112#22808112

* sending a normal predicate doesn't work (this is a Scala REPL but it should 
be pretty easy to convert this to java/groovy)
  val g = RemoteGraph.open("conf/remote-graph.properties").traversal()
  val pred1 = new java.util.function.Predicate[Traverser[Vertex]] { def test(v: 
Traverser[Vertex]) = true }
  g.V().filter(pred1).toList // java.lang.RuntimeException: 
java.io.NotSerializableException: $anon$1
                             // on server: nothing
                             
* simply adding Serializable let's us send it over the wire, but the server 
doesn't deserialise it
  val pred2 = new java.util.function.Predicate[Traverser[Vertex]] with 
Serializable { def test(v: Traverser[Vertex]) = true }
  g.V().filter(pred2).toList 

  // on server: [WARN] OpExecutorHandler - Could not deserialize the Traversal 
instance
        org.apache.tinkerpop.gremlin.server.op.OpProcessorException: Could not 
deserialize the Traversal instance
        at 
org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor.iterateOp(TraversalOpProcessor.java:135)
        at 
org.apache.tinkerpop.gremlin.server.handler.OpExecutorHandler.channelRead0(OpExecutorHandler.java:68)

  // on client: 
org.apache.tinkerpop.gremlin.driver.exception.ResponseException: $anon$1 




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to