Uh oh!
There was an error while loading. Please reload this page.
Fix an issue where we are not injecting more HTTP2 connections when we should - #56062
Conversation
ghost
commented
Jul 21, 2021
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.
|
geoffkizer
commented
Jul 21, 2021
/azp run runtime-libraries-coreclr outerloop |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: Stephen Toub <stoub@microsoft.com>
geoffkizer
commented
Jul 21, 2021
/azp run runtime-libraries-coreclr outerloop |
|
Azure Pipelines successfully started running 1 pipeline(s). |
stephentoub
commented
Jul 21, 2021
The outerloop System.Buffers failures will be fixed by #56068. Sorry about that. |
geoffkizer
commented
Jul 21, 2021
No worries. I doubt it will be the only outerloop failure :) |
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.