Fix QueryNode panic when meta changed (#19902)

Signed-off-by: yah01 <yang.cen@zilliz.com>

Signed-off-by: yah01 <yang.cen@zilliz.com>
This commit is contained in:
yah01 2022-10-20 10:07:30 +08:00 committed by GitHub
parent c9d4f10ce5
commit 5dcff9ab72
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -83,8 +83,11 @@ func (dNode *deleteNode) Operate(in []flowgraph.Msg) []flowgraph.Msg {
collection, err := dNode.metaReplica.getCollectionByID(dNode.collectionID)
if err != nil {
// QueryNode should add collection before start flow graph
panic(fmt.Errorf("%s getCollectionByID failed, collectionID = %d, channel = %s", dNode.Name(), dNode.collectionID, dNode.channel))
log.Warn("failed to get collection",
zap.Int64("collectionID", dNode.collectionID),
zap.String("channel", dNode.channel),
)
return []Msg{}
}
collection.RLock()
defer collection.RUnlock()
@ -120,9 +123,12 @@ func (dNode *deleteNode) Operate(in []flowgraph.Msg) []flowgraph.Msg {
segment, err := dNode.metaReplica.getSegmentByID(segmentID, segmentTypeSealed)
if err != nil {
// should not happen, segment should be created before
err = fmt.Errorf("deleteNode getSegmentByID failed, err = %s", err)
log.Error(err.Error())
panic(err)
log.Warn("failed to get segment",
zap.Int64("collectionID", dNode.collectionID),
zap.Int64("segmentID", segmentID),
zap.String("channel", dNode.channel),
)
continue
}
offset := segment.segmentPreDelete(len(pks))
delData.deleteOffset[segmentID] = offset