X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7d4da75d3980d465053c44b4d5b16afe166912a6..4d7567b7b3577b561dd064d397c10a9331c3ee16:/services/keep-balance/server.go diff --git a/services/keep-balance/server.go b/services/keep-balance/server.go index 613a2f7d3c..e2f13a425e 100644 --- a/services/keep-balance/server.go +++ b/services/keep-balance/server.go @@ -5,6 +5,7 @@ package main import ( + "context" "fmt" "net/http" "os" @@ -14,6 +15,7 @@ import ( "git.curoverse.com/arvados.git/sdk/go/arvados" "git.curoverse.com/arvados.git/sdk/go/auth" + "git.curoverse.com/arvados.git/sdk/go/ctxlog" "git.curoverse.com/arvados.git/sdk/go/httpserver" "github.com/sirupsen/logrus" ) @@ -57,6 +59,10 @@ type Config struct { // Timeout for outgoing http request/response cycle. RequestTimeout arvados.Duration + + // Destination filename for the list of lost block hashes, one + // per line. Updated atomically during each successful run. + LostBlocksFile string } // RunOptions controls runtime behavior. The flags/options that belong @@ -70,8 +76,8 @@ type RunOptions struct { Once bool CommitPulls bool CommitTrash bool - Logger *logrus.Logger - Dumper *logrus.Logger + Logger logrus.FieldLogger + Dumper logrus.FieldLogger // SafeRendezvousState from the most recent balance operation, // or "" if unknown. If this changes from one run to the next, @@ -86,8 +92,8 @@ type Server struct { metrics *metrics listening string // for tests - Logger *logrus.Logger - Dumper *logrus.Logger + Logger logrus.FieldLogger + Dumper logrus.FieldLogger } // NewServer returns a new Server that runs Balancers using the given @@ -123,11 +129,13 @@ func (srv *Server) start() error { if srv.config.Listen == "" { return nil } + ctx := ctxlog.Context(context.Background(), srv.Logger) server := &httpserver.Server{ Server: http.Server{ - Handler: httpserver.LogRequests(srv.Logger, - auth.RequireLiteralToken(srv.config.ManagementToken, - srv.metrics.Handler(srv.Logger))), + Handler: httpserver.HandlerWithContext(ctx, + httpserver.LogRequests( + auth.RequireLiteralToken(srv.config.ManagementToken, + srv.metrics.Handler(srv.Logger)))), }, Addr: srv.config.Listen, } @@ -142,9 +150,10 @@ func (srv *Server) start() error { func (srv *Server) Run() (*Balancer, error) { bal := &Balancer{ - Logger: srv.Logger, - Dumper: srv.Dumper, - Metrics: srv.metrics, + Logger: srv.Logger, + Dumper: srv.Dumper, + Metrics: srv.metrics, + LostBlocksFile: srv.config.LostBlocksFile, } var err error srv.runOptions, err = bal.Run(srv.config, srv.runOptions)