-
-
Notifications
You must be signed in to change notification settings - Fork 231
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
Staging input files in a non-writable sub-directory fails on Linux #1042
Comments
Why doesn't it have write permissions? |
I am not sure why tbh. It is quite strange, running the same tool on Mac works fine but on Linux it fails (both on the Jenkins run and local Ubuntu). |
I think I've figured out the issue here (although I am not sure of the best solution). tl;dr it's basically docker being silly with nested mount paths. Why it's fine on mac and not linux I don't know. cwltool version: 3.1.20211107152837 If I run the cwltool below through docker I get the following logs:
Note that After running the workflow we see that some stagnant empty files are left over.
If we have a look at the whale.txt file there we see that it's empty and it's owned by root.
This file cannot be deleted by the user
Nor does it have the same ionode as the original file
Reproduce with: CWLTOOL: class: CommandLineTool
cwlVersion: v1.0
baseCommand:
- ls
- staged
inputs:
- id: infiles
type: File[]
outputs:
- id: outfile
type: File
outputBinding:
glob: staged/whale.txt
requirements:
- class: InitialWorkDirRequirement
listing:
- entry: >-
${ return { 'class': 'Directory', 'listing': inputs.infiles,
'basename': 'staged'} }
- class: InlineJavascriptRequirement
hints:
- class: DockerRequirement
dockerPull: 'debian:stretch-slim' Input:
whale.txt
|
Expected Behavior
Completed run.
Actual Behavior
Executing on Mac this completes, but on Linux it fails due to trying to delete and not having write permissions for the staged file (discovered by Jenkins, confirmed on a local Ubuntu machine).
Setting the folder to be staged as
writable: true
gets past this error as it avoids callingos.remove(host_outdir_tgt)
``
Workflow Code
Workflow code can be found here:
common-workflow-language/common-workflow-language@09a8975
Full Traceback
Your Environment
Check using
cwltool --version
The text was updated successfully, but these errors were encountered: