From 2c5e88748e58c09485f64049b82bcdd5b0f58aaf Mon Sep 17 00:00:00 2001 From: Charles Korn Date: Tue, 25 Jun 2024 14:22:44 +1000 Subject: [PATCH] Fix issue where pending OOO read can be left dangling if creating querier fails Signed-off-by: Charles Korn --- tsdb/db.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tsdb/db.go b/tsdb/db.go index c44737c69..95250392e 100644 --- a/tsdb/db.go +++ b/tsdb/db.go @@ -2077,6 +2077,9 @@ func (db *DB) blockChunkQuerierForRange(mint, maxt int64) (_ []storage.ChunkQuer rh := NewOOORangeHead(db.head, mint, maxt, db.lastGarbageCollectedMmapRef) outOfOrderHeadQuerier, err := NewBlockChunkQuerier(rh, mint, maxt) if err != nil { + // If NewBlockQuerier() failed, make sure to clean up the pending read created by NewOOORangeHead. + rh.isoState.Close() + return nil, fmt.Errorf("open block chunk querier for ooo head %s: %w", rh, err) }