From e80a3e1b2173da30981a722a3b462e4c3c03328a Mon Sep 17 00:00:00 2001 From: beorn7 Date: Tue, 14 Oct 2025 00:56:07 +0200 Subject: [PATCH] promql: Check 1st histogram's CRH in sum_over_time avg_over_time already correctly checked the counter reset hint fo all histograms, but in sum_over_time, the 1st histogram was missed. In both cases, the 1st histogram is processed outside the loop. Signed-off-by: beorn7 --- promql/functions.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) 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