Alexei Colin added the comment:
Can confirm that this BlockingIOError happens on GPFS (alpine) on Summit
supercomputer, tested with Python 3.8 and 3.10a7.
I found that it happens only for file sizes above 65536. Minimal example:
This filesize works:
$ rm -f srcfile dstfile && truncate --size 65535 srcfile && python3.10 -c
"import shutil; shutil.copyfile(b'srcfile', b'dstfile')"
This file size (and larger) does not work:
$ rm -f srcfile dstfile && truncate --size 65536 srcfile && python3.10 -c
"import shutil; shutil.copyfile(b'srcfile', b'dstfile')"
Traceback (most recent call last):
File "", line 1, in
File "/.../usr/lib/python3.10/shutil.py", line 265, in copyfile
_fastcopy_sendfile(fsrc, fdst)
File "/.../usr/lib/python3.10/shutil.py", line 162, in _fastcopy_sendfile
raise err
File "/.../usr/lib/python3.10/shutil.py", line 142, in _fastcopy_sendfile
sent = os.sendfile(outfd, infd, offset, blocksize)
BlockingIOError: [Errno 11] Resource temporarily unavailable: b'srcfile' ->
b'dstfile'
I tried patching shutil.py to retry the the call on this EAGAIN, but subsequent
attempts fail with EAGAIN again indefinitely.
I also use OP's workaround: set _USE_CP_SENDFILE = False in shutil.py
--
nosy: +alexeicolin
___
Python tracker
<https://bugs.python.org/issue43743>
___
___
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com