[Python-checkins] bpo-36613: call remove_done_callback if exception (GH-12800)
Miss Islington (bot)
webhook-mailer at python.org
Fri May 3 11:35:55 EDT 2019
https://github.com/python/cpython/commit/769ac7e7b809dfc60abd0d7e6f020c6ffe06a6c0
commit: 769ac7e7b809dfc60abd0d7e6f020c6ffe06a6c0
branch: 3.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2019年05月03日T08:35:52-07:00
summary:
bpo-36613: call remove_done_callback if exception (GH-12800)
Call remove_done_callback() in finally block.
https://bugs.python.org/issue36613
(cherry picked from commit c1964e9e2177eabe821f3e4243be8b99e0d2d542)
Co-authored-by: gescheit <gescheit12 at gmail.com>
files:
A Misc/NEWS.d/next/Library/2019-04-12-13-52-15.bpo-36613.hqT1qn.rst
M Lib/asyncio/tasks.py
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
index 416c346be2ec..2af4f32a51a4 100644
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -457,10 +457,11 @@ def _on_completion(f):
finally:
if timeout_handle is not None:
timeout_handle.cancel()
+ for f in fs:
+ f.remove_done_callback(_on_completion)
done, pending = set(), set()
for f in fs:
- f.remove_done_callback(_on_completion)
if f.done():
done.add(f)
else:
diff --git a/Misc/NEWS.d/next/Library/2019-04-12-13-52-15.bpo-36613.hqT1qn.rst b/Misc/NEWS.d/next/Library/2019-04-12-13-52-15.bpo-36613.hqT1qn.rst
new file mode 100644
index 000000000000..8828dccad69c
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2019-04-12-13-52-15.bpo-36613.hqT1qn.rst
@@ -0,0 +1 @@
+Fix :mod:`asyncio` wait() not removing callback if exception
\ No newline at end of file
More information about the Python-checkins
mailing list