James Duong created ARROW-15876:
-----------------------------------
Summary: [FlightRPC][Java] CallbackBackpressureStrategy should not
rely on listener.isReady()
Key: ARROW-15876
URL: https://issues.apache.org/jira/browse/ARROW-15876
Project: Apache Arrow
Issue Type: Bug
Components: FlightRPC, Java
Reporter: James Duong
According to the spec for
[https://grpc.github.io/grpc-java/javadoc/io/grpc/stub/CallStreamObserver.html#setOnReadyHandler-java.lang.Runnable-]
, we can get into a state where the ready flag on the listener has already
switched back to false by the time we execute the on ready handler.
We currently use the listener's ready flag after the ready handler to check if
we received a spurious wake, but it's not reliable because of this. Instead we
should use our own readiness flag that gets set within a synchronized block
local to the CallbackBackpressureStrategy.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)