X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9c3df07fcefc04fcc8078a426c69215f49e63bf3..refs/heads/21254-bundle-zlib-workaround:/services/keep-balance/server.go diff --git a/services/keep-balance/server.go b/services/keep-balance/server.go index b20144e3af..7a59c1e8c0 100644 --- a/services/keep-balance/server.go +++ b/services/keep-balance/server.go @@ -98,10 +98,9 @@ func (srv *Server) runForever(ctx context.Context) error { ticker := time.NewTicker(time.Duration(srv.Cluster.Collections.BalancePeriod)) - // The unbuffered channel here means we only hear SIGUSR1 if - // it arrives while we're waiting in select{}. - sigUSR1 := make(chan os.Signal) + sigUSR1 := make(chan os.Signal, 1) signal.Notify(sigUSR1, syscall.SIGUSR1) + defer signal.Stop(sigUSR1) logger.Info("acquiring service lock") dblock.KeepBalanceService.Lock(ctx, func(context.Context) (*sqlx.DB, error) { return srv.DB, nil }) @@ -128,7 +127,6 @@ func (srv *Server) runForever(ctx context.Context) error { select { case <-ctx.Done(): - signal.Stop(sigUSR1) return nil case <-ticker.C: logger.Print("timer went off") @@ -137,8 +135,7 @@ func (srv *Server) runForever(ctx context.Context) error { // Reset the timer so we don't start the N+1st // run too soon after the Nth run is triggered // by SIGUSR1. - ticker.Stop() - ticker = time.NewTicker(time.Duration(srv.Cluster.Collections.BalancePeriod)) + ticker.Reset(time.Duration(srv.Cluster.Collections.BalancePeriod)) } logger.Print("starting next run") }