diff --git a/pkg/server/filters/wrap.go b/pkg/server/filters/wrap.go index 0a7584561..38ab58554 100644 --- a/pkg/server/filters/wrap.go +++ b/pkg/server/filters/wrap.go @@ -25,6 +25,17 @@ import ( "k8s.io/apiserver/pkg/server/httplog" ) +func badHTTPResponse() httplog.StacktracePred { + return func(status int) bool { + // http status code should not be zero + if status == 0 { + klog.Errorf("Bad HTTP Response - status is zero") + return true + } + return false + } +} + // WithPanicRecovery wraps an http Handler to recover and log panics. func WithPanicRecovery(handler http.Handler) http.Handler { return withPanicRecovery(handler, func(w http.ResponseWriter, req *http.Request, err interface{}) { @@ -39,7 +50,7 @@ func withPanicRecovery(handler http.Handler, crashHandler func(http.ResponseWrit crashHandler(w, req, err) }) - logger := httplog.NewLogged(req, &w) + logger := httplog.NewLogged(req, &w).StacktraceWhen(badHTTPResponse()) defer logger.Log() // Dispatch to the internal handler