diff options
author | Benjamin Peterson <benjamin@python.org> | 2015-10-06 04:56:22 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2015-10-06 04:56:22 (GMT) |
commit | 51cd53e152b80614e59fb97fce568e6c700ce981 (patch) | |
tree | cedf604b2b9782a763a7c7a045f3a03eb6f7a96f | |
parent | 0451fb942e63f816b2d8a993d53bc5cbfda7efc8 (diff) | |
download | cpython-51cd53e152b80614e59fb97fce568e6c700ce981.zip cpython-51cd53e152b80614e59fb97fce568e6c700ce981.tar.gz cpython-51cd53e152b80614e59fb97fce568e6c700ce981.tar.bz2 |
reinitialize an Event's Condition with a regular lock (closes #25319)
-rw-r--r-- | Lib/test/lock_tests.py | 8 | ||||
-rw-r--r-- | Lib/threading.py | 2 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
4 files changed, 13 insertions, 1 deletions
diff --git a/Lib/test/lock_tests.py b/Lib/test/lock_tests.py index 2ff75c4..efc464f 100644 --- a/Lib/test/lock_tests.py +++ b/Lib/test/lock_tests.py @@ -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): """ diff --git a/Lib/threading.py b/Lib/threading.py index 27a5511..51205fa 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -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.' @@ -1290,6 +1290,7 @@ Ryan Smith-Roberts Rafal Smotrzyk Eric Snow Dirk Soede +Nir Soffer Paul Sokolovsky Evgeny Sologubov Cody Somerville @@ -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. |