Fix addSegment error, avoid the risk of mem leaks (#18309)

Signed-off-by: bigsheeper <yihao.dai@zilliz.com>
This commit is contained in:
bigsheeper 2022-07-19 20:58:28 +08:00 committed by GitHub
parent 791f5c1a71
commit c038cd7a48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 1 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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)