-
Notifications
You must be signed in to change notification settings - Fork 533
ENH: Always fsync pickle files #3083
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
@effigies - in a conversation with @oesteban we discussed that the @oesteban mentioned that the sync issue appears to arise in networked file systems, so we also discussed copying over the timeout code from SGELikePluginBase to load pickle. |
I thought the lock was for reading and writing... |
in nipype, reading never happens before writing is done. the only issue that could take place is that the filesystem has not synced yet, but even in that case the reading node should be able to assume that writing has been completed. this is because a job doesn't get released till it's dependent jobs are finished (which means result writing has been done). |
I think the |
Okay. Reopened.
I personally find working with the config file to be a pain, especially inside containers. If we make syncing the default behavior, people can run with eatmydata to get whatever performance boosts are available by being less paranoid. (I suspect they'll be minimal, as the time spent in the control thread is pretty small relative to most workflow tasks.) In any event, should I add a |
having the |
This seems to reliably produce failures to find |
@effigies - that's really weird. why would this change exacerbate the problem. might be good to follow up. on one of the stackoverflow threads i read about the following:
|
Yeah, I don't know it's the same problem. But I think we can say that if |
Okay. Restored the branch if you have thoughts on where to go with this. |
@effigies: can we add the timeout check to load_pkl? a version of this is here: https://github.com/nipy/nipype/blob/master/nipype/pipeline/plugins/base.py#L476 |
Summary
Fully qualifying results file names does not seem to have resolved the issue with finding the files, making it more likely that this is a filesystem synchronization issue. This PR adds an
fsync
call for Pickle files, specifically.This required a slight refactor for handling gzip (
pklz
) files.Hopefully:
List of changes proposed in this PR (pull-request)
Acknowledgment