Hi gRPC team,
I opened a GitHub issue here:
https://github.com/grpc/grpc/issues/41492Summary: In a C++ server-streaming WriteReactor, if the client aborts (grpc-web via Envoy) while a write is in-flight, OnWriteDone(false) is not invoked until ~300s later. During this time, the stream blocks and can stall subsequent streams on the same HTTP/2 connection.
This behavior is currently blocking multiple time-critical customer workflows for us, so we’re trying to understand whether this is expected or if there’s a better-supported pattern.
We verified:- StartWrite() was called
- Client abort occurs
- OnWriteDone(false) fires only after Envoy’s ~300s idle timeout
Question: Is this delayed OnWriteDone behavior expected per gRPC C++ reactor semantics, or should client cancellation trigger immediate completion of in-flight writes? Is there another mechanism I can use to enable OnWriteDone failure sooner?
Thanks — happy to provide logs or a minimal repro if useful.