Commit 15982aad authored by Benjamin Peterson's avatar Benjamin Peterson

reinitialize an Event's Condition with a regular lock (closes #25319)

parent 601953b6
......@@ -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):
"""
......
......@@ -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."""
......
......@@ -1315,6 +1315,7 @@ Ryan Smith-Roberts
Rafal Smotrzyk
Eric Snow
Dirk Soede
Nir Soffer
Paul Sokolovsky
Evgeny Sologubov
Cody Somerville
......
......@@ -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.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment