Ошибка сериализации в JanusGraph - PullRequest
0 голосов
/ 03 июля 2018

Я настроил экземпляр JanusGraph, поддерживаемый DynamoDB, как описано в документах GitHub , создал простой API на Java для тестирования операций 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");

Я застрял на этой проблеме довольно долго, поэтому любая помощь действительно ценится!

1 Ответ

0 голосов
/ 03 июля 2018

Я собираюсь догадаться, что у вас есть проблема с версией. Попробуйте этот вызов без использования iterate(). Так как вы делаете только одно удаление, будет безопасно сделать next() вместо iterate(), чтобы увидеть, работает ли эта проблема. Если нет, я бы выровнял ваш драйвер (у вас сейчас 3.3.2) с версией TinkerPop, которую использует JanusGraph, для текущей версии 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

Как правило, безопасно использовать несовпадающие версии драйвера и сервера, если вы знаете об изменениях обновления, подобных этому, но мы, как правило, рекомендуем не делать этого, чтобы вы не столкнулись с этими видами проблемы.

...