bpo-32841: Fix cancellation in awaiting asyncio.Condition (GH-5665)
(cherry picked from commit 5746510b7aef423fa4afc92b2abb919307b1dbb9)
Co-authored-by: Bar Harel <bzvi7919@gmail.com>
diff --git a/Lib/asyncio/locks.py b/Lib/asyncio/locks.py
index 508a214..91f7a01 100644
--- a/Lib/asyncio/locks.py
+++ b/Lib/asyncio/locks.py
@@ -358,12 +358,16 @@
finally:
# Must reacquire lock even if wait is cancelled
+ cancelled = False
while True:
try:
await self.acquire()
break
except futures.CancelledError:
- pass
+ cancelled = True
+
+ if cancelled:
+ raise futures.CancelledError
async def wait_for(self, predicate):
"""Wait until a predicate becomes true.