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)