From 3dd3749f0b9e7079ea222c579797c4504107371c Mon Sep 17 00:00:00 2001 From: wei liu Date: Fri, 2 Aug 2024 14:46:13 +0800 Subject: [PATCH] enhance: Avoid unnecesary syncTargetVersion func call after querycoord recover (#34954) before querycoord stop gracefully, we will save the current target to meta store and recover it after querycoord start up, to speed the querycoord's recovery time. but the target version hasn't been recovered as expected, and it use latest timestamp as current target's version, which has no effect to querycoord but an unnecessary syncTargetVersion func call. This PR recover the correct target version to avoid unnecessary syncTargetVersion func call Signed-off-by: Wei Liu --- internal/querycoordv2/meta/target.go | 7 ++++++- internal/querycoordv2/meta/target_manager_test.go | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/querycoordv2/meta/target.go b/internal/querycoordv2/meta/target.go index d924e7cbc5..f8fcd89694 100644 --- a/internal/querycoordv2/meta/target.go +++ b/internal/querycoordv2/meta/target.go @@ -73,7 +73,12 @@ func FromPbCollectionTarget(target *querypb.CollectionTarget) *CollectionTarget } } - return NewCollectionTarget(segments, dmChannels, partitions) + return &CollectionTarget{ + segments: segments, + dmChannels: dmChannels, + partitions: typeutil.NewSet(partitions...), + version: target.GetVersion(), + } } func (p *CollectionTarget) toPbMsg() *querypb.CollectionTarget { diff --git a/internal/querycoordv2/meta/target_manager_test.go b/internal/querycoordv2/meta/target_manager_test.go index 894660638d..17d5fad327 100644 --- a/internal/querycoordv2/meta/target_manager_test.go +++ b/internal/querycoordv2/meta/target_manager_test.go @@ -608,6 +608,7 @@ func (suite *TargetManagerSuite) TestRecover() { suite.mgr.SaveCurrentTarget(suite.catalog) // clear target in memory + version := suite.mgr.current.getCollectionTarget(collectionID).GetTargetVersion() suite.mgr.current.removeCollectionTarget(collectionID) // try to recover suite.mgr.Recover(suite.catalog) @@ -616,6 +617,7 @@ func (suite *TargetManagerSuite) TestRecover() { suite.NotNil(target) suite.Len(target.GetAllDmChannelNames(), 2) suite.Len(target.GetAllSegmentIDs(), 2) + suite.Equal(target.GetTargetVersion(), version) // after recover, target info should be cleaned up targets, err := suite.catalog.GetCollectionTargets()