https://bz.apache.org/bugzilla/show_bug.cgi?id=65780
--- Comment #2 from Dapeng Zhang <zdap...@google.com> --- A stacktrace is the following: SEVERE: Exception while executing runnable io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed@77087c61 java.lang.NullPointerException at org.apache.catalina.connector.CoyoteOutputStream.isReady(CoyoteOutputStream.java:162) at io.grpc.servlet.AsyncServletOutputStreamWriter.runOrBuffer(AsyncServletOutputStreamWriter.java:186) at io.grpc.servlet.AsyncServletOutputStreamWriter.complete(AsyncServletOutputStreamWriter.java:129) at io.grpc.servlet.ServletServerStream$Sink.writeTrailers(ServletServerStream.java:290) at io.grpc.internal.AbstractServerStream.close(AbstractServerStream.java:126) at io.grpc.internal.ServerCallImpl.closeInternal(ServerCallImpl.java:223) at io.grpc.internal.ServerCallImpl.close(ServerCallImpl.java:207) at io.grpc.PartialForwardingServerCall.close(PartialForwardingServerCall.java:48) at io.grpc.ForwardingServerCall.close(ForwardingServerCall.java:22) at io.grpc.ForwardingServerCall$SimpleForwardingServerCall.close(ForwardingServerCall.java:39) at io.grpc.testing.integration.TestServiceImpl$6$1.close(TestServiceImpl.java:521) at io.grpc.PartialForwardingServerCall.close(PartialForwardingServerCall.java:48) at io.grpc.ForwardingServerCall.close(ForwardingServerCall.java:22) at io.grpc.ForwardingServerCall$SimpleForwardingServerCall.close(ForwardingServerCall.java:39) at io.grpc.testing.integration.TestServiceImpl$5$1.close(TestServiceImpl.java:494) at io.grpc.PartialForwardingServerCall.close(PartialForwardingServerCall.java:48) at io.grpc.ForwardingServerCall.close(ForwardingServerCall.java:22) at io.grpc.ForwardingServerCall$SimpleForwardingServerCall.close(ForwardingServerCall.java:39) at io.grpc.testing.integration.TestServiceImpl$4$1.close(TestServiceImpl.java:467) at io.grpc.stub.ServerCalls$ServerCallStreamObserverImpl.onCompleted(ServerCalls.java:395) at io.grpc.testing.integration.TestServiceImpl.unaryCall(TestServiceImpl.java:116) at io.grpc.testing.integration.TestServiceGrpc$MethodHandlers.invoke(TestServiceGrpc.java:762) at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:182) at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:340) at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:866) at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) This is observed in the standard error running tests of https://github.com/grpc/grpc-java/pull/8596 . It only fails intermittently, and stack trace can be from a different isReady() call. > 2. No. isReady means that the write call will not block, not that it will > return without an error of some sort. Yes. I'm just siting part of the javadoc. The full javadoc is: public abstract boolean isReady() This method can be used to determine if data can be written without blocking. Returns: true if a write to this ServletOutputStream will succeed, otherwise returns false. -- You are receiving this mail because: You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org