15640: RunInSingleContainer needs minimum of 128 MiB RAM
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Fri, 4 Oct 2019 14:23:00 +0000 (10:23 -0400)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Fri, 4 Oct 2019 14:23:00 +0000 (10:23 -0400)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

sdk/cwl/arvados_cwl/arvworkflow.py
sdk/cwl/tests/arvados-tests.yml
sdk/cwl/tests/wf/runin-reqs-wf5.cwl [new file with mode: 0644]

index c6bcd04776920186d9973bdf662c1fe060b9b8c2..604ad39de78877b96121fae730eb12ea0da080d6 100644 (file)
@@ -295,6 +295,12 @@ class ArvadosWorkflow(Workflow):
         self.loadingContext.metadata = self.loadingContext.metadata.copy()
         self.loadingContext.metadata["http://commonwl.org/cwltool#original_cwlVersion"] = "v1.0"
 
+        if len(job_res_reqs) == 1:
+            # RAM request needs to be at least 128 MiB or the workflow
+            # runner itself won't run reliably.
+            if job_res_reqs[0].get("ramMin", 1024) < 128:
+                job_res_reqs[0]["ramMin"] = 128
+
         wf_runner = cmap({
             "class": "CommandLineTool",
             "baseCommand": "cwltool",
index 0eb606d25c276f8a793293b3212785bccbf8c5e2..99aee3795678243f4298e798cdcfe744b4a7f08a 100644 (file)
   tool: wf/runin-reqs-wf4.cwl
   doc: "RunInSingleContainer discovers static resource request in subworkflow steps"
 
+- job: null
+  output:
+    out: null
+  tool: wf/runin-reqs-wf5.cwl
+  doc: "RunInSingleContainer has minimum 128 MiB RAM"
+
 - job: secondaryFiles/inp3.yml
   output: {}
   tool: secondaryFiles/example1.cwl
diff --git a/sdk/cwl/tests/wf/runin-reqs-wf5.cwl b/sdk/cwl/tests/wf/runin-reqs-wf5.cwl
new file mode 100644 (file)
index 0000000..34d7b2c
--- /dev/null
@@ -0,0 +1,62 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+class: Workflow
+cwlVersion: v1.0
+$namespaces:
+  arv: "http://arvados.org/cwl#"
+inputs:
+  count:
+    type: int[]
+    default: [1, 2, 3, 4]
+  script:
+    type: File
+    default:
+      class: File
+      location: check_mem.py
+outputs:
+  out: []
+requirements:
+  SubworkflowFeatureRequirement: {}
+  ScatterFeatureRequirement: {}
+  InlineJavascriptRequirement: {}
+  StepInputExpressionRequirement: {}
+hints:
+  DockerRequirement:
+    dockerPull: arvados/jobs:1.4.0.20190604172024
+steps:
+  substep:
+    in:
+      count: count
+      script: script
+    out: []
+    hints:
+      - class: arv:RunInSingleContainer
+      - class: arv:APIRequirement
+    scatter: count
+    run:
+      class: Workflow
+      id: mysub
+      inputs:
+        count: int
+        script: File
+      outputs: []
+      steps:
+        sleep1:
+          in:
+            count: count
+            script: script
+          out: []
+          run:
+            class: CommandLineTool
+            id: subtool
+            hints:
+              - class: ResourceRequirement
+                ramMin: 32
+            inputs:
+              count:
+                type: int
+              script: File
+            outputs: []
+            arguments: [python, $(inputs.script), "128"]