diff --git a/web/web.go b/web/web.go index afe78e4255..4df447be64 100644 --- a/web/web.go +++ b/web/web.go @@ -634,8 +634,8 @@ func (h *Handler) testReady(f http.HandlerFunc) http.HandlerFunc { case Ready: f(w, r) case NotReady: - w.WriteHeader(http.StatusServiceUnavailable) w.Header().Set("X-Prometheus-Stopping", "false") + w.WriteHeader(http.StatusServiceUnavailable) fmt.Fprintf(w, "Service Unavailable") case Stopping: w.Header().Set("X-Prometheus-Stopping", "true") diff --git a/web/web_test.go b/web/web_test.go index ae7d532f1f..ce682912a9 100644 --- a/web/web_test.go +++ b/web/web_test.go @@ -140,11 +140,32 @@ func TestReadyAndHealthy(t *testing.T) { resp, err = http.Get(u) require.NoError(t, err) require.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) + require.Equal(t, "false", resp.Header.Get("X-Prometheus-Stopping")) cleanupTestResponse(t, resp) resp, err = http.Head(u) require.NoError(t, err) require.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) + require.Equal(t, "false", resp.Header.Get("X-Prometheus-Stopping")) + cleanupTestResponse(t, resp) + } + + // Set to stopping + webHandler.SetReady(Stopping) + + for _, u := range []string{ + baseURL + "/-/ready", + } { + resp, err = http.Get(u) + require.NoError(t, err) + require.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) + require.Equal(t, "true", resp.Header.Get("X-Prometheus-Stopping")) + cleanupTestResponse(t, resp) + + resp, err = http.Head(u) + require.NoError(t, err) + require.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) + require.Equal(t, "true", resp.Header.Get("X-Prometheus-Stopping")) cleanupTestResponse(t, resp) }