diff --git a/internal/querycoordv2/meta/collection_manager.go b/internal/querycoordv2/meta/collection_manager.go index 14f19e6389..4709d73a86 100644 --- a/internal/querycoordv2/meta/collection_manager.go +++ b/internal/querycoordv2/meta/collection_manager.go @@ -297,7 +297,7 @@ func (m *CollectionManager) CalculateLoadPercentage(collectionID UniqueID) int32 } func (m *CollectionManager) calculateLoadPercentage(collectionID UniqueID) int32 { - collection, ok := m.collections[collectionID] + _, ok := m.collections[collectionID] if ok { partitions := m.getPartitionsByCollection(collectionID) if len(partitions) > 0 { @@ -305,10 +305,6 @@ func (m *CollectionManager) calculateLoadPercentage(collectionID UniqueID) int32 return partition.LoadPercentage }) / int32(len(partitions)) } - if collection.GetLoadType() == querypb.LoadType_LoadCollection { - // no partition exists - return 100 - } } return -1 } diff --git a/internal/querycoordv2/meta/collection_manager_test.go b/internal/querycoordv2/meta/collection_manager_test.go index 339f7bae8b..4cc41688ad 100644 --- a/internal/querycoordv2/meta/collection_manager_test.go +++ b/internal/querycoordv2/meta/collection_manager_test.go @@ -71,7 +71,7 @@ func (suite *CollectionManagerSuite) SetupSuite() { querypb.LoadType_LoadCollection, } suite.replicaNumber = []int32{1, 2, 3, 1} - suite.colLoadPercent = []int32{0, 50, 100, 100} + suite.colLoadPercent = []int32{0, 50, 100, -1} suite.parLoadPercent = map[int64][]int32{ 100: {0}, 101: {0, 100}, diff --git a/internal/querycoordv2/observers/collection_observer.go b/internal/querycoordv2/observers/collection_observer.go index 87c905440b..1fb8dd7c6f 100644 --- a/internal/querycoordv2/observers/collection_observer.go +++ b/internal/querycoordv2/observers/collection_observer.go @@ -132,7 +132,14 @@ func (ob *CollectionObserver) observeTimeout() { zap.Duration("loadTime", time.Since(partition.CreatedAt))) ob.meta.CollectionManager.RemovePartition(partition.GetPartitionID()) ob.targetMgr.RemovePartition(partition.GetCollectionID(), partition.GetPartitionID()) - break + } + // all partition timeout, remove collection + if len(ob.meta.CollectionManager.GetPartitionsByCollection(collection)) == 0 { + log.Info("collection timeout due to all partition removed", zap.Int64("collection", collection)) + + ob.meta.CollectionManager.RemoveCollection(collection) + ob.meta.ReplicaManager.RemoveCollection(collection) + ob.targetMgr.RemoveCollection(collection) } } }