From 4036830b2d9e46e4d1e2dcd9218fe56dad3c1257 Mon Sep 17 00:00:00 2001 From: sunby Date: Sat, 23 Oct 2021 13:31:09 +0800 Subject: [PATCH] Fix modify segment without clone (#10498) issue: #10430 Signed-off-by: sunby --- internal/datacoord/meta.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/internal/datacoord/meta.go b/internal/datacoord/meta.go index 496774450b..47d1cc6977 100644 --- a/internal/datacoord/meta.go +++ b/internal/datacoord/meta.go @@ -210,14 +210,21 @@ func (m *meta) UpdateFlushSegmentsInfo(segmentID UniqueID, flushed bool, modSegments[segmentID] = clonedSegment + var getClonedSegment = func(segmentID UniqueID) *SegmentInfo { + if s, ok := modSegments[segmentID]; ok { + return s + } + if s := m.segments.GetSegment(segmentID); s != nil { + return s.Clone() + } + return nil + } + for _, pos := range startPositions { if len(pos.GetStartPosition().GetMsgID()) == 0 { continue } - s := modSegments[pos.GetSegmentID()] - if s == nil { - s = m.segments.GetSegment(pos.GetSegmentID()) - } + s := getClonedSegment(pos.GetSegmentID()) if s == nil { continue } @@ -227,10 +234,7 @@ func (m *meta) UpdateFlushSegmentsInfo(segmentID UniqueID, flushed bool, } for _, cp := range checkpoints { - s := modSegments[cp.GetSegmentID()] - if s == nil { - s = m.segments.GetSegment(cp.GetSegmentID()) - } + s := getClonedSegment(cp.GetSegmentID()) if s == nil { continue }