-
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
QUIC: Peer closing connection can result in OperationCanceledException on pending write #58078
Comments
Tagging subscribers to this area: @dotnet/ncl Issue DetailsI found this while looking into test issues. Here's what I see: I would expect this to result in QuicConnectionAbortedException instead. Stack trace for (c) above:
|
Tagging subscribers to this area: @dotnet/ncl Issue DetailsI found this while looking into test issues. Here's what I see: I would expect this to result in QuicConnectionAbortedException instead. Stack trace for (c) above:
|
AFAIU it's because the event itself contains canceled flag: Line 521 in bc7081e
The choice of the exception here is up to us, so I assume we can change it without any problems. Triage: we should revisit this in 7.0 frame, related to #55619 cc @CarnaViire |
I've seen exactly same thing happening while investigating #53090. The cause of
|
Yeah, it seems likely that this race already existed, but the change you made resulted in it happening more often. I assume we need to deal with INVALID_STATE from StreamSend somehow, as there is just an inherent race here. Is there some way we can determine the stream state from msquic after this happens? |
I found this while looking into test issues.
Here's what I see:
(a) Server tries to send a GOAWAY on the client's control stream; this write pends
(b) Client closes the connection (this races with (a), but it happens pretty consistently)
(c) Server receives PEER_SEND_COMPLETE from msquic, and completes the pending write from (a) with OperationCanceledException: "Write was canceled"
I would expect this to result in QuicConnectionAbortedException instead.
Stack trace for (c) above:
The text was updated successfully, but these errors were encountered: