https://github.com/python/cpython/commit/27a529277486c770a5a8ef2a01c151b5feeb2eca
commit: 27a529277486c770a5a8ef2a01c151b5feeb2eca
branch: 3.13
author: Miss Islington (bot) <31488909+miss-isling...@users.noreply.github.com>
committer: brandtbucher <brandtbuc...@gmail.com>
date: 2024-08-08T13:37:49-07:00
summary:

[3.13] GH-118943: Handle races when moving jit_stencils.h (GH-122709)

(cherry picked from commit 44659d392751f0161a0f958fec39ad013da45427)

Co-authored-by: Miro HronĨok <m...@hroncok.cz>
Co-authored-by: Kirill Podoprigora <kirill.ba...@mail.ru>

files:
A Misc/NEWS.d/next/Build/2024-06-18-15-28-25.gh-issue-118943.aie7nn.rst
M Tools/jit/_targets.py

diff --git 
a/Misc/NEWS.d/next/Build/2024-06-18-15-28-25.gh-issue-118943.aie7nn.rst 
b/Misc/NEWS.d/next/Build/2024-06-18-15-28-25.gh-issue-118943.aie7nn.rst
new file mode 100644
index 00000000000000..997c990a96e476
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2024-06-18-15-28-25.gh-issue-118943.aie7nn.rst
@@ -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``.
diff --git a/Tools/jit/_targets.py b/Tools/jit/_targets.py
index 5604c429bcf8ad..73d10a128756eb 100644
--- a/Tools/jit/_targets.py
+++ b/Tools/jit/_targets.py
@@ -221,7 +221,12 @@ def build(
                 file.write("\n")
                 for line in _writer.dump(stencil_groups):
                     file.write(f"{line}\n")
-            jit_stencils_new.replace(jit_stencils)
+            try:
+                jit_stencils_new.replace(jit_stencils)
+            except FileNotFoundError:
+                # another process probably already moved the file
+                if not jit_stencils.is_file():
+                    raise
         finally:
             jit_stencils_new.unlink(missing_ok=True)
 

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to