Merge branch '18947-githttpd'
[arvados.git] / services / crunch-dispatch-local / crunch-dispatch-local.go
index be422527621909c96400457900ecfba1d3142bd8..c33c2358ca3b7612ef92498edbef9a5562d6b9f5 100644 (file)
@@ -31,15 +31,15 @@ var (
        runningCmds      map[string]*exec.Cmd
        runningCmdsMutex sync.Mutex
        waitGroup        sync.WaitGroup
-       crunchRunCommand *string
+       crunchRunCommand string
 )
 
 func main() {
-       logger := logrus.StandardLogger()
+       baseLogger := logrus.StandardLogger()
        if os.Getenv("DEBUG") != "" {
-               logger.SetLevel(logrus.DebugLevel)
+               baseLogger.SetLevel(logrus.DebugLevel)
        }
-       logger.Formatter = &logrus.JSONFormatter{
+       baseLogger.Formatter = &logrus.JSONFormatter{
                TimestampFormat: "2006-01-02T15:04:05.000000000Z07:00",
        }
 
@@ -50,7 +50,7 @@ func main() {
                10,
                "Interval in seconds to poll for queued containers")
 
-       crunchRunCommand = flags.String(
+       flags.StringVar(&crunchRunCommand,
                "crunch-run-command",
                "/usr/bin/crunch-run",
                "Crunch command to run container")
@@ -70,14 +70,19 @@ func main() {
                return
        }
 
-       loader := config.NewLoader(nil, logger)
+       loader := config.NewLoader(nil, baseLogger)
        cfg, err := loader.Load()
+       if err != nil {
+               fmt.Fprintf(os.Stderr, "error loading config: %s\n", err)
+               os.Exit(1)
+       }
        cluster, err := cfg.GetCluster("")
        if err != nil {
                fmt.Fprintf(os.Stderr, "config error: %s\n", err)
                os.Exit(1)
        }
 
+       logger := baseLogger.WithField("ClusterID", cluster.ClusterID)
        logger.Printf("crunch-dispatch-local %s started", version)
 
        runningCmds = make(map[string]*exec.Cmd)
@@ -193,7 +198,7 @@ func (lr *LocalRun) run(dispatcher *dispatch.Dispatcher,
                waitGroup.Add(1)
                defer waitGroup.Done()
 
-               cmd := exec.Command(*crunchRunCommand, "--runtime-engine="+lr.cluster.Containers.RuntimeEngine, uuid)
+               cmd := exec.Command(crunchRunCommand, "--runtime-engine="+lr.cluster.Containers.RuntimeEngine, uuid)
                cmd.Stdin = nil
                cmd.Stderr = os.Stderr
                cmd.Stdout = os.Stderr
@@ -206,7 +211,7 @@ func (lr *LocalRun) run(dispatcher *dispatch.Dispatcher,
                runningCmdsMutex.Lock()
                if err := lr.startCmd(container, cmd); err != nil {
                        runningCmdsMutex.Unlock()
-                       dispatcher.Logger.Warnf("error starting %q for %s: %s", *crunchRunCommand, uuid, err)
+                       dispatcher.Logger.Warnf("error starting %q for %s: %s", crunchRunCommand, uuid, err)
                        dispatcher.UpdateState(uuid, dispatch.Cancelled)
                } else {
                        runningCmds[uuid] = cmd
@@ -256,7 +261,7 @@ Finish:
        }
        if container.State == dispatch.Locked || container.State == dispatch.Running {
                dispatcher.Logger.Warnf("after %q process termination, container state for %v is %q; updating it to %q",
-                       *crunchRunCommand, uuid, container.State, dispatch.Cancelled)
+                       crunchRunCommand, uuid, container.State, dispatch.Cancelled)
                dispatcher.UpdateState(uuid, dispatch.Cancelled)
        }