From 0090e27bd3a271e199a232296b45e120dfa9808a Mon Sep 17 00:00:00 2001 From: Abu Kashem Date: Wed, 18 Nov 2020 12:01:27 -0500 Subject: [PATCH] use default value when the specified timeout is 0s --- .../apiserver/pkg/endpoints/filters/request_deadline.go | 5 ++++- .../pkg/endpoints/filters/request_deadline_test.go | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/filters/request_deadline.go b/staging/src/k8s.io/apiserver/pkg/endpoints/filters/request_deadline.go index 82b8d8d6c31..9e1f0c1e992 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/filters/request_deadline.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/filters/request_deadline.go @@ -69,7 +69,10 @@ func WithRequestDeadline(handler http.Handler, longRunning request.LongRunningRe return } - timeout = userSpecifiedTimeout + // if the user has specified a timeout of 0s, this means no timeout, so we should use the maximum timeout allowed. + if userSpecifiedTimeout != 0 { + timeout = userSpecifiedTimeout + } } ctx, cancel := context.WithTimeout(ctx, timeout) diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/filters/request_deadline_test.go b/staging/src/k8s.io/apiserver/pkg/endpoints/filters/request_deadline_test.go index a3739dabe60..9ece6149ba1 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/filters/request_deadline_test.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/filters/request_deadline_test.go @@ -94,6 +94,15 @@ func TestWithRequestDeadline(t *testing.T) { deadlineExpected: 14 * time.Second, // to account for the delay in verification statusCodeExpected: http.StatusOK, }, + { + name: "the specified timeout is 0s, default deadline is expected to be set", + requestURL: "/api/v1/namespaces?timeout=0s", + longRunning: false, + handlerCallCountExpected: 1, + hasDeadlineExpected: true, + deadlineExpected: requestTimeoutMaximum - time.Second, // to account for the delay in verification + statusCodeExpected: http.StatusOK, + }, { name: "the user does not specify any request timeout, default deadline is expected to be set", requestURL: "/api/v1/namespaces?timeout=",