diff --git a/promql/functions.go b/promql/functions.go index 2d9d26dfb1..35420a8098 100644 --- a/promql/functions.go +++ b/promql/functions.go @@ -1092,6 +1092,15 @@ func funcSumOverTime(_ []Vector, matrixVal Matrix, args parser.Expressions, enh vec, err := aggrHistOverTime(matrixVal, enh, func(s Series) (*histogram.FloatHistogram, error) { var counterResetSeen, notCounterResetSeen bool + trackCounterReset := func(h *histogram.FloatHistogram) { + switch h.CounterResetHint { + case histogram.CounterReset: + counterResetSeen = true + case histogram.NotCounterReset: + notCounterResetSeen = true + } + } + defer func() { if counterResetSeen && notCounterResetSeen { annos.Add(annotations.NewHistogramCounterResetCollisionWarning(args[0].PositionRange(), annotations.HistogramAgg)) @@ -1099,13 +1108,9 @@ func funcSumOverTime(_ []Vector, matrixVal Matrix, args parser.Expressions, enh }() sum := s.Histograms[0].H.Copy() + trackCounterReset(sum) for _, h := range s.Histograms[1:] { - switch h.H.CounterResetHint { - case histogram.CounterReset: - counterResetSeen = true - case histogram.NotCounterReset: - notCounterResetSeen = true - } + trackCounterReset(h.H) _, _, err := sum.Add(h.H) if err != nil { return sum, err