From 2ae70e85d27ad30c29084b56572a817bc18b42e1 Mon Sep 17 00:00:00 2001 From: Abu Kashem Date: Mon, 7 Feb 2022 10:34:20 -0500 Subject: [PATCH] fix flake in TestTimeoutHeaders --- .../k8s.io/apiserver/pkg/server/filters/timeout.go | 2 +- .../apiserver/pkg/server/filters/timeout_test.go | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/server/filters/timeout.go b/staging/src/k8s.io/apiserver/pkg/server/filters/timeout.go index a485dfb22b3..117dc8042f3 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/filters/timeout.go +++ b/staging/src/k8s.io/apiserver/pkg/server/filters/timeout.go @@ -138,7 +138,7 @@ func (t *timeoutHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { }() }() - postTimeoutFn() + defer postTimeoutFn() tw.timeout(err) } } diff --git a/staging/src/k8s.io/apiserver/pkg/server/filters/timeout_test.go b/staging/src/k8s.io/apiserver/pkg/server/filters/timeout_test.go index 1bca00f2dbc..edf591bfaa4 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/filters/timeout_test.go +++ b/staging/src/k8s.io/apiserver/pkg/server/filters/timeout_test.go @@ -219,6 +219,7 @@ func TestTimeoutHeaders(t *testing.T) { }) } + postTimeoutCh := make(chan struct{}) ts := httptest.NewServer( withDeadline( WithTimeout( @@ -226,13 +227,18 @@ func TestTimeoutHeaders(t *testing.T) { h := w.Header() // trigger the timeout cancel() - // mutate response Headers - for j := 0; j < 1000; j++ { - h.Set("Test", "post") + // keep mutating response Headers until the request times out + for { + select { + case <-postTimeoutCh: + return + default: + h.Set("Test", "post") + } } }), func(req *http.Request) (*http.Request, bool, func(), *apierrors.StatusError) { - return req, false, func() {}, apierrors.NewServerTimeout(schema.GroupResource{Group: "foo", Resource: "bar"}, "get", 0) + return req, false, func() { close(postTimeoutCh) }, apierrors.NewServerTimeout(schema.GroupResource{Group: "foo", Resource: "bar"}, "get", 0) }, ), ),