mirror of
https://github.com/prometheus/prometheus.git
synced 2026-05-05 12:26:14 +02:00
promql: Use HistogramStatsIterator more often
The current code stops the walk after we have found the first relevant function. However, in expressions with multiple legs, we will then use the `HistogramStatsIterator` at most once. This change should make sure we explore all legs. The added tests make sure we are not using `HistogramStatsIterator` where we shouldn't (but the opposite can only be seen in a benchmark or with a more explicit test). Signed-off-by: beorn7 <beorn@grafana.com>
This commit is contained in:
parent
c84cf3622f
commit
0fa70e0f6c
@ -3920,7 +3920,7 @@ func detectHistogramStatsDecoding(expr parser.Expr) {
|
||||
break pathLoop
|
||||
}
|
||||
}
|
||||
return errors.New("stop")
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@ -1660,3 +1660,20 @@ eval instant at 30s histogram_count(avg(reset))
|
||||
eval instant at 5m histogram_count(rate(reset{timing="late"}[5m]))
|
||||
expect no_warn
|
||||
{timing="late"} 0.0175
|
||||
|
||||
clear
|
||||
|
||||
# Test edge cases of HistogramStatsIterator detection.
|
||||
# We access the same series multiple times within the same expression,
|
||||
# once with and once without HistogramStatsIterator. The results here
|
||||
# at least prove that we do not use HistogramStatsIterator where we
|
||||
# should not.
|
||||
load 1m
|
||||
histogram {{schema:0 count:10 sum:50 counter_reset_hint:gauge buckets:[1 2 3 4]}}
|
||||
|
||||
eval instant at 1m histogram_count(histogram unless histogram_quantile(0.5, histogram) < 3)
|
||||
{} 10
|
||||
|
||||
eval instant at 1m histogram_quantile(0.5, histogram unless histogram_count(histogram) == 0)
|
||||
{} 3.1748021039363987
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user