From a40b03a109f0309009bcf8b837183cd744ac7734 Mon Sep 17 00:00:00 2001 From: lhy1024 Date: Mon, 3 Jul 2023 12:13:18 +0800 Subject: [PATCH] fix other timer/ticker stop Signed-off-by: lhy1024 --- client/tso_dispatcher.go | 2 ++ pkg/mcs/discovery/register.go | 3 +++ pkg/mcs/resourcemanager/server/server.go | 4 +++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/client/tso_dispatcher.go b/client/tso_dispatcher.go index 8db90013582..9fd5c586bf9 100644 --- a/client/tso_dispatcher.go +++ b/client/tso_dispatcher.go @@ -384,6 +384,7 @@ func (c *tsoClient) handleDispatcher( // Loop through each batch of TSO requests and send them for processing. streamLoopTimer := time.NewTimer(c.option.timeout) + defer streamLoopTimer.Stop() tsoBatchLoop: for { select { @@ -443,6 +444,7 @@ tsoBatchLoop: timer.Stop() continue tsoBatchLoop case <-timer.C: + timer.Stop() continue streamChoosingLoop } } diff --git a/pkg/mcs/discovery/register.go b/pkg/mcs/discovery/register.go index 3e08d9b49cf..1e7800295de 100644 --- a/pkg/mcs/discovery/register.go +++ b/pkg/mcs/discovery/register.go @@ -86,6 +86,7 @@ func (sr *ServiceRegister) Register() error { select { case <-sr.ctx.Done(): log.Info("exit register process", zap.String("key", sr.key)) + t.Stop() return default: } @@ -94,11 +95,13 @@ func (sr *ServiceRegister) Register() error { resp, err := sr.cli.Grant(sr.ctx, sr.ttl) if err != nil { log.Error("grant lease failed", zap.String("key", sr.key), zap.Error(err)) + t.Stop() continue } if _, err := sr.cli.Put(sr.ctx, sr.key, sr.value, clientv3.WithLease(resp.ID)); err != nil { log.Error("put the key failed", zap.String("key", sr.key), zap.Error(err)) + t.Stop() continue } } diff --git a/pkg/mcs/resourcemanager/server/server.go b/pkg/mcs/resourcemanager/server/server.go index 6705c4b1da9..a0ccb52ed38 100644 --- a/pkg/mcs/resourcemanager/server/server.go +++ b/pkg/mcs/resourcemanager/server/server.go @@ -286,9 +286,11 @@ func (s *Server) startGRPCServer(l net.Listener) { gs.GracefulStop() close(done) }() + timer := time.NewTimer(utils.DefaultGRPCGracefulStopTimeout) + defer timer.Stop() select { case <-done: - case <-time.After(utils.DefaultGRPCGracefulStopTimeout): + case <-timer.C: log.Info("stopping grpc gracefully is taking longer than expected and force stopping now", zap.Duration("default", utils.DefaultGRPCGracefulStopTimeout)) gs.Stop() }