-
-
Notifications
You must be signed in to change notification settings - Fork 232
Updatable inputs #317
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Updatable inputs #317
Conversation
Extends the existing functionality of staging "writable" files to the output directory. If Enforces sequencing of updates by incrementing a "generation" number with each update (*). Files can only be update by one workflow step at a time, and the updated file must be passed explicitly to downstream steps. If two steps try to update a file of the same generation it will raise an error. (*) In writing this, I realized that while write-write conflicts are detected, read-write conflicts are not. So the lock management probably needs a bit more work. |
@gijzelaerr this is ready for testing |
awesome! Amazing! Thanks! I'm trying it out now, but I run into troubles running your test/example:
|
To enable the feature is hidden behind the flag --enable-ext |
cwltool/job.py
Outdated
if vol.type in ("File", "Directory") or (inplace_update and | ||
vol.type in ("WritableFile", "WritableDirectory")): | ||
if os.path.exists(vol.target): | ||
os.remove(vol.target) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is giving me:
Traceback (most recent call last):
File "/home/gijs/Work/cwltool/cwltool/job.py", line 209, in _execute
relink_initialworkdir(self.generatemapper, inplace_update=self.inplace_update)
File "/home/gijs/Work/cwltool/cwltool/job.py", line 99, in relink_initialworkdir
os.remove(vol.target)
OSError: [Errno 21] Is a directory: '/tmp/tmpC7NZ5I/1484694604_1284.hh_vv.ms'
[job casa_flagdata.cwl] completed permanentFail
{}
This fails in the case of a Directory input/output
here is my CWL file |
Oh, I forgot to even test it for WritableDirectory. Will take a look. |
@gijzelaerr try it now, updatable directories should be fixed. |
@tetron FYI: I merged in master |
I think the merge from master broke something?
|
yes, f812858 seems to eat the |
f812858 gives me
|
Oops, sorry. Looks like I did the merge from a stale browser window. I'll fix it now |
@tetron I've undone the merge from master with a force push and I'll keep my hands off this PR; mea culpa! |
Conflicts: cwltool/process.py
aa320ec Merge pull request common-workflow-language#342 from common-workflow-language/fix-mystery-package-errors 3c6eaff Update for rename of argparse2cwl to argparse2tool b14404b remove errant jsonldPredicate 7f116da Merge pull request common-workflow-language#339 from common-workflow-language/dockerOutputDirectory 4f65d1f Add test for dockerOutputDirectory option of DockerRequirement. cb1f928 Merge pull request common-workflow-language#335 from common-workflow-language/output-literals d8b6c8f Add tests for file and directory literals in output as produced by expression tool. ee3bb1c Merge pull request common-workflow-language#324 from common-workflow-language/secondaryfiles-array 5e6c2d4 Add NLeSC's Xenon cbe1c8d Merge pull request common-workflow-language#334 from StarvingMarvin/master 8300e43 output ids must start with '#' in draft-2 f87d218 draft-3 test fixes: explicit output for args 8b10319 Fixes for draft-2 tests: adding explicit args output 83ed4b4 Merge remote-tracking branch 'rabix-cwl/master' e0a5e7c Merge pull request common-workflow-language#328 from StarvingMarvin/master d906c4a dir4 test fix 21bdcaf Merge remote-tracking branch 'upstream/master' dee0f4e Disabled checksum check for listing input dir fc4cb0f Added args output and empty.json for null jobs a4950f4 Update tools list 8e1d67c Add Rabix Bunny CI badge 2a5b95e fixing mentions to draft3/4 1356c45 Add test for secondaryFiles with arrays b60125b Single instead of double quotes in doc 179835b Merge pull request common-workflow-language#319 from common-workflow-language/test-cwl-out2 ed40737 Add additional test for cwl.output.json behavior. a217bb6 Merge pull request common-workflow-language#317 from StarvingMarvin/master 8dd69f2 fixing test in v1.0 and v1.1.0-dev1 e831c20 Merge pull request common-workflow-language#314 from common-workflow-language/test-requirements-on-steps 8cad6f1 Add test for requirements/hints on workflow steps. 7679adb Merge pull request common-workflow-language#308 from common-workflow-language/embedded-subworkflow-test 1582677 Tighten up formatting 779c2d4 Add test for embedded subworkflow e22a9c2 Merge pull request common-workflow-language#307 from alaindomissy/patch-3 125cb5f Update UserGuide.yml 99f4f9f Merge pull request common-workflow-language#303 from common-workflow-language/include-stdin-in-docs 5324dbb put stdin shortcut in correct place git-subtree-dir: cwltool/schemas git-subtree-split: aa320ec
just did a rerun without debug, I think i have the same error
|
@gijzelaerr I'm pretty swamped at the moment, would you be able to look into this? It looks like right at the end in |
It seems to be a bit more complex than that. When I add support for recursive dir copy there I get:
|
Conflicts: cwltool/extensions.yml
@gijzelaerr how is it working now? |
same error, full output here. https://gist.github.com/gijzelaerr/11115e8ece7ef5e68e4a0823a77a24bd |
@gijzelaerr Thanks for the update. Can you try again w/o caching? |
same.
|
@gijzelaerr as a workaround, can you try Looks like it is trying to resolve a relative path without having a base directory to start from. |
No luck, same issue.
|
@gijzelaerr Bummer. How hard would it be to make a complete minimal test case with data included? |
here you go. https://github.com/gijzelaerr/cwlfail actually i think I isolated the error a bit more, it only occurs if you specify the |
Conflicts: cwltool/draft2tool.py cwltool/process.py
@gijzelaerr thanks for the minimal test case, it was extremely helpful. A bit late on this, but moving Directory outputs to their final location should be much improved now (your test case does the right thing). |
fixing test in v1.0 and v1.1.0-dev1
Not ready to merge!
This is for tracking work on the feature of being able to safely update input files in-place.