Compare commits

...

2 Commits

Author SHA1 Message Date
Nikolay
ec8f301ad8 Update CHANGELOG.md
Signed-off-by: Nikolay <nik@victoriametrics.com>
2026-08-18 18:30:15 +02:00
f41gh7
01bc887b66 app/vmselect: correctly return memory into pool on error
This commit returns timeseriesWorker back into pool on error path for
 `evalRollupNoIncrementalAggregate` function.

 Also it aligns pool put behavior at evalRollupFuncWithSubquery
2026-08-18 18:25:41 +02:00
2 changed files with 4 additions and 2 deletions

View File

@@ -1093,6 +1093,7 @@ func evalRollupFuncWithSubquery(qt *querytracer.Tracer, ec *EvalConfig, funcName
var samplesScannedTotal atomic.Uint64
keepMetricNames := getKeepMetricNames(expr)
tsw := getTimeseriesByWorkerID()
defer putTimeseriesByWorkerID(tsw)
seriesByWorkerID := tsw.byWorkerID
doParallel(tssSQ, func(tsSQ *timeseries, values []float64, timestamps []int64, workerID uint) ([]float64, []int64) {
values, timestamps = removeNanValues(values[:0], timestamps[:0], tsSQ.Values, tsSQ.Timestamps)
@@ -1115,7 +1116,6 @@ func evalRollupFuncWithSubquery(qt *querytracer.Tracer, ec *EvalConfig, funcName
for i := range seriesByWorkerID {
tss = append(tss, seriesByWorkerID[i].tss...)
}
putTimeseriesByWorkerID(tsw)
rowsScannedPerQuery.Update(float64(samplesScannedTotal.Load()))
qt.Printf("rollup %s() over %d series returned by subquery: series=%d, samplesScanned=%d", funcName, len(tssSQ), len(tss), samplesScannedTotal.Load())
@@ -2021,6 +2021,7 @@ func evalRollupNoIncrementalAggregate(qt *querytracer.Tracer, funcName string, k
var samplesScannedTotal atomic.Uint64
tsw := getTimeseriesByWorkerID()
defer putTimeseriesByWorkerID(tsw)
seriesByWorkerID := tsw.byWorkerID
seriesLen := rss.Len()
err := rss.RunParallel(qt, func(rs *netstorage.Result, workerID uint) error {
@@ -2047,7 +2048,6 @@ func evalRollupNoIncrementalAggregate(qt *querytracer.Tracer, funcName string, k
for i := range seriesByWorkerID {
tss = append(tss, seriesByWorkerID[i].tss...)
}
putTimeseriesByWorkerID(tsw)
rowsScannedPerQuery.Update(float64(samplesScannedTotal.Load()))
qt.Printf("samplesScanned=%d", samplesScannedTotal.Load())

View File

@@ -26,6 +26,8 @@ See also [LTS releases](https://docs.victoriametrics.com/victoriametrics/lts-rel
## tip
* BUGFIX: [vmsingle](https://docs.victoriametrics.com/victoriametrics/single-server-victoriametrics/) and `vmselect` in [VictoriaMetrics cluster](https://docs.victoriametrics.com/victoriametrics/cluster-victoriametrics/): properly re-use memory if query aggregation returns error. See [#11426](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/11426).
## [v1.150.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.150.0)
Released at 2026-08-17