Protect the QueryCoord meta from stale data migrated from old version (#23412)

Fix #23411

Signed-off-by: yah01 <yang.cen@zilliz.com>
This commit is contained in:
yah01 2023-04-14 14:42:28 +08:00 committed by GitHub
parent ba84f52119
commit bed8d6892e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 11 deletions

View File

@ -180,7 +180,9 @@ func (job *LoadCollectionJob) Execute() error {
PartitionLoadInfo: &querypb.PartitionLoadInfo{
CollectionID: req.GetCollectionID(),
PartitionID: partID,
ReplicaNumber: req.GetReplicaNumber(),
Status: querypb.LoadStatus_Loading,
FieldIndexID: req.GetFieldIndexID(),
},
CreatedAt: time.Now(),
}
@ -354,7 +356,9 @@ func (job *LoadPartitionJob) Execute() error {
PartitionLoadInfo: &querypb.PartitionLoadInfo{
CollectionID: req.GetCollectionID(),
PartitionID: partID,
ReplicaNumber: req.GetReplicaNumber(),
Status: querypb.LoadStatus_Loading,
FieldIndexID: req.GetFieldIndexID(),
},
CreatedAt: time.Now(),
}

View File

@ -127,7 +127,12 @@ func (m *CollectionManager) Recover(broker Broker) error {
for _, collection := range collections {
// Collections not loaded done should be deprecated
if collection.GetStatus() != querypb.LoadStatus_Loaded {
if collection.GetStatus() != querypb.LoadStatus_Loaded || collection.GetReplicaNumber() <= 0 {
log.Info("skip recovery and release collection",
zap.Int64("collectionID", collection.GetCollectionID()),
zap.String("status", collection.GetStatus().String()),
zap.Int32("replicaNumber", collection.GetReplicaNumber()),
)
m.store.ReleaseCollection(collection.GetCollectionID())
continue
}
@ -137,16 +142,29 @@ func (m *CollectionManager) Recover(broker Broker) error {
}
for collection, partitions := range partitions {
sawLoaded := false
for _, partition := range partitions {
// Partitions not loaded done should be deprecated
if partition.GetStatus() != querypb.LoadStatus_Loaded {
if partition.GetStatus() != querypb.LoadStatus_Loaded || partition.GetReplicaNumber() <= 0 {
log.Info("skip recovery and release partition",
zap.Int64("collectionID", collection),
zap.Int64("partitionID", partition.GetPartitionID()),
zap.String("status", partition.GetStatus().String()),
zap.Int32("replicaNumber", partition.GetReplicaNumber()),
)
m.store.ReleasePartition(collection, partition.GetPartitionID())
continue
}
sawLoaded = true
m.partitions[partition.PartitionID] = &Partition{
PartitionLoadInfo: partition,
}
}
if !sawLoaded {
m.store.ReleaseCollection(collection)
}
}
err = m.upgradeRecover(broker)
@ -172,7 +190,9 @@ func (m *CollectionManager) upgradeRecover(broker Broker) error {
PartitionLoadInfo: &querypb.PartitionLoadInfo{
CollectionID: collection.GetCollectionID(),
PartitionID: partitionID,
ReplicaNumber: collection.GetReplicaNumber(),
Status: querypb.LoadStatus_Loaded,
FieldIndexID: collection.GetFieldIndexID(),
},
LoadPercentage: 100,
}