Skip to content

Conversation

@geoffkizer
Copy link
Contributor

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.

@ghost ghost added the area-System.Net.Http label Jul 21, 2021
@ghost
Copy link

ghost commented Jul 21, 2021

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

Issue Details

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.

Author: geoffkizer
Assignees: -
Labels:

area-System.Net.Http

Milestone: -

@geoffkizer
Copy link
Contributor Author

/azp run runtime-libraries-coreclr outerloop

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@geoffkizer
Copy link
Contributor Author

/azp run runtime-libraries-coreclr outerloop

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@stephentoub
Copy link
Member

The outerloop System.Buffers failures will be fixed by #56068. Sorry about that.

@geoffkizer
Copy link
Contributor Author

No worries. I doubt it will be the only outerloop failure :)

Copy link
Member

@wfurt wfurt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Regression] Multiple HTTP/2 streams created concurrently not all reaching the server

3 participants