[ https://issues.apache.org/jira/browse/TINKERPOP-1230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15446804#comment-15446804 ]
stephen mallette commented on TINKERPOP-1230: --------------------------------------------- ah - never mind - i misread the version [~mpollmeier] was pointing at > Serialising lambdas for RemoteGraph > ----------------------------------- > > Key: TINKERPOP-1230 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1230 > Project: TinkerPop > Issue Type: Improvement > Components: driver, server > Affects Versions: 3.1.1-incubating > Reporter: Michael Pollmeier > Assignee: Marko A. Rodriguez > Priority: Minor > Fix For: 3.2.2 > > > 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)