Repository navigation
Synchronize HTTP/2 queue-time test with connection publication - #134423
Merged
Merged
Conversation
Wait for the first request's connection to be published before testing immediate reuse. Preserve the single queue measurement assertion and validate its duration and tags without changing production metrics. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Azure Pipelines: Successfully started running 4 pipeline(s). 12 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
|
Tagging subscribers to this area: @karelz, @dotnet/ncl |
Replace private diagnostic synchronization with observed queue measurements. Preserve initial sample validation, reject duplicate warm-up samples, and accommodate warm-up requests on the same loopback connection. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The HTTP/2
TimeInQueue_RecordedForNewConnectionsOnlytest assumes that completing the first response makes its connection immediately available to subsequent requests. The pool can signal the first waiter before publishing the connection, so later sequential requests can legitimately queue on that same connection and produce two or three measurements. Queue duration measures waiting for an available connection, not just connection establishment.This test-only change waits for publication before testing reuse. A scoped private EventSource listener correlates the first request URI with its pool/connection identifiers and waits for that connection's publication, including when publication precedes request correlation. The callback does not block, and the wait has a timeout. The first measurement's duration and tags are checked, and the final expected count stays 1. Production behavior, metric tags, and HTTP/1.1 and HTTP/3 handling are unchanged.
The intentional maintenance dependency is on the private
Sending request:andPut HTTP2 connection in pool.trace messages. Related to #122522; this does not claim to resolve its HTTP/3 reports or prove the schedule of every historical CI failure.Validation
Windows x64, Debug libraries and Release runtime:
clr+libsbuild passed.Linux/musl was not run locally. No clean full-library result is claimed: an accidentally unfiltered NativeAOT invocation was stopped after failures outside the target fixtures; the final explicitly filtered invocation passed.
Note
This change and description were generated with GitHub Copilot.