Only write flushed segment key when segment state is flushed (#22667)

Signed-off-by: cai.zhang <cai.zhang@zilliz.com>
pull/22686/head
cai.zhang 2023-03-10 10:53:53 +08:00 committed by GitHub
parent 1642f7b71a
commit 2c0fd23bbf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 10 deletions

View File

@ -400,15 +400,16 @@ func (kc *Catalog) AlterSegmentsAndAddNewSegment(ctx context.Context, segments [
maps.Copy(kvs, segmentKvs)
kc.collectMetrics(newSegment)
flushSegKey := buildFlushedSegmentPath(newSegment.GetCollectionID(), newSegment.GetPartitionID(), newSegment.GetID())
clonedSegment := proto.Clone(newSegment).(*datapb.SegmentInfo)
// Set to fake if it's empty
clonedSegment.IsFake = newSegment.GetNumOfRows() == 0
segBytes, err := marshalSegmentInfo(clonedSegment)
if err != nil {
return err
}
kvs[flushSegKey] = segBytes
// postFlush will save the flushed segment key, skip here.
//flushSegKey := buildFlushedSegmentPath(newSegment.GetCollectionID(), newSegment.GetPartitionID(), newSegment.GetID())
//clonedSegment := proto.Clone(newSegment).(*datapb.SegmentInfo)
//// Set to fake if it's empty
//clonedSegment.IsFake = newSegment.GetNumOfRows() == 0
//segBytes, err := marshalSegmentInfo(clonedSegment)
//if err != nil {
// return err
//}
//kvs[flushSegKey] = segBytes
}
return kc.MetaKv.MultiSave(kvs)

View File

@ -490,7 +490,7 @@ func Test_AlterSegmentsAndAddNewSegment(t *testing.T) {
err := catalog.AlterSegmentsAndAddNewSegment(context.TODO(), []*datapb.SegmentInfo{droppedSegment}, segment1)
assert.NoError(t, err)
assert.Equal(t, 9, len(savedKvs))
assert.Equal(t, 8, len(savedKvs))
verifySavedKvsForDroppedSegment(t, savedKvs)
verifySavedKvsForSegment(t, savedKvs)