X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/1f2bdbd78e4dad9d831297c6ac280dc085733b5e..322599005b9425223195f8b903f0aa2cfc4b7db9:/services/crunch-dispatch-local/crunch-dispatch-local.go diff --git a/services/crunch-dispatch-local/crunch-dispatch-local.go b/services/crunch-dispatch-local/crunch-dispatch-local.go index 36d149272f..ae09c52f21 100644 --- a/services/crunch-dispatch-local/crunch-dispatch-local.go +++ b/services/crunch-dispatch-local/crunch-dispatch-local.go @@ -153,7 +153,21 @@ func (lr *LocalRun) run(dispatcher *dispatch.Dispatcher, return } + defer func() { <-lr.concurrencyLimit }() + + select { + case c := <-status: + // Check for state updates after possibly + // waiting to be ready-to-run + if c.Priority == 0 { + goto Finish + } + default: + break + } + waitGroup.Add(1) + defer waitGroup.Done() cmd := exec.Command(*crunchRunCommand, uuid) cmd.Stdin = nil @@ -207,9 +221,10 @@ func (lr *LocalRun) run(dispatcher *dispatch.Dispatcher, delete(runningCmds, uuid) runningCmdsMutex.Unlock() } - waitGroup.Done() } +Finish: + // If the container is not finalized, then change it to "Cancelled". err := dispatcher.Arv.Get("containers", uuid, nil, &container) if err != nil {