Merge pull request #14341 from charleskorn/charleskorn/cleanup-pending-read

Fix issue where pending OOO read can be left dangling if creating querier fails
This commit is contained in:
Bryan Boreham 2024-06-25 09:23:54 +01:00 committed by GitHub
commit 348f7f8d0c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 3 additions and 0 deletions

View File

@ -2105,6 +2105,9 @@ func (db *DB) blockChunkQuerierForRange(mint, maxt int64) (_ []storage.ChunkQuer
rh := NewOOORangeHead(db.head, mint, maxt, db.lastGarbageCollectedMmapRef) rh := NewOOORangeHead(db.head, mint, maxt, db.lastGarbageCollectedMmapRef)
outOfOrderHeadQuerier, err := db.blockChunkQuerierFunc(rh, mint, maxt) outOfOrderHeadQuerier, err := db.blockChunkQuerierFunc(rh, mint, maxt)
if err != nil { 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) return nil, fmt.Errorf("open block chunk querier for ooo head %s: %w", rh, err)
} }