Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

net/http: TestTransportMaxPerHostIdleConns failures #57476

Open
gopherbot opened this issue Dec 27, 2022 · 7 comments
Open

net/http: TestTransportMaxPerHostIdleConns failures #57476

gopherbot opened this issue Dec 27, 2022 · 7 comments
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.

Comments

@gopherbot
Copy link

#!watchflakes
post <- pkg == "net/http" && test == "TestTransportMaxPerHostIdleConns"

Issue created automatically to collect these failures.

Example (log):

--- FAIL: TestTransportMaxPerHostIdleConns (0.00s)
    --- FAIL: TestTransportMaxPerHostIdleConns/h1 (0.52s)
        transport_test.go:552: after second response, idle conns = 1; want 2
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false

watchflakes

@gopherbot gopherbot added the NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. label Dec 27, 2022
@gopherbot
Copy link
Author

Found new dashboard test flakes for:

#!watchflakes
post <- pkg == "net/http" && test == "TestTransportMaxPerHostIdleConns"
2022-12-21 20:18 freebsd-arm-paulzhol go@fadd77c0 net/http.TestTransportMaxPerHostIdleConns (log)
--- FAIL: TestTransportMaxPerHostIdleConns (0.00s)
    --- FAIL: TestTransportMaxPerHostIdleConns/h1 (0.52s)
        transport_test.go:552: after second response, idle conns = 1; want 2
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false

watchflakes

@gopherbot
Copy link
Author

Found new dashboard test flakes for:

#!watchflakes
post <- pkg == "net/http" && test == "TestTransportMaxPerHostIdleConns"
2022-12-01 22:04 freebsd-arm-paulzhol go@6a70292d net/http.TestTransportMaxPerHostIdleConns (log)
--- FAIL: TestTransportMaxPerHostIdleConns (0.00s)
    --- FAIL: TestTransportMaxPerHostIdleConns/h1 (0.81s)
        transport_test.go:552: after second response, idle conns = 1; want 2
2022-12-02 16:29 freebsd-arm-paulzhol go@1711f953 net/http.TestTransportMaxPerHostIdleConns (log)
--- FAIL: TestTransportMaxPerHostIdleConns (0.00s)
    --- FAIL: TestTransportMaxPerHostIdleConns/h1 (0.08s)
        transport_test.go:552: after second response, idle conns = 1; want 2

watchflakes

@bcmills
Copy link
Member

bcmills commented Jan 6, 2023

Only observed on freebsd-arm-paulzhol so far, and three times.

@paulzhol, any ideas?

(CC @neild)

@paulzhol
Copy link
Member

paulzhol commented Jan 8, 2023

I think it is related to the TestTransportMaxIdleConns failures. I tried looking at some of the log outputs here: #56960 (comment).
Couldn't find anything concrete, but I had a hunch that concurrent tests (maybe scheduled like they do on the slow builder) could be re-using ports (maybe even properly closed sockets but which are still in TIME_WAIT state in the kernel), so connecting to them with ends up with an RST reply.

@bcmills
Copy link
Member

bcmills commented Jan 10, 2023

In these failures, the observed number of idle connections always seems to undershoot the expected number.

That leads me to suspect that the idle connections are being returned asynchronously, and for some reason they're a little too slow on this builder to be visible in the pool.

@gopherbot
Copy link
Author

Found new dashboard test flakes for:

#!watchflakes
post <- pkg == "net/http" && test == "TestTransportMaxPerHostIdleConns"
2023-01-10 17:59 freebsd-arm-paulzhol go@82f09b75 net/http.TestTransportMaxPerHostIdleConns (log)
--- FAIL: TestTransportMaxPerHostIdleConns (0.00s)
    --- FAIL: TestTransportMaxPerHostIdleConns/h1 (0.32s)
        transport_test.go:538: after first response, expected 1 idle conn cache keys; got 0
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false
1 second passes in backend, proxygone= false

watchflakes

@gopherbot
Copy link
Author

Found new dashboard test flakes for:

#!watchflakes
post <- pkg == "net/http" && test == "TestTransportMaxPerHostIdleConns"
2023-01-19 20:46 darwin-amd64-13 go@24a9d7bc net/http.TestTransportMaxPerHostIdleConns (log)
--- FAIL: TestTransportMaxPerHostIdleConns (0.00s)
    --- FAIL: TestTransportMaxPerHostIdleConns/h1 (0.08s)
        transport_test.go:538: after first response, expected 1 idle conn cache keys; got 0
2023-01-23 15:51 freebsd-arm-paulzhol go@e22bd234 net/http.TestTransportMaxPerHostIdleConns (log)
--- FAIL: TestTransportMaxPerHostIdleConns (0.00s)
    --- FAIL: TestTransportMaxPerHostIdleConns/h1 (0.06s)
        transport_test.go:552: after second response, idle conns = 1; want 2

watchflakes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Projects
Status: No status
Development

No branches or pull requests

3 participants