Skip to content

Commit d95492a

Browse files
committed
Add mutex prevent data race
Signed-off-by: Congqi Xia <[email protected]>
1 parent 7f45358 commit d95492a

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

internal/querycoordv2/server.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ type Server struct {
8080
address string
8181
session sessionutil.SessionInterface
8282
sessionWatcher sessionutil.SessionWatcher
83+
sessionWatcherMu sync.Mutex
8384
kv kv.MetaKv
8485
idAllocator func() (int64, error)
8586
metricsCacheManager *metricsinfo.MetricsCacheManager
@@ -594,9 +595,11 @@ func (s *Server) Stop() error {
594595
s.cluster.Stop()
595596
}
596597

598+
s.sessionWatcherMu.Lock()
597599
if s.sessionWatcher != nil {
598600
s.sessionWatcher.Stop()
599601
}
602+
s.sessionWatcherMu.Unlock()
600603

601604
s.cancel()
602605
s.wg.Wait()
@@ -644,7 +647,9 @@ func (s *Server) watchNodes(revision int64) {
644647
log := log.Ctx(s.ctx)
645648
defer s.wg.Done()
646649

650+
s.sessionWatcherMu.Lock()
647651
s.sessionWatcher = s.session.WatchServices(typeutil.QueryNodeRole, revision+1, s.rewatchNodes)
652+
s.sessionWatcherMu.Unlock()
648653
for {
649654
select {
650655
case <-s.ctx.Done():

0 commit comments

Comments
 (0)