From 5d3aa2a49648c9923bb32afc34740424d63ccc0a Mon Sep 17 00:00:00 2001 From: congqixia Date: Sat, 23 Mar 2024 11:51:06 +0800 Subject: [PATCH] fix: [Cherry-pick] Check latest leader exists before using it (#31500) (#31546) Cherry-pick from master pr: #31500 See also #31495 --------- Signed-off-by: Congqi Xia --- internal/querycoordv2/checkers/segment_checker.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/querycoordv2/checkers/segment_checker.go b/internal/querycoordv2/checkers/segment_checker.go index a6c54ff27b..57c1dc2c5a 100644 --- a/internal/querycoordv2/checkers/segment_checker.go +++ b/internal/querycoordv2/checkers/segment_checker.go @@ -370,13 +370,13 @@ func (c *SegmentChecker) createSegmentLoadTasks(ctx context.Context, segments [] plans := make([]balance.SegmentAssignPlan, 0) for shard, segments := range shardSegments { // if channel is not subscribed yet, skip load segments - if len(c.dist.LeaderViewManager.GetLeadersByShard(shard)) == 0 { + leader := c.dist.LeaderViewManager.GetLatestLeadersByReplicaShard(replica, shard) + if leader == nil { continue } // L0 segment can only be assign to shard leader's node if isLevel0 { - leader := c.dist.LeaderViewManager.GetLatestLeadersByReplicaShard(replica, shard) availableNodes = []int64{leader.ID} }