You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We've been seeing this race in our test code. In short, the tests create a number of streams on a connection and then perform reads and writes simultaneously.
As far as I can see, the code doesn't break any documented contracts with regards to concurrency issues. I have tried to investigate, how exactly the execution comes to these locations, but my knowledge of the quic-go code base is not enough to propose any sort of fix.
The text was updated successfully, but these errors were encountered:
This makes sense. We install the server's updated transport parameters when we process the Encrypted Extensions during the handshake. The race condition occurs because creating a new streams needs to look up the peer's flow control limits.
In the 1-RTT handshake this is not a problem, since streams can only be opened after completion of the handshake. When using 0-RTT, streams can be opened concurrently, leading to the race you're seeing here.
We've been seeing this race in our test code. In short, the tests create a number of streams on a connection and then perform reads and writes simultaneously.
https://go.dev/play/p/OddTBHCi6PM
This is the shortest we've been able to make it. The result of running this with
--race
(may require a few tries):As far as I can see, the code doesn't break any documented contracts with regards to concurrency issues. I have tried to investigate, how exactly the execution comes to these locations, but my knowledge of the quic-go code base is not enough to propose any sort of fix.
The text was updated successfully, but these errors were encountered: