VictoriaMetrics/app/vmselect/promql
Ze'ev Klapow 79e1c6a6fc
fix le buckets when adjacent vmrange is empty (#4021)
There is a bug here where if you have a single bucket like:

foo{vmrange="4.084e+02...4.642e+02"} 2 123

The expected output is three le encoded buckets like:

foo{le="4.084e+02"} 0 123
foo{le="4.642e+02"} 2 123
foo{le="+Inf"} 2 123

This correctly encodes the start and end of the vmrange.
If however, the input contains the previous bucket, and that bucket is
empty then you only get the end le and +Inf out currently, i.e:

foo{vmrange="7.743e+05...8.799e+05"} 5 123
foo{vmrange="6.813e+05...7.743e+05"} 0 123

results in:

foo{le="8.799e+05"} 5 123
foo{le="+Inf"} 5 123

This causes issues when you go to compute a quantile because this means
that the assumed lower bound of the buckets is 0 and this we interpolate
between 0->end rather than the vmrange start->end as expected.
2023-03-27 17:54:19 -07:00
..
active_queries.go app/vmselect: show X-Forwarded-For contents on /api/v1/status/active_queries page 2020-07-31 20:05:18 +03:00
aggr.go .golangci.yml: properly enable revive linter and fix all the warnings it detects 2023-02-26 12:18:59 -08:00
aggr_incremental.go app/vmselect: optimize incremental aggregates a bit 2023-03-20 15:37:06 -07:00
aggr_incremental_test.go app/vmselect/promql: fix TestIncrementalAggr test on systems less than 3 CPU cores 2023-03-20 20:37:18 -07:00
aggr_test.go app/vmselect/promql: add mode() aggregate function 2020-07-20 15:31:20 +03:00
binary_op.go app/vmselect/promql: reduce memory allocations when searching for time series pairs with identical labelsets in q1 op q2 queries 2023-01-15 13:03:23 -08:00
eval.go app/vmselect: follow-up for 10ab086366 2023-03-27 15:22:00 -07:00
eval_test.go app/vmselect: follow-up for 10ab086366 2023-03-27 15:22:00 -07:00
exec.go app/vmselect/promql: avoid memory allocations and copying from source timeseries to the returned result at timeseriesToResult() 2023-01-09 22:38:59 -08:00
exec_test.go metricsql: support optional 2nd argument for rollup functions (#3841) 2023-02-24 13:47:52 -08:00
memory_limiter.go app/vmselect: return back the logic for limits the amounts of memory occupied by concurrently executed queries if -search.maxMemoryPerQuery isn't set 2022-10-10 21:45:13 +03:00
memory_limiter_test.go app/vmselect: return back the logic for limits the amounts of memory occupied by concurrently executed queries if -search.maxMemoryPerQuery isn't set 2022-10-10 21:45:13 +03:00
parser.go app/vmselect: accept optional extra_filters[] query args for all the supported Prometheus querying APIs 2021-12-06 17:07:09 +02:00
rollup.go app/vmselect/promql: fix panic when calculating aggr_func(rollup*()) 2023-02-27 11:48:27 -08:00
rollup_result_cache.go app/vmselect/promql: prevent from cannot unmarshal timeseries from rollupResultCache panic after the upgrade to v1.89.0 2023-03-12 19:09:39 -07:00
rollup_result_cache_test.go vmselect/promql: enable search.maxPointsSubqueryPerTimeseries for sub-queries (#2963) 2022-08-24 15:25:18 +03:00
rollup_test.go app/vmselect/promql: add mad_over_time(m[d]) function 2023-02-11 01:06:20 -08:00
rollup_timing_test.go app/vmselect: use consistent randomizer in tests 2023-01-23 19:27:25 -08:00
timeseries.go app/vmselect/promql: prevent from SIGBUS crash on architecures, which deny unaligned access to 8-byte words (e.g. ARM) 2023-03-12 16:32:08 -07:00
timeseries_test.go app/vmselect/promql: add test to ensure 8-byte alignment (#3948) 2023-03-16 09:01:42 -07:00
transform.go fix le buckets when adjacent vmrange is empty (#4021) 2023-03-27 17:54:19 -07:00
transform_test.go fix le buckets when adjacent vmrange is empty (#4021) 2023-03-27 17:54:19 -07:00
tzdata.go all: add go:build lines for Go1.17 2021-07-26 15:48:21 +03:00