X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/cf1dcfb8715822f7ac5fe4fce067197dd84bad54..4d7567b7b3577b561dd064d397c10a9331c3ee16:/services/keep-balance/server.go diff --git a/services/keep-balance/server.go b/services/keep-balance/server.go index c867d7b10d..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 @@ -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)