-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Fix an issue where we are not injecting more HTTP2 connections when we should #56062
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
Conversation
|
Tagging subscribers to this area: @dotnet/ncl Issue DetailsFixes #55980 This is a regression caused by my connection pooling changes. For HTTP2, we constrain our connection injection logic to never inject more than one connection at a time. On successful connection establishment, we should check if we need to create yet another connection to handle the queued requests. Unfortunately, we aren't doing this today. The specific problem is a scenario like this: (1) User submits one request. We enqueue it and kick off an HTTP2 connection attempt.
|
|
/azp run runtime-libraries-coreclr outerloop |
|
Azure Pipelines successfully started running 1 pipeline(s). |
src/libraries/System.Net.Http/tests/FunctionalTests/SocketsHttpHandlerTest.cs
Outdated
Show resolved
Hide resolved
src/libraries/System.Net.Http/tests/FunctionalTests/SocketsHttpHandlerTest.cs
Outdated
Show resolved
Hide resolved
Co-authored-by: Stephen Toub <[email protected]>
|
/azp run runtime-libraries-coreclr outerloop |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
The outerloop System.Buffers failures will be fixed by #56068. Sorry about that. |
|
No worries. I doubt it will be the only outerloop failure :) |
wfurt
left a comment
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.
LGTM
Fixes #55980
This is a regression caused by my connection pooling changes.
For HTTP2, we constrain our connection injection logic to never inject more than one connection at a time. On successful connection establishment, we should check if we need to create yet another connection to handle the queued requests. Unfortunately, we aren't doing this today.
The specific problem is a scenario like this:
(1) User submits one request. We enqueue it and kick off an HTTP2 connection attempt.
(2) User submits 100 more requests. There are now 101 requests in the queue.
(3) Connection attempt succeeds. We dequeue 100 requests and give them to the new connection to be processed.
(4) There's still one request in the queue, so we should be kicking off another connection attempt -- but currently we don't.