А именно:
- При монтировании NFS.
- Происходит в наших системах EL9 (5.14.0-362.18.1.el9_3.x86_64). Не встречается ни в одной из наших старых систем Centos 7 (различные версии ядра 3.10).
- В подкаталоге. (Не происходит при монтировании «верхнего уровня»).
- Код часто «ломается» из-за того, что os.cwd() возвращает «нет такого файла или каталога».
- 5.14.0-427.el9.x86_64 ( Альма)
- 5.14.0-362.24.1.el9_3.x86_64 (Алма)
- 5.14.0-362.18.1.el9_3.x86_64 ( Альма)
- 5.14.0-362.8.1.el9_3.x86_64 (RHEL)
Код: Выделить всё
#!/usr/bin/python3 -u
import os
import multiprocessing
import time
if __name__=="__main__":
multiprocessing.set_start_method("spawn")
count = 0
while True:
try:
os.getcwd()
pool = multiprocessing.Pool(10)
pool.close()
pool.terminate()
count += 1
except Exception as e:
print(f"Failed after {count} iterations")
print(e)
break
Похоже, это связано с Pool.terminate(), как будто перед этим вы добавите даже короткий (0,05) сон, проблема перестанет возникать (по крайней мере, ее невозможно было воспроизвести в «разумные» промежутки времени, где вышеописанное не удается за
Но мне интересно, может ли кто-нибудь пролить свет на то, что здесь может быть не так? Я не могу определить, может ли это быть файловый сервер, ядро Linux, что-то внутри Python или... ну, вообще где-то еще.
При включенном rpcdebug мы получаем:
Код: Выделить всё
Apr 24 11:58:47 build-2 kernel: NFS: release(lib/libgcc_s.so.1)
Apr 24 11:58:47 build-2 kernel: NFS: release(lib/libc.so.6)
Apr 24 11:58:47 build-2 kernel: NFS: release(locale/locale-archive)
Apr 24 11:58:47 build-2 kernel: NFS reply getattr: -512
Apr 24 11:58:47 build-2 kernel: nfs_revalidate_inode: (0:53/3834468196) getattr failed, error=-512
Apr 24 11:58:47 build-2 kernel: NFS: lookup(/python_race)
Apr 24 11:58:47 build-2 kernel: NFS call lookup /python_race
Apr 24 11:58:47 build-2 kernel: RPC: xs_tcp_send_request(168) = 0
Apr 24 11:58:47 build-2 kernel: NFS: release(bin/python3.11)
Также обнаружил, что это не происходит, если вы добавляете пул.join() до завершения()
Подробнее здесь: https://stackoverflow.com/questions/784 ... rom-os-cwd
Мобильная версия