From 7a194de4a1ea6638c2500fe89979d3610f37e1f2 Mon Sep 17 00:00:00 2001 From: Peter Amstutz Date: Tue, 27 Sep 2016 16:30:27 -0400 Subject: [PATCH] 10129: Rename del_listing to trim_listing and add docstring about what it is for. --- sdk/cwl/arvados_cwl/arvworkflow.py | 4 ++-- sdk/cwl/arvados_cwl/runner.py | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/sdk/cwl/arvados_cwl/arvworkflow.py b/sdk/cwl/arvados_cwl/arvworkflow.py index 3bb0a34197..f4ce44670d 100644 --- a/sdk/cwl/arvados_cwl/arvworkflow.py +++ b/sdk/cwl/arvados_cwl/arvworkflow.py @@ -11,7 +11,7 @@ from cwltool.pathmapper import adjustFileObjs, adjustDirObjs import ruamel.yaml as yaml -from .runner import upload_docker, upload_dependencies, del_listing +from .runner import upload_docker, upload_dependencies, trim_listing from .arvtool import ArvadosCommandTool logger = logging.getLogger('arvados.cwl-runner') @@ -23,7 +23,7 @@ def upload_workflow(arvRunner, tool, job_order, project_uuid, update_uuid): packed = pack(document_loader, workflowobj, uri, tool.metadata) - adjustDirObjs(job_order, del_listing) + adjustDirObjs(job_order, trim_listing) main = [p for p in packed["$graph"] if p["id"] == "#main"][0] for inp in main["inputs"]: diff --git a/sdk/cwl/arvados_cwl/runner.py b/sdk/cwl/arvados_cwl/runner.py index aafe7c3dd4..07f85bbc47 100644 --- a/sdk/cwl/arvados_cwl/runner.py +++ b/sdk/cwl/arvados_cwl/runner.py @@ -23,7 +23,16 @@ logger = logging.getLogger('arvados.cwl-runner') cwltool.draft2tool.ACCEPTLIST_RE = re.compile(r"^[a-zA-Z0-9._+-]+$") -def del_listing(obj): +def trim_listing(obj): + """Remove 'listing' field from Directory objects that are keep references. + + When Directory objects represent Keep references, it redundant and + potentially very expensive to pass fully enumerated Directory objects + between instances of cwl-runner (e.g. a submitting a job, or using the + RunInSingleContainer feature), so delete the 'listing' field when it is + safe to do so. + """ + if obj.get("location", "").startswith("keep:") and "listing" in obj: del obj["listing"] if obj.get("location", "").startswith("_:"): @@ -135,7 +144,7 @@ class Runner(object): self.job_order.get("id", "#"), False) - adjustDirObjs(self.job_order, del_listing) + adjustDirObjs(self.job_order, trim_listing) if "id" in self.job_order: del self.job_order["id"] -- 2.30.2