mirror of https://github.com/grpc/grpc-java.git
onReady/isReady previously could disagree causing a sort of deadlock where the application isn't sending because grpc said not to, but won't be informed to send via onReady later. This is a stack trace from inprocessTransportOutboundFlowControl. The line numbers are from this commit but with the changes to DelayedStream disabled: at io.grpc.internal.DelayedStream.isReady(DelayedStream.java:306) (That is isReady returning false because fallThrough == false) at io.grpc.internal.ClientCallImpl.isReady(ClientCallImpl.java:382) at io.grpc.stub.ClientCalls$CallToStreamObserverAdapter.isReady(ClientCalls.java:289) at io.grpc.stub.ClientCallsTest$8$1.run(ClientCallsTest.java:403) (And yet that was the onReady callback, and it won't be called again) at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onReady(ClientCalls.java:377) at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$4.runInContext(ClientCallImpl.java:481) at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:52) at io.grpc.internal.SerializeReentrantCallsDirectExecutor.execute(SerializeReentrantCallsDirectExecutor.java:65) at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.onReady(ClientCallImpl.java:478) at io.grpc.internal.DelayedStream$DelayedStreamListener.onReady(DelayedStream.java:366) at io.grpc.inprocess.InProcessTransport$InProcessStream$InProcessServerStream.request(InProcessTransport.java:284) at io.grpc.internal.ServerCallImpl.request(ServerCallImpl.java:99) at io.grpc.stub.ServerCalls$ServerCallStreamObserverImpl.request(ServerCalls.java:345) at io.grpc.stub.ClientCallsTest.inprocessTransportOutboundFlowControl(ClientCallsTest.java:432) Fixes #1932 |
||
|---|---|---|
| .. | ||
| src | ||
| build.gradle | ||