mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
Wrap db.blocks read in a read lock
We don't hold db.mtx lock when trying to read db.blocks here so we need a read lock around this loop. Signed-off-by: Łukasz Mierzwa <l.mierzwa@gmail.com>
This commit is contained in:
parent
92788d313a
commit
d106b3beb7
|
@ -1518,7 +1518,9 @@ func (db *DB) compactBlocks() (err error) {
|
|||
default:
|
||||
}
|
||||
|
||||
db.mtx.RLock()
|
||||
uids, err := db.compactor.Compact(db.dir, plan, db.blocks)
|
||||
db.mtx.RUnlock()
|
||||
if err != nil {
|
||||
return fmt.Errorf("compact %s: %w", plan, err)
|
||||
}
|
||||
|
@ -1601,11 +1603,13 @@ func (db *DB) reloadBlocks() (err error) {
|
|||
if len(corrupted) > 0 {
|
||||
// Corrupted but no child loaded for it.
|
||||
// Close all new blocks to release the lock for windows.
|
||||
db.mtx.RLock()
|
||||
for _, block := range loadable {
|
||||
if _, open := getBlock(db.blocks, block.Meta().ULID); !open {
|
||||
block.Close()
|
||||
}
|
||||
}
|
||||
db.mtx.RUnlock()
|
||||
errs := tsdb_errors.NewMulti()
|
||||
for ulid, err := range corrupted {
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in a new issue