]> 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 2ff75c4ade9b863b71eb573a53ea0a725aaf0958..efc464f4032026f9bb8e227accbdf45eeb6e1ed1 100644 (file)
@@ -305,6 +305,14 @@ class EventTests(BaseTestCase):
         for r, dt in results2:
             self.assertTrue(r)
 
+    def test_reset_internal_locks(self):
+        evt = self.eventtype()
+        old_lock = evt._Event__cond._Condition__lock
+        evt._reset_internal_locks()
+        new_lock = evt._Event__cond._Condition__lock
+        self.assertIsNot(new_lock, old_lock)
+        self.assertIs(type(new_lock), type(old_lock))
+
 
 class ConditionTests(BaseTestCase):
     """
index 27a5511ddc290001d7e7c9d105df98ee68a388af..51205fa8258dff2427bddb2296bb8324b23f1942 100644 (file)
@@ -565,7 +565,7 @@ class _Event(_Verbose):
 
     def _reset_internal_locks(self):
         # private!  called by Thread._reset_internal_locks by _after_fork()
-        self.__cond.__init__()
+        self.__cond.__init__(Lock())
 
     def isSet(self):
         'Return true if and only if the internal flag is true.'
index 34f0a0a73f9a948bb70adc0ea764a6998ecca054..5a30dab80f1030f5528a9395df052d45894cc70e 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1290,6 +1290,7 @@ Ryan Smith-Roberts
 Rafal Smotrzyk
 Eric Snow
 Dirk Soede
+Nir Soffer
 Paul Sokolovsky
 Evgeny Sologubov
 Cody Somerville
index 0c4ea1f09ba51284a8320fd54624542d8f6334fe..eb43f1f2392750d47a7301d0f3055e464dde7f58 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -43,6 +43,9 @@ Core and Builtins
 Library
 -------
 
+- 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.