From 2bed5bc4615ac595ca30c6e9a6fc00259c3af739 Mon Sep 17 00:00:00 2001 From: congqixia Date: Thu, 6 Jul 2023 19:10:25 +0800 Subject: [PATCH] Fix false load success for partition load timeout but collection remains (#25379) Signed-off-by: Congqi Xia --- internal/querycoordv2/meta/collection_manager.go | 6 +----- internal/querycoordv2/meta/collection_manager_test.go | 2 +- internal/querycoordv2/observers/collection_observer.go | 9 ++++++++- 3 files changed, 10 insertions(+), 7 deletions(-) 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) } } }