From 351463b67e6615fa4fe699af13f2b1a3997ba6c7 Mon Sep 17 00:00:00 2001 From: wei liu Date: Mon, 18 Nov 2024 20:58:30 +0800 Subject: [PATCH] fix: L0 segment has been loaded to worker during channel balance (#37748) issue: #37703 --------- Signed-off-by: Wei Liu --- internal/querynodev2/delegator/delegator_data.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/internal/querynodev2/delegator/delegator_data.go b/internal/querynodev2/delegator/delegator_data.go index 2b34300346116..0c280569c9a5e 100644 --- a/internal/querynodev2/delegator/delegator_data.go +++ b/internal/querynodev2/delegator/delegator_data.go @@ -412,9 +412,16 @@ func (sd *shardDelegator) LoadSegments(ctx context.Context, req *querypb.LoadSeg log := sd.getLogger(ctx) targetNodeID := req.GetDstNodeID() + if len(req.GetInfos()) > 0 && req.GetInfos()[0].Level == datapb.SegmentLevel_L0 { + // force l0 segment to load on delegator + if targetNodeID != paramtable.GetNodeID() { + targetNodeID = paramtable.GetNodeID() + log.Info("unexpected L0 segment load on non-delegator node, force to load on delegator", zap.Int64("nodeIDInReq", req.GetDstNodeID())) + } + } // add common log fields log = log.With( - zap.Int64("workID", req.GetDstNodeID()), + zap.Int64("workID", targetNodeID), zap.Int64s("segments", lo.Map(req.GetInfos(), func(info *querypb.SegmentLoadInfo, _ int) int64 { return info.GetSegmentID() })), ) @@ -424,7 +431,7 @@ func (sd *shardDelegator) LoadSegments(ctx context.Context, req *querypb.LoadSeg return err } - req.Base.TargetID = req.GetDstNodeID() + req.Base.TargetID = targetNodeID log.Debug("worker loads segments...") sLoad := func(ctx context.Context, req *querypb.LoadSegmentsRequest) error {