15296: Shutdown cancels processes unless running inside a container
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Tue, 18 Jun 2019 17:28:40 +0000 (13:28 -0400)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Tue, 18 Jun 2019 17:28:40 +0000 (13:28 -0400)
Suppress errors in cancel request (such as a double-cancel race).

Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

sdk/cwl/arvados_cwl/executor.py

index 190ea35e2a3c2d21b6739db2b7d61e748b80fd7d..9a94095ae8648d7107cfd1d4025098c117866802 100644 (file)
@@ -780,11 +780,16 @@ http://doc.arvados.org/install/install-api-server.html#disable_api_methods
             if self.pipeline:
                 self.api.pipeline_instances().update(uuid=self.pipeline["uuid"],
                                                      body={"state": "Failed"}).execute(num_retries=self.num_retries)
-            if runtimeContext.submit and isinstance(tool, Runner):
-                runnerjob = tool
-                if runnerjob.uuid and self.work_api == "containers":
-                    self.api.container_requests().update(uuid=runnerjob.uuid,
-                                                     body={"priority": "0"}).execute(num_retries=self.num_retries)
+
+            if self.work_api == "containers" and not current_container:
+                # Not running in a crunch container, so cancel any outstanding processes.
+                for p in self.processes:
+                    try:
+                        self.api.container_requests().update(uuid=p,
+                                                             body={"priority": "0"}
+                        ).execute(num_retries=self.num_retries)
+                    except Exception:
+                        pass
         finally:
             self.workflow_eval_lock.release()
             self.task_queue.drain()