【问题标题】:Traversal Serialization error in JanusGraphJanusGraph 中的遍历序列化错误
【发布时间】:2018-07-03 00:21:47
【问题描述】:

我已经按照the GitHub docs 中的描述设置了一个由 DynamoDB 支持的 JanusGraph 实例,在 Java 中创建了一个简单的 API 来测试 CRUD 操作,并且我已经创建并读取了工作。当我尝试删除数据时出现问题。添加时,我调用:

Vertex v = this.g.addV("student").property("name", student.getName()).next()

然后返回

Long id = (Long) v.id()
return Long.toString(id)

删除时,我调用:

this.g.V(Long.valueOf(id)).drop().iterate()

并从 Gremlin 服务器收到以下错误:

    2631184 [gremlin-server-worker-1] ERROR 
    org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor  
    - Could not deserialize the Traversal instance
    2631186 [gremlin-server-worker-1] WARN  
    org.apache.tinkerpop.gremlin.server.handler.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.iterateBytecodeTraversal(TraversalOpProcessor.java:369)
    at org.apache.tinkerpop.gremlin.server.handler.OpExecutorHandler.channelRead0(OpExecutorHandler.java:68)
    at org.apache.tinkerpop.gremlin.server.handler.OpExecutorHandler.channelRead0(OpExecutorHandler.java:43)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)

我的日志(在我调用 API 的服务器上)显示:

Caused by: org.apache.tinkerpop.gremlin.driver.exception.ResponseException: null:none([])
at org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.channelRead0(Handler.java:246) ~[gremlin-driver-3.3.2.jar:3.3.2]
at org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.channelRead0(Handler.java:197) ~[gremlin-driver-3.3.2.jar:3.3.2]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[netty-all-4.1.jar:4.1.19.Final]

我正在使用org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0 作为我的序列化程序,并且也尝试过其他的,但似乎没有任何效果。

我用EmptyGraph通过以下方式初始化图遍历:

this.g = EmptyGraph.instance().traversal().withRemote("some-path/remote-graph.properties");

我已经被这个问题困扰了很长时间,所以任何帮助都非常感谢!

【问题讨论】:

    标签: java amazon-web-services amazon-dynamodb gremlin janusgraph


    【解决方案1】:

    我猜你有某种形式的版本问题。在不使用iterate() 的情况下尝试该呼叫。由于您只进行一次删除,因此应该安全地执行 next() 而不是 iterate() 以查看是否可以解决问题。如果没有,我会将您的驱动程序(您当前是 3.3.2)与 JanusGraph 正在使用的 TinkerPop 版本对齐,当前版本的 0.2 是 3.2.6:

    https://github.com/JanusGraph/janusgraph/blob/v0.2.0/pom.xml#L68

    我认为您可以放心地使用 3.2.9 之前的任何版本,而不必担心。最终,我认为问题在于 3.3.1 和 iterate() - 请参阅此处的第一个要点:

    https://github.com/apache/tinkerpop/blob/3.3.1/CHANGELOG.asciidoc#tinkerpop-331-release-date-december-17-2017

    只要您知道这样的升级更改,使用不匹配版本的驱动程序和服务器通常是安全的,但我们通常建议您不要这样做,以免您最终遇到此类问题。

    【讨论】:

    • 是的!降级到 3.2.6 有效。使用 next() 实际上执行了 drop 操作,但无论如何都会产生一堆异常。不使用 next() 或 iterate() 不会产生任何错误,但也没有任何效果。非常感谢您的帮助,这个问题非常难以解决。
    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 2023-02-08
    • 1970-01-01
    • 2021-05-23
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多