Skip to content

Commit 8cedb94

Browse files
authored
Fix cachedScanner concurrent scan (#6882)
Signed-off-by: SungJin1212 <tjdwls1201@gmail.com>
1 parent 960b372 commit 8cedb94

File tree

1 file changed

+2
-5
lines changed

1 file changed

+2
-5
lines changed

pkg/storage/tsdb/users/cache.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,30 +42,27 @@ func newCachedScanner(scanner Scanner, cfg tsdb.UsersScannerConfig, reg promethe
4242

4343
func (s *cachedScanner) ScanUsers(ctx context.Context) ([]string, []string, []string, error) {
4444
s.requests.Inc()
45-
s.mtx.RLock()
45+
s.mtx.Lock()
46+
defer s.mtx.Unlock()
4647
// Check if we have a valid cached result
4748
if !s.lastUpdatedAt.Before(time.Now().Add(-s.ttl)) {
4849
active := s.active
4950
deleting := s.deleting
5051
deleted := s.deleted
51-
s.mtx.RUnlock()
5252
s.hits.Inc()
5353
return active, deleting, deleted, nil
5454
}
55-
s.mtx.RUnlock()
5655

5756
// TODO: move to promise based.
5857
active, deleting, deleted, err := s.scanner.ScanUsers(ctx)
5958
if err != nil {
6059
return nil, nil, nil, err
6160
}
6261

63-
s.mtx.Lock()
6462
s.active = active
6563
s.deleting = deleting
6664
s.deleted = deleted
6765
s.lastUpdatedAt = time.Now()
68-
s.mtx.Unlock()
6966

7067
return active, deleting, deleted, nil
7168
}

0 commit comments

Comments
 (0)