X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/506bd0a728728c055635ca01d7e6d8d2d6f263df..0d85dd75361bfab5e90479aa85fb4782860e636e:/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") }