From 3d58b2ecee2b1199f2e29aea9ce34452bd53319a Mon Sep 17 00:00:00 2001 From: congqixia Date: Mon, 16 Jun 2025 15:14:38 +0800 Subject: [PATCH] fix: [2.5] Make controller wait checker worker quit (#42704) (#42726) Cherry-pick from master pr: #42704 Related to #42702 This patch add wait logic for `CheckerController` Nil check already exists due to code branching Signed-off-by: Congqi Xia --- internal/querycoordv2/checkers/controller.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/querycoordv2/checkers/controller.go b/internal/querycoordv2/checkers/controller.go index 5df2c5ca0d..cbe2cb2be5 100644 --- a/internal/querycoordv2/checkers/controller.go +++ b/internal/querycoordv2/checkers/controller.go @@ -50,6 +50,7 @@ type CheckerController struct { scheduler task.Scheduler checkers map[utils.CheckerType]Checker + wg sync.WaitGroup stopOnce sync.Once } @@ -96,7 +97,11 @@ func (controller *CheckerController) Start() { controller.cancel = cancel for checker := range controller.checkers { - go controller.startChecker(ctx, checker) + controller.wg.Add(1) + go func() { + defer controller.wg.Done() + controller.startChecker(ctx, checker) + }() } } @@ -145,6 +150,8 @@ func (controller *CheckerController) Stop() { if controller.cancel != nil { controller.cancel() } + + controller.wg.Wait() }) }