diff --git a/promql/parser/ast.go b/promql/parser/ast.go index 4e8f4daa5f..d9117b988e 100644 --- a/promql/parser/ast.go +++ b/promql/parser/ast.go @@ -382,11 +382,16 @@ func Walk(ctx context.Context, v Visitor, s *EvalStmt, node Node, path []Node, n } func ExtractSelectors(expr Expr) [][]*labels.Matcher { - var selectors [][]*labels.Matcher + var ( + selectors [][]*labels.Matcher + l sync.Mutex + ) Inspect(context.TODO(), &EvalStmt{Expr: expr}, func(node Node, _ []Node) error { vs, ok := node.(*VectorSelector) if ok { + l.Lock() selectors = append(selectors, vs.LabelMatchers) + l.Unlock() } return nil }, nil)