diff --git a/internal/querynode/meta_replica.go b/internal/querynode/meta_replica.go index 0d340f5eb9..295da9a9e8 100644 --- a/internal/querynode/meta_replica.go +++ b/internal/querynode/meta_replica.go @@ -550,7 +550,8 @@ func (replica *metaReplica) addSegmentPrivate(segmentID UniqueID, partitionID Un return err } if ok { - return nil + return fmt.Errorf("segment has been existed, "+ + "segmentID = %d, collectionID = %d, segmentType = %s", segmentID, segment.collectionID, segType.String()) } partition.addSegmentID(segmentID, segType) diff --git a/internal/querynode/meta_replica_test.go b/internal/querynode/meta_replica_test.go index 004a6f5274..4743e1252c 100644 --- a/internal/querynode/meta_replica_test.go +++ b/internal/querynode/meta_replica_test.go @@ -189,6 +189,18 @@ func TestMetaReplica_segment(t *testing.T) { } }) + t.Run("test add duplicated segment", func(t *testing.T) { + replica, err := genSimpleReplica() + assert.NoError(t, err) + defer replica.freeAll() + + err = replica.addSegment(defaultSegmentID, defaultPartitionID, defaultCollectionID, "", segmentTypeGrowing) + assert.NoError(t, err) + + err = replica.addSegment(defaultSegmentID, defaultPartitionID, defaultCollectionID, "", segmentTypeGrowing) + assert.Error(t, err) + }) + t.Run("test invalid segment type", func(t *testing.T) { replica, err := genSimpleReplica() assert.NoError(t, err) diff --git a/internal/querynode/task_test.go b/internal/querynode/task_test.go index c7df0d5760..d03db32f1f 100644 --- a/internal/querynode/task_test.go +++ b/internal/querynode/task_test.go @@ -396,6 +396,8 @@ func TestTask_loadSegmentsTask(t *testing.T) { node, err := genSimpleQueryNode(ctx) assert.NoError(t, err) + node.metaReplica.removeSegment(defaultSegmentID, segmentTypeSealed) + fieldBinlog, statsLog, err := saveBinLog(ctx, defaultCollectionID, defaultPartitionID, defaultSegmentID, defaultMsgLength, schema) assert.NoError(t, err)