[Python-checkins] cpython (3.2): Fix possible "file already exists" error when running the tests in parallel.

antoine.pitrou python-checkins at python.org
Sat Apr 16 18:55:21 CEST 2011


http://hg.python.org/cpython/rev/11c489dc8cbd
changeset:   69402:11c489dc8cbd
branch:      3.2
parent:      69400:59483e207650
user:        Antoine Pitrou <solipsis at pitrou.net>
date:        Sat Apr 16 18:53:59 2011 +0200
summary:
  Fix possible "file already exists" error when running the tests in parallel.

This is a perfect example of LBYL going wrong: that code could be executed
by several workers in parallel, and os.mkdir() attempted on the same
path by multiple processes.

files:
  Lib/test/regrtest.py |  6 +++++-
  Misc/NEWS            |  2 ++
  2 files changed, 7 insertions(+), 1 deletions(-)


diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -162,6 +162,7 @@
 import io
 import sys
 import time
+import errno
 import traceback
 import warnings
 import unittest
@@ -1511,8 +1512,11 @@
     if sysconfig.is_python_build():
         TEMPDIR = os.path.join(sysconfig.get_config_var('srcdir'), 'build')
         TEMPDIR = os.path.abspath(TEMPDIR)
-        if not os.path.exists(TEMPDIR):
+        try:
             os.mkdir(TEMPDIR)
+        except OSError as e:
+            if e.errno != errno.EEXIST:
+                raise
 
     # Define a writable temp dir that will be used as cwd while running
     # the tests. The name of the dir includes the pid to allow parallel
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -269,6 +269,8 @@
 Tests
 -----
 
+- Fix possible "file already exists" error when running the tests in parallel.
+
 - Issue #11719: Fix message about unexpected test_msilib skip on non-Windows
   platforms. Patch by Nadeem Vawda.
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list