From a2fcdeb1ef3dd8da8a596f81b160d32110f72f24 Mon Sep 17 00:00:00 2001 From: Julien Pivotto Date: Thu, 16 Apr 2020 20:16:16 +0200 Subject: [PATCH 1/3] Defer finalizer (#7129) Signed-off-by: Julien Pivotto --- web/api/v1/api.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/api/v1/api.go b/web/api/v1/api.go index 204b2ff38c..d9f3ea237e 100644 --- a/web/api/v1/api.go +++ b/web/api/v1/api.go @@ -249,6 +249,9 @@ func (api *API) Register(r *route.Router) { hf := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { httputil.SetCORS(w, api.CORSOrigin, r) result := f(r) + if result.finalizer != nil { + defer result.finalizer() + } if result.err != nil { api.respondError(w, result.err, result.data) } else if result.data != nil { @@ -256,9 +259,6 @@ func (api *API) Register(r *route.Router) { } else { w.WriteHeader(http.StatusNoContent) } - if result.finalizer != nil { - result.finalizer() - } }) return api.ready(httputil.CompressionHandler{ Handler: hf, From e2c06a88989de527696d3650f44412aeb6a06876 Mon Sep 17 00:00:00 2001 From: Julian Taylor Date: Mon, 6 Apr 2020 10:05:01 +0200 Subject: [PATCH 2/3] register federation failure metrics (#7081) Closes gh-7080 Signed-off-by: Julian Taylor --- web/federate.go | 4 ++++ web/web.go | 1 + 2 files changed, 5 insertions(+) diff --git a/web/federate.go b/web/federate.go index 93c9aece36..19ad59cdb3 100644 --- a/web/federate.go +++ b/web/federate.go @@ -44,6 +44,10 @@ var ( }) ) +func registerFederationMetrics(r prometheus.Registerer) { + r.MustRegister(federationWarnings, federationErrors) +} + func (h *Handler) federation(w http.ResponseWriter, req *http.Request) { h.mtx.RLock() defer h.mtx.RUnlock() diff --git a/web/web.go b/web/web.go index 21fc02158a..48fc62c8cd 100644 --- a/web/web.go +++ b/web/web.go @@ -139,6 +139,7 @@ func newMetrics(r prometheus.Registerer) *metrics { if r != nil { r.MustRegister(m.requestCounter, m.requestDuration, m.responseSize) + registerFederationMetrics(r) } return m } From 7eedcc708ed348312748ae66cbe5c938937a4dd4 Mon Sep 17 00:00:00 2001 From: Julien Pivotto Date: Thu, 16 Apr 2020 01:44:43 +0200 Subject: [PATCH 3/3] promql/parser: Cleanup generatedParserResult accross reuse Reusing the same generatedParserResult ends up in strange panics: See #7131 and #7127. Signed-off-by: Julien Pivotto --- promql/parser/parse.go | 1 + 1 file changed, 1 insertion(+) diff --git a/promql/parser/parse.go b/promql/parser/parse.go index 79424dd98d..6e9bbe23a5 100644 --- a/promql/parser/parse.go +++ b/promql/parser/parse.go @@ -169,6 +169,7 @@ func newParser(input string) *parser { p.injecting = false p.parseErrors = nil + p.generatedParserResult = nil // Clear lexer struct before reusing. p.lex = Lexer{