16834: Comments about parsing "crunch-run --list" output.
authorTom Clegg <tom@tomclegg.ca>
Tue, 15 Sep 2020 14:49:13 +0000 (10:49 -0400)
committerTom Clegg <tom@tomclegg.ca>
Tue, 15 Sep 2020 14:49:13 +0000 (10:49 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@tomclegg.ca>

lib/dispatchcloud/worker/worker.go

index f903c0a5a112291cc894b1d22f661a4ad93ba170..517a5d193e328b8f9f2ae2f1ce9d9b4db718ddf6 100644 (file)
@@ -386,9 +386,23 @@ func (wkr *worker) probeRunning() (running []string, reportsBroken, ok bool) {
 
        staleRunLock := false
        for _, s := range strings.Split(string(stdout), "\n") {
-               if s == "broken" {
+               // Each line of the "crunch-run --list" output is one
+               // of the following:
+               //
+               // * a container UUID, indicating that processes
+               //   related to that container are currently running.
+               //   Optionally followed by " stale", indicating that
+               //   the crunch-run process itself has exited (the
+               //   remaining process is probably arv-mount).
+               //
+               // * the string "broken", indicating that the instance
+               //   appears incapable of starting containers.
+               //
+               // See ListProcesses() in lib/crunchrun/background.go.
+               if s == "" {
+                       // empty string following final newline
+               } else if s == "broken" {
                        reportsBroken = true
-               } else if s == "" {
                } else if toks := strings.Split(s, " "); len(toks) == 1 {
                        running = append(running, s)
                } else if toks[1] == "stale" {