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 dff4a01d197..432851a631c 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/filters/timeout.go +++ b/staging/src/k8s.io/apiserver/pkg/server/filters/timeout.go @@ -31,6 +31,7 @@ import ( "k8s.io/apiserver/pkg/endpoints/metrics" apirequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/endpoints/responsewriter" + "k8s.io/apiserver/pkg/server/httplog" ) // WithTimeoutForNonLongRunningRequests times out non-long-running requests after the time given by timeout. @@ -141,7 +142,9 @@ func (t *timeoutHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { utilruntime.HandleError(err) }() }() - + httplog.SetStacktracePredicate(r.Context(), func(status int) bool { + return false + }) defer postTimeoutFn() tw.timeout(err) } diff --git a/staging/src/k8s.io/apiserver/pkg/server/httplog/httplog.go b/staging/src/k8s.io/apiserver/pkg/server/httplog/httplog.go index 9256ab4c621..6df7355b0d3 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/httplog/httplog.go +++ b/staging/src/k8s.io/apiserver/pkg/server/httplog/httplog.go @@ -59,7 +59,7 @@ type respLogger struct { statusRecorded bool status int statusStack string - // mutex is used when accessing addedInfo and addedKeyValuePairs. + // mutex is used when accessing addedInfo, addedKeyValuePairs and logStacktracePred. // They can be modified by other goroutine when logging happens (in case of request timeout) mutex sync.Mutex addedInfo strings.Builder @@ -181,6 +181,8 @@ func Unlogged(req *http.Request, w http.ResponseWriter) http.ResponseWriter { // StacktraceWhen sets the stacktrace logging predicate, which decides when to log a stacktrace. // There's a default, so you don't need to call this unless you don't like the default. func (rl *respLogger) StacktraceWhen(pred StacktracePred) *respLogger { + rl.mutex.Lock() + defer rl.mutex.Unlock() rl.logStacktracePred = pred return rl } @@ -316,6 +318,8 @@ func (rl *respLogger) Hijack() (net.Conn, *bufio.ReadWriter, error) { } func (rl *respLogger) recordStatus(status int) { + rl.mutex.Lock() + defer rl.mutex.Unlock() rl.status = status rl.statusRecorded = true if rl.logStacktracePred(status) {