尝试使用`with`在gremlin查询上设置唯一请求id时,指针为空`

尝试使用`with`在gremlin查询上设置唯一请求id时,指针为空`,gremlin,tinkerpop,tinkerpop3,gremlin-server,amazon-neptune,Gremlin,Tinkerpop,Tinkerpop3,Gremlin Server,Amazon Neptune,我正试图在gremlin查询上设置一个惟一的requestId,如中所述 但当我这样做时,我会在代码上得到一个空指针异常,如果没有它,它可以正常工作 我使用的是3.4.2 Gremlin客户端驱动程序Java 11,单元测试是针对运行tinkerpop/Gremlin server:3.4.1的测试容器执行的 这是我的密码: GraphTraversalSource g = factory.getReadOnlyTraversal(); retu

我正试图在gremlin查询上设置一个惟一的requestId,如中所述

但当我这样做时,我会在代码上得到一个空指针异常,如果没有它,它可以正常工作

我使用的是3.4.2 Gremlin客户端驱动程序Java 11,单元测试是针对运行tinkerpop/Gremlin server:3.4.1的测试容器执行的

这是我的密码:

            GraphTraversalSource g = factory.getReadOnlyTraversal();

            return g.with(Tokens.REQUEST_ID, UUID.randomUUID()).V(group.getId()).
                    out("discussing").
                    project("id", "topic", "comments").
                    by(T.id).
                    by("topic").
                    by(__.in("commenting_on").order(Scope.local).
                        project("id", "text", "timestamp", "user").
                        by(T.id).by("text").by("timestamp").
                        by(__.in("is_commenting").valueMap(true)).fold()
                    )
                    .toStream()
                    .map(discussionBuilder::from)
                    .collect(Collectors.toSet());
这是堆栈跟踪:

java.util.concurrent.CompletionException: java.lang.NullPointerException

    at java.base/java.util.concurrent.CompletableFuture.reportJoin(CompletableFuture.java:412)
    at java.base/java.util.concurrent.CompletableFuture.join(CompletableFuture.java:2044)
    at org.apache.tinkerpop.gremlin.driver.ResultSet.one(ResultSet.java:119)
    at org.apache.tinkerpop.gremlin.driver.ResultSet$1.hasNext(ResultSet.java:171)
    at org.apache.tinkerpop.gremlin.driver.ResultSet$1.next(ResultSet.java:178)
    at org.apache.tinkerpop.gremlin.driver.ResultSet$1.next(ResultSet.java:165)
    at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal$TraverserIterator.next(DriverRemoteTraversal.java:140)
    at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal$TraverserIterator.next(DriverRemoteTraversal.java:125)
    at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal.nextTraverser(DriverRemoteTraversal.java:106)
    at org.apache.tinkerpop.gremlin.process.remote.traversal.step.map.RemoteStep.processNextStart(RemoteStep.java:80)
    at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:128)
    at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:38)
    at org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.next(DefaultTraversal.java:204)
    at org.apache.tinkerpop.gremlin.process.traversal.Traversal.forEachRemaining(Traversal.java:265)
    at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
    at com.yooblr.yooblrweb.domain.discussions.repositories.GremlinDiscussionsRepositoryImpl.getDiscussions(GremlinDiscussionsRepositoryImpl.java:54)
    at com.yooblr.yooblrweb.domain.discussions.repositories.GremlinDiscussionsRepositoryImplTest.whenGettingDiscussions(GremlinDiscussionsRepositoryImplTest.java:70)
    at com.yooblr.yooblrweb.domain.discussions.repositories.GremlinDiscussionsRepositoryImplTest.multiple(GremlinDiscussionsRepositoryImplTest.java:38)
...
Caused by: java.lang.NullPointerException
    at java.base/java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
    at org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.channelRead0(Handler.java:221)
    at org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.channelRead0(Handler.java:198)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
    at org.apache.tinkerpop.gremlin.driver.Handler$GremlinSaslAuthenticationHandler.channelRead0(Handler.java:124)
    at org.apache.tinkerpop.gremlin.driver.Handler$GremlinSaslAuthenticationHandler.channelRead0(Handler.java:68)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
    at org.apache.tinkerpop.gremlin.driver.handler.WebSocketClientHandler.channelRead0(WebSocketClientHandler.java:89)
...
当我尝试设置查询超时时,也会出现相同的问题:

return g.with(Tokens.ARGS_SCRIPT_EVAL_TIMEOUT, 500L).V(group.getId()).

此功能是在Apache TinkerPop 3.4.2版中引入的。您需要客户机和服务器都处于3.4.2级别(或更高级别)才能正常工作。Amazon Neptune目前在3.4.1级别支持Apache TinkerPop。一旦3.4.2得到支持,一切都应该工作。对于文档可能造成的任何混乱,我深表歉意。

请确认-您在Gremlin Server和TinkerGraph以及Neptune中看到了这些问题?是的。我刚刚通过将
.with(Tokens.REQUEST\u ID,UUID.randomuid())
添加到另一个单元测试中确认了这一点,该测试通过测试容器对
tinkerpop/gremlin server:3.4.1
docker映像执行。。它以同样的例外再次失败了。我只是想确认一下,我能够在3.4.1版本中使用Gremlin客户端和服务器重现您看到的内容。需要更多的调查,但希望传递。还有一个更新-仍在研究这一点,但我能够验证3.4.2客户端和3.4.3 Gremlin服务器似乎可以工作。感谢Kelvin,令人困惑的是,是Neptune自己的文档通知了我这一功能;一个版本不支持的!我会给他们一些反馈,包括这个问题的链接。上面链接的那个页面在亚马逊文档中已经不存在了。