Bug #19678
closedarvados-cwl-runner: id name must be a string
Description
arvados-cwl-runner errors if there is an id: name that is not a string, when running a cwl file.
Minimal example (using a record to store a first and last name):
cwl file:
---
class: Workflow
cwlVersion: v1.1
inputs:
- type:
fields:
- name: first
type: string
- name: last
type: string
type: record
id: name
outputs:
- type:
fields:
- name: first
type: string
- name: last
type: string
type: record
id: processed_name
outputSource: name
steps: []
input.json:
{"name":{"first":"foo","last":"bar"}}
When running the above file with cwltool, it produces the expected output:
{"processed_name": {"first": "foo", "last": "bar"}}
When running with arvados-cwl-runner --local minimal.cwl input.json it produces the following error:
ERROR Input object failed validation:
identifier field 'ordereddict([('first', 'foo'), ('last', 'bar')])' must be a string
The above failing workflow can be made to work by changing the inputs called name to be called notname instead, so it seems likely the bug may have something to do with treating name in a special way.
Updated by Peter Amstutz over 3 years ago
I think what is happening is that name is a de facto reserved word (because CWL parameter definitions also have an identifier field called name). It should handle it better (either not fail, or give a more useful error message), but as you have already discovered, the workaround is simply to call the parameter something else.
Updated by Peter Amstutz over 3 years ago
- Related to Bug #19571: arvados-cwl-runner scattering bug added
Updated by Peter Amstutz over 3 years ago
- Related to deleted (Bug #19571: arvados-cwl-runner scattering bug)
Updated by Peter Amstutz over 3 years ago
- Is duplicate of Bug #19571: arvados-cwl-runner scattering bug added
Updated by Peter Amstutz over 3 years ago
- Target version set to 2022-11-09 sprint
- Assigned To set to Peter Amstutz
Updated by Peter Amstutz over 3 years ago
- Related to Bug #19599: ContextualVersionConflict 'importlib-metadata<5,>=0.23; python_version == "3.7"'), {'argcomplete'}) added