fix(net/netcheck): prevent goroutine leak in measureHTTPLatency#124
Merged
Conversation
measureHTTPLatency creates an http.Transport per DERP region probe for a single HTTP request. With keep-alives enabled (the default), the transport spawns persistent readLoop/writeLoop goroutines that outlive the function call. These are detected as leaks by goleak in callers like support/TestRun. Set DisableKeepAlives: true on the transport since only one request is made per probe. This prevents the transport from spawning persistent connection goroutines entirely.
There was a problem hiding this comment.
Pull request overview
This PR fixes a goroutine leak in netcheck HTTP latency probing by disabling keep-alive behavior for the one-off HTTP transport used per DERP region probe.
Changes:
- Sets
DisableKeepAlives: trueon the per-probehttp.Transport. - Keeps the existing custom dial path for HTTP vs HTTPS DERP probes unchanged.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
measureHTTPLatency creates an http.Transport per DERP region probe for
a single HTTP request. With keep-alives enabled (the default), the
transport spawns persistent readLoop/writeLoop goroutines that outlive
the function call. These are detected as leaks by goleak in callers
like support/TestRun.
Set DisableKeepAlives: true on the transport since only one request is
made per probe. This prevents the transport from spawning persistent
connection goroutines entirely.
Fixes coder/coder PLAT-289
Refs coder/coder#25838