From 22fddc537cac57cb6a613ee19520b451360b0997 Mon Sep 17 00:00:00 2001 From: congqixia Date: Fri, 3 Dec 2021 18:55:34 +0800 Subject: [PATCH] Fix not all segment state is drop after DropVirtualChannel (#12702) Signed-off-by: Congqi Xia --- internal/datacoord/meta.go | 13 +++++++++++++ internal/datacoord/server_test.go | 10 ++++++++++ 2 files changed, 23 insertions(+) diff --git a/internal/datacoord/meta.go b/internal/datacoord/meta.go index fc6061dba..1a08c7ad9 100644 --- a/internal/datacoord/meta.go +++ b/internal/datacoord/meta.go @@ -351,6 +351,19 @@ func (m *meta) UpdateDropChannelSegmentInfo(channel string, segments []*SegmentI modSegments[seg2Drop.GetID()] = segment } } + // set all channels of channel to dropped + for _, seg := range m.segments.segments { + if seg.InsertChannel != channel { + continue + } + _, ok := modSegments[seg.ID] + // seg inf mod segments are all in dropped state + if !ok { + clonedSeg := seg.Clone() + clonedSeg.State = commonpb.SegmentState_Dropped + modSegments[seg.ID] = clonedSeg + } + } return m.batchSaveDropSegments(channel, modSegments) } diff --git a/internal/datacoord/server_test.go b/internal/datacoord/server_test.go index bf85569e8..0bf27a2a7 100644 --- a/internal/datacoord/server_test.go +++ b/internal/datacoord/server_test.go @@ -960,6 +960,16 @@ func TestDropVirtualChannel(t *testing.T) { err := svr.meta.AddSegment(NewSegmentInfo(s)) assert.Nil(t, err) } + // add non matched segments + os := &datapb.SegmentInfo{ + ID: maxOperationsPerTxn + 100, + CollectionID: 0, + InsertChannel: "ch2", + + State: commonpb.SegmentState_Growing, + } + + svr.meta.AddSegment(NewSegmentInfo(os)) err := svr.channelManager.AddNode(0) require.Nil(t, err) -- GitLab