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 56cd8a4ce05..4ade375a2f8 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/filters/timeout.go +++ b/staging/src/k8s.io/apiserver/pkg/server/filters/timeout.go @@ -92,7 +92,8 @@ func (t *timeoutHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - errCh := make(chan interface{}) + // resultCh is used as both errCh and stopCh + resultCh := make(chan interface{}) tw := newTimeoutWriter(w) go func() { defer func() { @@ -103,12 +104,13 @@ func (t *timeoutHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { buf = buf[:runtime.Stack(buf, false)] err = fmt.Sprintf("%v\n%s", err, buf) } - errCh <- err + resultCh <- err }() t.handler.ServeHTTP(tw, r) }() select { - case err := <-errCh: + case err := <-resultCh: + // panic if error occurs; stop otherwise if err != nil { panic(err) }