当我在 Java 中使用 gremlin-driver 使用 gremlin-server 连接时,我无法使用 GraphTraversal 的“sideEffect”。
graph = EmptyGraph.instance()
cluster = Cluster.open("conf/remote-objects.yaml");
graphTraversalSource = graph.traversal().withRemote(DriverRemoteConnection.using(cluster));
我使用 sideEffect 的查询如下所示:
AtomicLong level1 = new AtomicLong(0);
graphTraversalSource.V().hasLabel("user")
.has("uuid", "1234")
.sideEffect(it -> it.get().property("level", level1.getAndIncrement())).emit().repeat(in())
.until(loops().is(5)).valueMap("uuid", "name", "level");
当我使用 janusgraph-dynamodb-storage-backend 作为依赖项并在 Java 应用程序中运行 gremlin 服务器并连接到 dyamodb 时,此查询曾经有效。当我切换到使用远程连接到 EC2 中运行的 gremlin 服务器时,我开始收到以下错误消息:
java.util.concurrent.CompletionException: io.netty.handler.codec.EncoderException: WebSocketGremlinRequestEncoder must produce at least one message., took 3.895 sec
如果我从上面的查询中删除 sideEffect 部分,它工作正常。我真的需要在遍历期间添加一个自定义属性并将其包含在结果中而不将其保存在数据库中。