X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/df591042778408d03d410d5c22a669d85652d1ea..163c8f8750193b791eb62f5a8d73dc44a006b69e:/services/keepstore/keepstore.go diff --git a/services/keepstore/keepstore.go b/services/keepstore/keepstore.go index 03eef7e76b..6ae414bf93 100644 --- a/services/keepstore/keepstore.go +++ b/services/keepstore/keepstore.go @@ -8,12 +8,12 @@ import ( "flag" "fmt" "net" - "net/http" "os" "os/signal" "syscall" "time" + "git.curoverse.com/arvados.git/sdk/go/arvados" "git.curoverse.com/arvados.git/sdk/go/arvadosclient" "git.curoverse.com/arvados.git/sdk/go/config" "git.curoverse.com/arvados.git/sdk/go/keepclient" @@ -150,6 +150,22 @@ func main() { } } + var cluster *arvados.Cluster + cfg, err := arvados.GetConfig(arvados.DefaultConfigFile) + if err != nil && os.IsNotExist(err) { + log.Warnf("DEPRECATED: proceeding without cluster configuration file %q (%s)", arvados.DefaultConfigFile, err) + cluster = &arvados.Cluster{ + ClusterID: "xxxxx", + } + } else if err != nil { + log.Fatalf("load config %q: %s", arvados.DefaultConfigFile, err) + } else { + cluster, err = cfg.GetCluster("") + if err != nil { + log.Fatalf("config error in %q: %s", arvados.DefaultConfigFile, err) + } + } + log.Println("keepstore starting, pid", os.Getpid()) defer log.Println("keepstore exiting, pid", os.Getpid()) @@ -157,7 +173,7 @@ func main() { KeepVM = MakeRRVolumeManager(theConfig.Volumes) // Middleware/handler stack - router := MakeRESTRouter() + router := MakeRESTRouter(cluster) // Set up a TCP listener. listener, err := net.Listen("tcp", theConfig.Listen) @@ -165,19 +181,23 @@ func main() { log.Fatal(err) } - // Initialize Pull queue and worker + // Initialize keepclient for pull workers keepClient := &keepclient.KeepClient{ Arvados: &arvadosclient.ArvadosClient{}, Want_replicas: 1, } - // Initialize the pullq and worker + // Initialize the pullq and workers pullq = NewWorkQueue() - go RunPullWorker(pullq, keepClient) + for i := 0; i < 1 || i < theConfig.PullWorkers; i++ { + go RunPullWorker(pullq, keepClient) + } - // Initialize the trashq and worker + // Initialize the trashq and workers trashq = NewWorkQueue() - go RunTrashWorker(trashq) + for i := 0; i < 1 || i < theConfig.TrashWorkers; i++ { + go RunTrashWorker(trashq) + } // Start emptyTrash goroutine doneEmptyingTrash := make(chan bool) @@ -199,7 +219,8 @@ func main() { log.Printf("Error notifying init daemon: %v", err) } log.Println("listening at", listener.Addr()) - srv := &http.Server{Handler: router} + srv := &server{} + srv.Handler = router srv.Serve(listener) }