From 56e371c478509f0c2ff25efbdc5ea72ac31a6d4a Mon Sep 17 00:00:00 2001 From: congqixia Date: Wed, 3 Apr 2024 10:05:22 +0800 Subject: [PATCH] fix: Check replica exists before get latest leader (#31848) See also #31847 Signed-off-by: Congqi Xia --- internal/querycoordv2/meta/leader_view_manager.go | 3 +++ internal/querycoordv2/meta/leader_view_manager_test.go | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/internal/querycoordv2/meta/leader_view_manager.go b/internal/querycoordv2/meta/leader_view_manager.go index f26e9df584..dd98b9bae4 100644 --- a/internal/querycoordv2/meta/leader_view_manager.go +++ b/internal/querycoordv2/meta/leader_view_manager.go @@ -246,6 +246,9 @@ func (mgr *LeaderViewManager) GetLeadersByShard(shard string) map[int64]*LeaderV } func (mgr *LeaderViewManager) GetLatestLeadersByReplicaShard(replica *Replica, shard string) *LeaderView { + if replica == nil { + return nil + } mgr.rwmutex.RLock() defer mgr.rwmutex.RUnlock() diff --git a/internal/querycoordv2/meta/leader_view_manager_test.go b/internal/querycoordv2/meta/leader_view_manager_test.go index 93ad8e0779..48e4580e0e 100644 --- a/internal/querycoordv2/meta/leader_view_manager_test.go +++ b/internal/querycoordv2/meta/leader_view_manager_test.go @@ -143,6 +143,15 @@ func (suite *LeaderViewManagerSuite) TestGetDist() { suite.Len(segments, 1) } +func (suite *LeaderViewManagerSuite) TestGetLatestLeadersByReplicaShard() { + suite.Run("replica_nil", func() { + suite.NotPanics(func() { + lv := suite.mgr.GetLatestLeadersByReplicaShard(nil, "") + suite.Nil(lv) + }) + }) +} + func (suite *LeaderViewManagerSuite) TestGetLeader() { mgr := suite.mgr