X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/07baa0ed049746514495d1648c1aef0c40545141..0d85dd75361bfab5e90479aa85fb4782860e636e:/services/keep-balance/server.go diff --git a/services/keep-balance/server.go b/services/keep-balance/server.go index fd53497f78..7a59c1e8c0 100644 --- a/services/keep-balance/server.go +++ b/services/keep-balance/server.go @@ -27,9 +27,8 @@ import ( // RunOptions fields are controlled by command line flags. type RunOptions struct { Once bool - CommitPulls bool - CommitTrash bool CommitConfirmedFields bool + ChunkPrefix string Logger logrus.FieldLogger Dumper logrus.FieldLogger @@ -86,6 +85,7 @@ func (srv *Server) runOnce(ctx context.Context) (*Balancer, error) { Dumper: srv.Dumper, Metrics: srv.Metrics, LostBlocksFile: srv.Cluster.Collections.BlobMissingReport, + ChunkPrefix: srv.RunOptions.ChunkPrefix, } var err error srv.RunOptions, err = bal.Run(ctx, srv.ArvClient, srv.Cluster, srv.RunOptions) @@ -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 }) @@ -110,9 +109,9 @@ func (srv *Server) runForever(ctx context.Context) error { logger.Printf("starting up: will scan every %v and on SIGUSR1", srv.Cluster.Collections.BalancePeriod) for { - if !srv.RunOptions.CommitPulls && !srv.RunOptions.CommitTrash { + if srv.Cluster.Collections.BalancePullLimit < 1 && srv.Cluster.Collections.BalanceTrashLimit < 1 { logger.Print("WARNING: Will scan periodically, but no changes will be committed.") - logger.Print("======= Consider using -commit-pulls and -commit-trash flags.") + logger.Print("======= To commit changes, set BalancePullLimit and BalanceTrashLimit values greater than zero.") } if !dblock.KeepBalanceService.Check() { @@ -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") }