diff --git a/domain/BUILD.bazel b/domain/BUILD.bazel index ccb70230b9829..6e1618129990e 100644 --- a/domain/BUILD.bazel +++ b/domain/BUILD.bazel @@ -58,6 +58,7 @@ go_library( "//util/etcd", "//util/execdetails", "//util/expensivequery", + "//util/intest", "//util/logutil", "//util/memory", "//util/memoryusagealarm", diff --git a/domain/domain.go b/domain/domain.go index b4a7a2770afd3..321a319fc39ee 100644 --- a/domain/domain.go +++ b/domain/domain.go @@ -69,6 +69,7 @@ import ( "github.com/pingcap/tidb/util/engine" "github.com/pingcap/tidb/util/etcd" "github.com/pingcap/tidb/util/expensivequery" + "github.com/pingcap/tidb/util/intest" "github.com/pingcap/tidb/util/logutil" "github.com/pingcap/tidb/util/memory" "github.com/pingcap/tidb/util/memoryusagealarm" @@ -902,6 +903,19 @@ func (do *Domain) Close() { do.info.RemoveServerInfo() do.info.RemoveMinStartTS() } + ttlJobManager := do.ttlJobManager.Load() + if ttlJobManager != nil { + ttlJobManager.Stop() + err := ttlJobManager.WaitStopped(context.Background(), func() time.Duration { + if intest.InTest { + return 10 * time.Second + } + return 30 * time.Second + }()) + if err != nil { + logutil.BgLogger().Warn("fail to wait until the ttl job manager stop", zap.Error(err)) + } + } close(do.exit) if do.etcdClient != nil { terror.Log(errors.Trace(do.etcdClient.Close())) @@ -2542,12 +2556,6 @@ func (do *Domain) StartTTLJobManager() { ttlJobManager.Start() <-do.exit - - ttlJobManager.Stop() - err := ttlJobManager.WaitStopped(context.Background(), 30*time.Second) - if err != nil { - logutil.BgLogger().Warn("fail to wait until the ttl job manager stop", zap.Error(err)) - } }, "ttlJobManager") }