]> granicus.if.org Git - python/commitdiff
reinitialize an Event's Condition with a regular lock (closes #25319)
authorBenjamin Peterson <benjamin@python.org>
Tue, 6 Oct 2015 04:56:22 +0000 (21:56 -0700)
committerBenjamin Peterson <benjamin@python.org>
Tue, 6 Oct 2015 04:56:22 +0000 (21:56 -0700)
Lib/test/lock_tests.py
Lib/threading.py
Misc/ACKS
Misc/NEWS

index 42a7d8216352a7351eb7df21a6a474b87f5b1999..462ecefb3639dee7e9a8d785b7d8e9bf8d8a18e8 100644 (file)
@@ -388,6 +388,14 @@ class EventTests(BaseTestCase):
         b.wait_for_finished()
         self.assertEqual(results, [True] * N)
 
+    def test_reset_internal_locks(self):
+        evt = self.eventtype()
+        old_lock = evt._cond._lock
+        evt._reset_internal_locks()
+        new_lock = evt._cond._lock
+        self.assertIsNot(new_lock, old_lock)
+        self.assertIs(type(new_lock), type(old_lock))
+
 
 class ConditionTests(BaseTestCase):
     """
index 37aa3b8ddc04111cdc255fa9cba9edeafef7c284..80f809ce2fc03da2c74532f91d77e027ecd0eae6 100644 (file)
@@ -496,7 +496,7 @@ class Event:
 
     def _reset_internal_locks(self):
         # private!  called by Thread._reset_internal_locks by _after_fork()
-        self._cond.__init__()
+        self._cond.__init__(Lock())
 
     def is_set(self):
         """Return true if and only if the internal flag is true."""
index a40545a89b92601b2e3fa71d5b4fee13ec196f07..b9b3e7bb7c73c1d0fb9c294e21dcecad719a74ea 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1315,6 +1315,7 @@ Ryan Smith-Roberts
 Rafal Smotrzyk
 Eric Snow
 Dirk Soede
+Nir Soffer
 Paul Sokolovsky
 Evgeny Sologubov
 Cody Somerville
index d7dd962b8b5732ea1448301cc835e5490b6d37a1..70f3a5155a70ea66e3b3bf4d89b4b6f9f5e8582c 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -100,6 +100,9 @@ Library
   submit a coroutine to a loop from another thread, returning a
   concurrent.futures.Future.  By Vincent Michel.
 
+- Issue #25319: When threading.Event is reinitialized, the underlying condition
+  should use a regular lock rather than a recursive lock.
+
 - Issue #25232: Fix CGIRequestHandler to split the query from the URL at the
   first question mark (?) rather than the last. Patch from Xiang Zhang.