-
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
Kestrel reset error when no reset received #34768
Comments
Commented on original issue: dotnet/runtime#55261 (comment) |
We have more signs pointing to this being a regression: dotnet/runtime#55261 (comment)
Let's investigate this soon. |
@sebastienros Can you please take a look at this? The repro is here: dotnet/runtime#55261 (comment) |
I was able to repro (concurrent canceled POSTs with a body of 1 byte or more) and then used crank to isolate which change introduced the bug. I isolated it to this commit exactly: |
@sebastienros @adityamandaleeka Since the root cause has been found, is there any ETA for a fix to be applied? Once it's applied, we'll reenable the test. |
@alnikola Sorry, missed your question earlier. We are still aiming to get a fix into RC1 if we can. |
Enable HTTP/2 POST stress tests because, the Kestrel's issue with an incorrect HTTP/2 stream resetting seems to be fixed by dotnet/aspnetcore#34768. Fixes #55261
RE: dotnet/runtime#55261
The following logs show kestrel throwing a
The client reset the request stream.
error when no reset frame was received for that stream. These tests started failing between between 6.0 Preview 4 and 6.0 Preview 6, but we don't have server logs from Preview 4 to confirm the prior behavior.Theory: Kestrel is caching an exception in the HttpRequestPipeReader from a previously reset stream instance, the body control state is never cleared after aborted.
aspnetcore/src/Servers/Kestrel/Core/src/Internal/Http/HttpProtocol.cs
Line 503 in 8b30d86
However, caching this shouldn't be possible if CanReuse correctly guards against caching an aborted stream.
aspnetcore/src/Servers/Kestrel/Core/src/Internal/Http2/Http2Stream.cs
Line 169 in 39912f8
There may be race conditions between the RESET_STREAM frame processing and the stream cleanup logic for caching streams.
The text was updated successfully, but these errors were encountered: