forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Triage for dotnet/runtime#116862.
Repo filter: All networking issues.
MihuBot version: 1a6438
.
Ping MihaZupan for any issues.
This is a test triage report generated by AI, aimed at helping the triage team quickly identify past issues/PRs that may be related.
Take any conclusions with a large grain of salt.
dotnet/runtime#116862: [HTTP] Outerloop PING test timeout by ManickaP
[Tool] Searching for KeepAliveConfigured_KeepAlivePingsAreSentAccordingToPolicy timeout, Http2KeepAlivePing test timeout, System.Net.Http.Functional.Tests.SocketsHttpHandler_Http2KeepAlivePing_Test, PING test timeout, 115735 (IncludeOpen=True, IncludeClosed=True, IncludeIssues=True, IncludePullRequests=True, Repository=dotnet/runtime)
[Tool] Found 70 issues, 38 comments, 71 returned results (15440 ms)
Here are the most relevant related issues and discussions for triaging issue #116862 "[HTTP] Outerloop PING test timeout":
1. PR #115735 (May 2025) - Fix HTTP/2 pings not working with zero connection lifetime
- Summary: This PR directly addresses a bug where HTTP/2 keep-alive pings do not work if
PooledConnectionLifetime
is set toTimeSpan.Zero
, even when pings are explicitly configured. The root cause was an optimization in the connection pool manager that skipped creating the heartbeat timer (needed for pings) when the connection lifetime was zero. The PR changes the logic so that if pings are configured, the heartbeat timer is created even with zero lifetime. - Tests: The PR adds tests to verify that pings work with zero connection lifetime and that the default behavior (no pings) is preserved when pings are not configured.
- Relevance: The test failure in #116862 is for
KeepAliveConfigured_KeepAlivePingsAreSentAccordingToPolicy(policy: WithActiveRequests, connectionLifetimeMilliseconds: 0)
, which is exactly the scenario fixed by this PR. The issue was likely introduced or exposed by this change. - Comments: 7 comments, including technical discussion and test coverage.
2. Issue #41929 (September 2020) - Test failure: System.Net.Http.Functional.Tests.SocketsHttpHandlerTest_Http2.Http2_PingKeepAlive
- Summary: This issue tracks repeated failures of the HTTP/2 keep-alive ping test, with various stack traces involving timeouts, protocol errors, and broken pipes. The failures occurred across different platforms and configurations.
- Discussion: The failures were frequent enough that the test was eventually disabled (see PR #45214 below). The root causes included timing issues, platform-specific behavior, and possibly product bugs.
- Relevance: The test in #116862 is a descendant of these earlier keep-alive ping tests, and the history shows this area has been fragile and subject to timing and product bugs.
3. PR #56736 (August 2021) - Redesign HTTP/2 KeepAlive PING tests
- Summary: This PR completely redesigned the HTTP/2 keep-alive ping tests to reduce flakiness and improve organization. The new tests run sequentially and are better structured for different scenarios.
- Relevance: The test in #116862 is part of this redesigned suite. The PR was intended to reduce timing-related failures, but the area remains sensitive to product changes.
4. PR #45214 (November 2020) - Disabled Http2_PingKeepAlive
- Summary: Due to high numbers of failures, the HTTP/2 keep-alive ping test was temporarily disabled. The failures were believed to be transient, but the test was tracked in #41929.
- Relevance: Shows the history of instability in these tests and the need for careful product/test coordination.
5. Issue #43205 (October 2020) - Test failure: System.Net.Http.Functional.Tests.SocketsHttpHandlerTest_Http2.Http2_PingKeepAlive
- Summary: Another instance of the keep-alive ping test failing, with assertion failures and stack traces similar to those in #41929.
- Relevance: Further evidence of the long-standing fragility of these tests.
6. PR #40257 (August 2020) - Configure ping in HTTP2
- Summary: This PR introduced the ability to configure HTTP/2 keep-alive pings in
SocketsHttpHandler
, including theKeepAlivePingDelay
,KeepAlivePingTimeout
, andKeepAlivePingPolicy
properties. - Relevance: This is the foundational work for the feature being tested in #116862.
7. Issue #31198 (October 2019) - configurable HTTP/2 PING timeouts in HttpClient
- Summary: The original feature request and design discussion for HTTP/2 keep-alive pings in
HttpClient
. Includes API proposals and rationale. - Relevance: Background for the feature and its intended behavior.
8. Issue #58724 (September 2021) - Test failure: KeepAlivePingDelay_Infinite_NoKeepAlivePingIsSent
- Summary: Timeout failures in another HTTP/2 keep-alive ping test, showing that timeouts are a recurring problem in this area.
9. PR #105841 (August 2024) - Add WebSocket Keep-Alive Ping and Timeout (minimal) implementation
- Summary: Adds keep-alive ping and timeout support for WebSockets, with a focus on minimal changes and test coverage.
- Relevance: While this is for WebSockets, it shows ongoing work in keep-alive ping infrastructure and test coverage.
Conclusion
- The test failure in #116862 is almost certainly related to the changes in PR #115735, which modified the logic for HTTP/2 keep-alive pings with zero connection lifetime.
- The area has a long history of test fragility, especially around timing and platform-specific behavior.
- The test suite was redesigned in 2021 to reduce flakiness, but product changes (like #115735) can still expose issues.
- If this is a new regression, it should be investigated in the context of the changes from #115735, and coordination with the networking team may be needed to determine if the test or product needs further adjustment.
References:
- PR #115735 - Fix HTTP/2 pings not working with zero connection lifetime
- Issue #41929 - Test failure: ...Http2_PingKeepAlive
- PR #56736 - Redesign HTTP/2 KeepAlive PING tests
- PR #45214 - Disabled Http2_PingKeepAlive
- PR #40257 - Configure ping in HTTP2
- Issue #31198 - configurable HTTP/2 PING timeouts in HttpClient
- Issue #58724 - Test failure: KeepAlivePingDelay_Infinite_NoKeepAlivePingIsSent
- PR #105841 - Add WebSocket Keep-Alive Ping and Timeout (minimal) implementation
If you need more detail on any specific discussion or want the full comment history for a particular issue/PR, let me know!
Metadata
Metadata
Assignees
Labels
No labels