[ 
https://issues.apache.org/jira/browse/TINKERPOP-2005?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16563471#comment-16563471
 ] 

ASF GitHub Bot commented on TINKERPOP-2005:
-------------------------------------------

Github user spmallette commented on a diff in the pull request:

    https://github.com/apache/tinkerpop/pull/899#discussion_r206483583
  
    --- Diff: 
gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
 ---
    @@ -222,9 +223,33 @@ protected AbstractEvalOpProcessor(final boolean 
manageTransactions) {
          *                                script evaluation.
          * @param bindingsSupplier A function that returns the {@link 
Bindings} to provide to the
          *                         {@link GremlinExecutor#eval} method.
    +     * @see #evalOpInternal(ResponseHandlerContext, Supplier, 
BindingSupplier)
          */
         protected void evalOpInternal(final Context context, final 
Supplier<GremlinExecutor> gremlinExecutorSupplier,
                                       final BindingSupplier bindingsSupplier) 
throws OpProcessorException {
    +        ResponseHandlerContext rhc = new ResponseHandlerContext(context);
    +        try {
    +            evalOpInternal(rhc, gremlinExecutorSupplier, bindingsSupplier);
    +        } catch (Exception ex) {
    +            // Exceptions may occur on after the script started executing, 
therefore corresponding errors must be
    +            // reported via the ResponseHandlerContext.
    +            logger.warn("Unable to process script evaluation request: " + 
ex, ex);
    +            
rhc.writeAndFlush(ResponseMessage.build(context.getRequestMessage())
    +                    .code(ResponseStatusCode.SERVER_ERROR)
    +                    .statusAttributeException(ex)
    +                    .statusMessage(ex.getMessage()).create());
    +        }
    +    }
    +
    +    /**
    +     * A variant of {@link #evalOpInternal(Context, Supplier, 
BindingSupplier)} that is suitable for use in situations
    +     * when multiple threads may produce {@link 
ResponseStatusCode#isFinalResponse() final} response messages
    --- End diff --
    
    seems like the "final" should be moved out of the `{@link }` bracket?


> Intermittent NullPointerException in response handling
> ------------------------------------------------------
>
>                 Key: TINKERPOP-2005
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2005
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: driver
>    Affects Versions: 3.2.9
>            Reporter: stephen mallette
>            Priority: Minor
>
> This stacktrace was reported to me:
> {code}
> 06:11:01 2018-07-05 13:11:01,706 ERROR 13:11:01,618 Could not process the 
> response
> 06:11:01 java.lang.NullPointerException: null
> 06:11:01      at 
> org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.lambda$channelRead0$39(Handler.java:220)
> 06:11:01      at java.util.ArrayList.forEach(ArrayList.java:1257)
> 06:11:01      at 
> org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.channelRead0(Handler.java:220)
> 06:11:01      at 
> org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.channelRead0(Handler.java:197)
> 06:11:01      at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
> 06:11:01      at 
> org.apache.tinkerpop.gremlin.driver.Handler$GremlinSaslAuthenticationHandler.channelRead0(Handler.java:123)
> 06:11:01      at 
> org.apache.tinkerpop.gremlin.driver.Handler$GremlinSaslAuthenticationHandler.channelRead0(Handler.java:67)
> 06:11:01      at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
> 06:11:01      at 
> io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
> 06:11:01      at 
> org.apache.tinkerpop.gremlin.driver.handler.WebSocketClientHandler.channelRead0(WebSocketClientHandler.java:94)
> 06:11:01      at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
> 06:11:01      at 
> io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
> 06:11:01      at 
> io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
> 06:11:01      at 
> io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
> 06:11:01      at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
> 06:11:01      at 
> io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
> 06:11:01      at 
> io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:134)
> 06:11:01      at 
> io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:644)
> 06:11:01      at 
> io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:579)
> 06:11:01      at 
> io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:496)
> 06:11:01      at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458)
> 06:11:01      at 
> io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
> 06:11:01      at java.lang.Thread.run(Thread.java:748)
> {code}
> Some initial investigation seems to indicate that it is intermittent and 
> likely some form of timing issue. Will probably be hard to recreate. Hesitant 
> to just make the problem go away without understanding why it is happening. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to