Skip to content

Commit d5d22be

Browse files
committed
ENH: Always fsync pickle files
1 parent 536c57d commit d5d22be

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

nipype/utils/filemanip.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -790,9 +790,9 @@ def read_stream(stream, logger=None, encoding=None):
790790

791791

792792
def savepkl(filename, record, versioning=False):
793-
pklopen = gzip.open if filename.endswith('.pklz') else open
794793
with SoftFileLock('%s.lock' % filename):
795-
with pklopen(filename, 'wb') as pkl_file:
794+
with open(filename, 'wb') as fobj:
795+
pkl_file = gzip.GzipFile(fileobj=fobj) if filename.endswith('.pklz') else fobj
796796
if versioning:
797797
from nipype import __version__ as version
798798
metadata = json.dumps({'version': version})
@@ -801,6 +801,9 @@ def savepkl(filename, record, versioning=False):
801801
pkl_file.write('\n'.encode('utf-8'))
802802

803803
pickle.dump(record, pkl_file)
804+
# Pickle files need to be available immediately, so force a sync
805+
fobj.flush()
806+
os.fsync(fobj.fileno())
804807

805808

806809
rst_levels = ['=', '-', '~', '+']

0 commit comments

Comments
 (0)