Generate Stack Traces for http response with status code zero

When we spit out a http reponse with a `0` http status code we
should log a trace back so we can easily find where things went wrong.

Change-Id: Ic2aadec3a3de85fbdf64da66d6d12e3c631f409d
This commit is contained in:
Davanum Srinivas 2019-01-03 16:52:36 -05:00
parent bfa5876311
commit 72792d59f4
No known key found for this signature in database
GPG Key ID: 80D83A796103BF59

View File

@ -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