fix: Direct forward delta exclude l0 segments (#36899)

Related to #36887

Forward delete to L0 segment will return error and mark l0 segment
offline causing delegator unserviceable

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
pull/36912/head
congqixia 2024-10-16 14:05:23 +08:00 committed by GitHub
parent caeab0cc1f
commit 447ff342fb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 6 additions and 2 deletions

View File

@ -283,18 +283,22 @@ func (sd *shardDelegator) forwardStreamingDirect(ctx context.Context, deleteData
worker, err := sd.workerManager.GetWorker(ctx, entry.NodeID)
if err != nil {
log.Warn("failed to get worker",
zap.Int64("nodeID", paramtable.GetNodeID()),
zap.Int64("nodeID", entry.NodeID),
zap.Error(err),
)
// skip if node down
// delete will be processed after loaded again
continue
}
// forward to non level0 segment only
segments := lo.Filter(entry.Segments, func(segmentEntry SegmentEntry, _ int) bool {
return segmentEntry.Level != datapb.SegmentLevel_L0
})
eg.Go(func() error {
offlineSegments.Upsert(sd.applyDelete(ctx, entry.NodeID, worker, func(segmentID int64) (DeleteData, bool) {
return deleteData, true
}, entry.Segments, querypb.DataScope_Historical)...)
}, segments, querypb.DataScope_Historical)...)
return nil
})
}