changeset: 98548:69a26f0800b3 branch: 2.7 parent: 98536:45a04eadefd6 user: Benjamin Peterson date: Mon Oct 05 21:56:22 2015 -0700 files: Lib/test/lock_tests.py Lib/threading.py Misc/ACKS Misc/NEWS description: reinitialize an Event's Condition with a regular lock (closes #25319) diff -r 45a04eadefd6 -r 69a26f0800b3 Lib/test/lock_tests.py --- a/Lib/test/lock_tests.py Sun Oct 04 13:52:40 2015 +0300 +++ b/Lib/test/lock_tests.py Mon Oct 05 21:56:22 2015 -0700 @@ -305,6 +305,14 @@ 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 -r 45a04eadefd6 -r 69a26f0800b3 Lib/threading.py --- a/Lib/threading.py Sun Oct 04 13:52:40 2015 +0300 +++ b/Lib/threading.py Mon Oct 05 21:56:22 2015 -0700 @@ -565,7 +565,7 @@ 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.' diff -r 45a04eadefd6 -r 69a26f0800b3 Misc/ACKS --- a/Misc/ACKS Sun Oct 04 13:52:40 2015 +0300 +++ b/Misc/ACKS Mon Oct 05 21:56:22 2015 -0700 @@ -1290,6 +1290,7 @@ Rafal Smotrzyk Eric Snow Dirk Soede +Nir Soffer Paul Sokolovsky Evgeny Sologubov Cody Somerville diff -r 45a04eadefd6 -r 69a26f0800b3 Misc/NEWS --- a/Misc/NEWS Sun Oct 04 13:52:40 2015 +0300 +++ b/Misc/NEWS Mon Oct 05 21:56:22 2015 -0700 @@ -43,6 +43,9 @@ 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.