GH-118943: Handle races when moving jit_stencils.h (GH-120690)

Co-authored-by: Kirill Podoprigora <kirill.bast9@mail.ru>
This commit is contained in:
Miro Hrončok 2024-08-06 01:10:40 +02:00 committed by GitHub
parent 5bd72912a1
commit 44659d3927
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 1 deletions

View File

@ -0,0 +1,3 @@
Fix a possible race condition affecting parallel builds configured with
``--enable-experimental-jit``, in which :exc:`FileNotFoundError` could be caused by
another process already moving ``jit_stencils.h.new`` to ``jit_stencils.h``.

View File

@ -221,7 +221,12 @@ class _Target(typing.Generic[_S, _R]):
file.write("\n") file.write("\n")
for line in _writer.dump(stencil_groups): for line in _writer.dump(stencil_groups):
file.write(f"{line}\n") file.write(f"{line}\n")
try:
jit_stencils_new.replace(jit_stencils) jit_stencils_new.replace(jit_stencils)
except FileNotFoundError:
# another process probably already moved the file
if not jit_stencils.is_file():
raise
finally: finally:
jit_stencils_new.unlink(missing_ok=True) jit_stencils_new.unlink(missing_ok=True)