-
Notifications
You must be signed in to change notification settings - Fork 532
copy files to avoid concurrency issues in mris_expand #1938
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
Conversation
Codecov Report
@@ Coverage Diff @@
## master #1938 +/- ##
==========================================
+ Coverage 72.47% 72.47% +<.01%
==========================================
Files 1063 1063
Lines 54148 54148
Branches 7811 7811
==========================================
+ Hits 39244 39246 +2
+ Misses 13684 13682 -2
Partials 1220 1220
Continue to review full report at Codecov.
|
This makes no sense to me. Why should one flow of a mapnode be able to affect the other side, if symlinked? They shouldn't even be reading the same files, so even if they did for some reason modify them, it shouldn't produce a race condition. Further, the specific issue seems to be the link disappearing between @satra Would appreciate your eyes on this. The error is reported here. |
@effigies - will do after lunch today, but your assessment seems correct. @chrisfilo - this seems quite familiar to the previous error where multiple workflows were running on the same working directory tree in parallel. |
I was running only one instance of fmriprep with multiproc set to 6 and only one subject. Not sure how two workflows could be running at the same time in such scenario. Furthermore, this is how I have been testing fmriprep for months and never run into this before. It could have something to do with the fact that both work and outout are mounted from host (Windows with hyper-v), but then again this was not a problem before (and I have run a lot of workflows). However, if this is the issue we play safe and copy files. |
If it's mounted from a Windows host, then I'd think symlinks shouldn't work correctly. Maybe it'd be better to detect this case (if we can) in Can you try something like this from inside the Docker image, in a directory that's mounted from the host: echo teststring > file_a
python -c <<END;
import os
os.symlink("file_a", "file_b")
link_val = os.readlink("file_b")
contents_a = open("file_a", 'r').read()
contents_b = open("file_b", 'r').read()
print """Link: file_b -> {}
file_a: {}
file_b: {}
""".format(link_val, contents_a, contents_b)
END; And see what Also, what does |
The issue might be that we are linking across two volumes (I'll test that). In the meanwhile the mount info
|
Linking within one volume works as expected:
|
Hmm. So it's CIFS implementing it as I wouldn't think linking across volumes should make a difference. I wonder if we should add an option to disable symlinks in the config file, and we could suggest people running on Windows to disable them. Edit: Annoyingly, "load" here seems to mean "writing/reading 8 mfsymlinks" in rapid succession. |
I proposed #1941 because I think it's a better option than this, and it only took a couple minutes to write. If we'd prefer some other option, I'm open to it. Detecting CIFS would require depending on psutil, to the best of my searching. |
I've tried using a single mount point and got the same issue. I'll try using internal Docker storage as working directory next. |
No description provided.