From 831de18464c98eef0720391aa257ca34182e605e Mon Sep 17 00:00:00 2001 From: Srikanth Chekuri Date: Wed, 10 Jul 2024 11:00:28 +0530 Subject: [PATCH] fix: concurrent map writes to temporalityMap (#5432) --- pkg/query-service/app/http_handler.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/query-service/app/http_handler.go b/pkg/query-service/app/http_handler.go index d6c91558a5..42879123ec 100644 --- a/pkg/query-service/app/http_handler.go +++ b/pkg/query-service/app/http_handler.go @@ -83,6 +83,7 @@ type APIHandler struct { // querying the v4 table on low cardinal temporality column // should be fast but we can still avoid the query if we have the data in memory temporalityMap map[string]map[v3.Temporality]bool + temporalityMux sync.Mutex maxIdleConns int maxOpenConns int @@ -455,6 +456,9 @@ func (aH *APIHandler) getRule(w http.ResponseWriter, r *http.Request) { // populateTemporality adds the temporality to the query if it is not present func (aH *APIHandler) populateTemporality(ctx context.Context, qp *v3.QueryRangeParamsV3) error { + aH.temporalityMux.Lock() + defer aH.temporalityMux.Unlock() + missingTemporality := make([]string, 0) metricNameToTemporality := make(map[string]map[v3.Temporality]bool) if qp.CompositeQuery != nil && len(qp.CompositeQuery.BuilderQueries) > 0 {