From 184540e9552f8244a0df3c1ff6a1ffbaa4449352 Mon Sep 17 00:00:00 2001 From: Alexander Yastrebov Date: Wed, 23 Aug 2023 15:39:26 +0000 Subject: [PATCH] net/http: revert fix request canceler leak on connection close This reverts CL 515796 due to a flaking test. Updates #61708 Fixes #62224 Change-Id: I53911a07677d08c3196daaaa2708269593baf472 GitHub-Last-Rev: 3544648ecc3783dcb10d54fc2b266797c02f9a75 GitHub-Pull-Request: golang/go#62233 Reviewed-on: https://go-review.googlesource.com/c/go/+/522097 Run-TryBot: Bryan Mills Reviewed-by: Bryan Mills Reviewed-by: Dmitri Shuralyov TryBot-Result: Gopher Robot Auto-Submit: Bryan Mills Reviewed-by: Than McIntosh --- src/net/http/transport.go | 1 - src/net/http/transport_test.go | 52 ---------------------------------- 2 files changed, 53 deletions(-) diff --git a/src/net/http/transport.go b/src/net/http/transport.go index c2376aa661..35dfe908d8 100644 --- a/src/net/http/transport.go +++ b/src/net/http/transport.go @@ -2267,7 +2267,6 @@ func (pc *persistConn) readLoop() { pc.t.cancelRequest(rc.cancelKey, rc.req.Context().Err()) case <-pc.closech: alive = false - pc.t.setReqCanceler(rc.cancelKey, nil) } testHookReadLoopBeforeNextRead() diff --git a/src/net/http/transport_test.go b/src/net/http/transport_test.go index 4ff26ff32a..bcc26aa58e 100644 --- a/src/net/http/transport_test.go +++ b/src/net/http/transport_test.go @@ -6810,55 +6810,3 @@ func testRequestSanitization(t *testing.T, mode testMode) { resp.Body.Close() } } - -// Issue 61708 -func TestTransportAndServerSharedBodyReqCancelerCleanupOnConnectionClose(t *testing.T) { - run(t, testTransportAndServerSharedBodyReqCancelerCleanupOnConnectionClose, []testMode{http1Mode}) -} -func testTransportAndServerSharedBodyReqCancelerCleanupOnConnectionClose(t *testing.T, mode testMode) { - const bodySize = 1 << 20 - - backend := newClientServerTest(t, mode, HandlerFunc(func(rw ResponseWriter, req *Request) { - io.Copy(rw, req.Body) - })) - t.Logf("Backend address: %s", backend.ts.Listener.Addr().String()) - - var proxy *clientServerTest - proxy = newClientServerTest(t, mode, HandlerFunc(func(rw ResponseWriter, req *Request) { - breq, _ := NewRequest("POST", backend.ts.URL, req.Body) - - bresp, err := backend.c.Do(breq) - if err != nil { - t.Fatalf("Unexpected proxy outbound request error: %v", err) - } - defer bresp.Body.Close() - - _, err = io.Copy(rw, bresp.Body) - if err == nil { - t.Fatalf("Expected proxy copy error") - } - t.Logf("Proxy copy error: %v", err) - })) - t.Logf("Proxy address: %s", proxy.ts.Listener.Addr().String()) - - req, _ := NewRequest("POST", proxy.ts.URL, io.LimitReader(neverEnding('a'), bodySize)) - res, err := proxy.c.Do(req) - if err != nil { - t.Fatalf("Original request: %v", err) - } - // Close body without reading to trigger proxy copy error - res.Body.Close() - - // Verify no outstanding requests after readLoop/writeLoop - // goroutines shut down. - waitCondition(t, 10*time.Millisecond, func(d time.Duration) bool { - n := backend.tr.NumPendingRequestsForTesting() - if n > 0 { - if d > 0 { - t.Logf("pending requests = %d after %v (want 0)", n, d) - } - return false - } - return true - }) -} -- 2.48.1