java - JanusGraph 中的遍历序列化错误

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

我已经设置了一个由 DynamoDB 支持的 JanusGraph 实例,如 the GitHub docs 中所述。 ,用 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");

我已经被这个问题困扰了很长一段时间,所以非常感谢您的帮助!

最佳答案

我猜测您存在某种形式的版本问题。尝试在不使用 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

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

关于java - JanusGraph 中的遍历序列化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51145159/

相关文章:

macos - 如何使用 amazon ec2 实例设置我的 mac ftp 客户端?

javascript - Node.js dynamodb 回调函数

java - Android Java - 共享首选项编辑器问题

amazon-web-services - 如何从 Azure DevOps 部署到 AWS Kubernetes

java - 尝试使用 Alakai 插件将 Launch4j 集成到 Maven 项目中

php - 在 Linux 服务器上创建 S3Client 失败

database-design - 在 dynamodb 中存储树状结构

java - DynamoDB 类型不匹配 : cannot convert from CreateTableResult to Table

java - 503 错误对象化服务 NoClassDefFoundError

java - 无法使用 Apache Tika 读取 zip 文件