From 4f30a5c0130f199e0dfd54e9de49f9367cabf1ad Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Fri, 15 Oct 2021 12:43:53 -0700 Subject: [PATCH] http2: deflake TestTransportRetriesOnStreamProtocolError During this test: -> client sends req1 <- server sends req1 headers -> client sends req2 <- server resets req2 <- server sends END_STREAM for req1 -> client closes the *server* connection The flake occurs when the last two steps happen out of order: The client processes the reset for req2, returns from RoundTrip, and the test closes the connection before the server writes the last DATA frame for req1. This can be demonstrated by inserting a 1ms sleep between WriteRSTStream and WriteData on the server side of the test. It isn't clear why the client side of the test is closing the server side of the connection; it isn't essential to the test in any way. Remove it. Fixes golang/go#48994. Change-Id: If074e45a76205ebd245617ef1b068967a6674b94 Reviewed-on: https://go-review.googlesource.com/c/net/+/356329 Trust: Damien Neil Run-TryBot: Damien Neil TryBot-Result: Go Bot Reviewed-by: Bryan C. Mills --- http2/transport_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/http2/transport_test.go b/http2/transport_test.go index 7650046f..85290a12 100644 --- a/http2/transport_test.go +++ b/http2/transport_test.go @@ -5460,7 +5460,6 @@ func TestTransportRetriesOnStreamProtocolError(t *testing.T) { if got := fmt.Sprint(err); got != want { t.Errorf("didn't dial again: got %#q; want %#q", got, want) } - ct.sc.Close() if res != nil { res.Body.Close() }