-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
[H/3] Remove waiting on tasks from H3 request stream dispose #92410
[H/3] Remove waiting on tasks from H3 request stream dispose #92410
Conversation
Tagging subscribers to this area: @dotnet/ncl Issue DetailsThe waiting on tasks was added due to HTTP stress crashing on runtime/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicStream.cs Lines 716 to 717 in 9c8ff4c
H3 stream is issuing reads and writes on QuicStream in parallel. So if one ends on cancellation and decides to dispose the stream, the DisposeAsync might run in parallel with pending Write/Read. Basically, this change reverts these to commits: d6f5061, f6261e9 from #90253. Fixes #92390 The asserts still need to addressed, but we don't have a running stress atm.
|
I've run locally all the tests from dotnet/aspnetcore#50833 with the fix and they pass promptly, no timeout, no hangs. |
/azp run runtime-libraries-coreclr outerloop |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-libraries-coreclr outerloop |
Azure Pipelines successfully started running 1 pipeline(s). |
Debug.Assert(_receiveTcs.IsCompleted); | ||
Debug.Assert(_sendTcs.IsCompleted); | ||
// TODO: If there was and ongoing read/write when dispose was called, MsQuic events might be processed, but the continuations may not thus the state can still be in Ready. | ||
//Debug.Assert(_receiveTcs.IsCompleted); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not bug fan of submitting comments like this. same bellow.
The waiting on tasks was added due to HTTP stress crashing on
QuicStream
asserts:runtime/src/libraries/System.Net.Quic/src/System/Net/Quic/QuicStream.cs
Lines 716 to 717 in 9c8ff4c
H3 stream is issuing reads and writes on QuicStream in parallel. So if one ends on cancellation and decides to dispose the stream, the DisposeAsync might run in parallel with pending Write/Read.
Basically, this change reverts these to commits: d6f5061, f6261e9 from #90253.
Fixes #92390
The asserts still need to addressed, but we don't have a running stress atm.
cc @JamesNK