From 8e9864e8fc6aaaaf71d36ab41da92f87a7bf45da Mon Sep 17 00:00:00 2001 From: Dawn Chen Date: Mon, 28 Jul 2014 16:26:30 -0700 Subject: [PATCH] Instead of apiserver panic when proxy a request to a dead minion, print out proper message through http.Response --- pkg/apiserver/apiserver.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/apiserver/apiserver.go b/pkg/apiserver/apiserver.go index 4de04026e22..7bde043d927 100644 --- a/pkg/apiserver/apiserver.go +++ b/pkg/apiserver/apiserver.go @@ -231,6 +231,15 @@ type minionTransport struct{} func (t *minionTransport) RoundTrip(req *http.Request) (*http.Response, error) { resp, err := http.DefaultTransport.RoundTrip(req) + if err != nil && strings.Contains(err.Error(), "connection refused") { + message := fmt.Sprintf("Failed to connect to minion:%s", req.URL.Host) + resp = &http.Response{ + StatusCode: http.StatusServiceUnavailable, + Body: ioutil.NopCloser(strings.NewReader(message)), + } + return resp, nil + } + if strings.Contains(resp.Header.Get("Content-Type"), "text/plain") { // Do nothing, simply pass through return resp, err