[Zodb-checkins] SVN: zdaemon/trunk/src/zdaemon/tests/testzdrun.py
testRunIgnoresParentSignals(): Try to fix an
Tim Peters
tim.one at comcast.net
Thu Dec 15 15:30:14 EST 2005
Log message for revision 40791:
testRunIgnoresParentSignals(): Try to fix an
intermittent test-killing race between this test
and zdrun.py fighting over who deletes the
test socket first.
Changed:
U zdaemon/trunk/src/zdaemon/tests/testzdrun.py
-=-
Modified: zdaemon/trunk/src/zdaemon/tests/testzdrun.py
===================================================================
--- zdaemon/trunk/src/zdaemon/tests/testzdrun.py 2005-12-15 16:58:31 UTC (rev 40790)
+++ zdaemon/trunk/src/zdaemon/tests/testzdrun.py 2005-12-15 20:30:13 UTC (rev 40791)
@@ -248,7 +248,22 @@
# Kill the process.
send_action('exit\n', zdrun_socket)
finally:
- shutil.rmtree(tmp)
+ # Remove the tmp directory.
+ # Caution: this is delicate. The code here used to do
+ # shutil.rmtree(tmp), but that suffers a sometimes-fatal
+ # race with zdrun.py. The 'testsock' socket is created
+ # by zdrun in the tmp directory, and zdrun tries to
+ # unlink it. If shutil.rmtree sees 'testsock' too, it
+ # will also try to unlink it, but zdrun may complete
+ # unlinking it before shutil gets to it (there's more
+ # than one process here). So, in effect, we code a
+ # 1-level rmtree inline here, suppressing errors.
+ for fname in os.listdir('.'):
+ try:
+ os.unlink(os.path.join(tmp, fname))
+ except os.error:
+ pass
+ os.rmdir(tmp)
def testUmask(self):
# people have a strange tendency to run the tests as root
More information about the Zodb-checkins
mailing list