-
Notifications
You must be signed in to change notification settings - Fork 10.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTP2: REFUSED_STREAM not placed in graceful drain state? #13405
Comments
Note this issue is secondary to figuring out why the stream was refused in the first place (#13406). It seems the client and server still disagree on the number of active streams. The scenario for this repro involved frequent cancellations/RSTs by the client for POST requests. |
This is a bug but not a critical one. 3.1 fix? |
We can see about this for 3.1 but the bar is pretty high. I'd expect this to bump. |
#17484 looks like another scenario that can trigger this: Start a connection and then flood it with streams before you get the first Settings that tell you the actual stream limit. The streams are refused OK, but any subsequent data frames cause the connection to fault. |
Going to dupe this to the other issue since the other issue has a concrete scenario ;). |
Issue found during HTTP2 stress testing. One HttpClient is sending multiple requests in parallel, then canceling them via RST_STREAM sent to the server. For an unknown reason (#13406) the server and client disagree on the active stream count, and the sever eventually sends RST_STREAM (REFUSED_STREAM) and GOAWAY (STREAM_CLOSED).
Stream closed with REFUSED_STREAM should go into a graceful drain state and additional content sent to it from the client is ignored.
@Tratcher:
Wireshark log: https://www.dropbox.com/s/5ndspth4t0qjyj6/clientreset-error.zip?dl=0
Exception on the client:
Repo is currently not public. Contact @JamesNK or @Tratcher for the repo source code and instruction.
The text was updated successfully, but these errors were encountered: