Details
Description
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
Attachments
Issue Links
- is related to
-
TINKERPOP-1278 Implement Gremlin-Python and general purpose language variant test infrastructure
- Closed
- relates to
-
TINKERPOP-575 Implement RemoteGraph
- Closed