]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] GH-98543: Fix `asyncio.TaskGroup` to not keep reference to errors after raisi...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 24 Oct 2022 18:08:22 +0000 (11:08 -0700)
committerGitHub <noreply@github.com>
Mon, 24 Oct 2022 18:08:22 +0000 (11:08 -0700)
GH-98543: Fix `asyncio.TaskGroup`  to not keep reference to errors after raising ExceptionGroup  (GH-98544)
(cherry picked from commit f4a14941e6e54b15012fca067f6a9b2ff29f201a)

Co-authored-by: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com>
Lib/asyncio/taskgroups.py

index 5d5e2a8a85dd482611373deb573937a23b3d1bfb..911419e1769c17ad53d931bacc4575eefd3660a9 100644 (file)
@@ -128,11 +128,11 @@ class TaskGroup:
             # Exceptions are heavy objects that can have object
             # cycles (bad for GC); let's not keep a reference to
             # a bunch of them.
-            errors = self._errors
-            self._errors = None
-
-            me = BaseExceptionGroup('unhandled errors in a TaskGroup', errors)
-            raise me from None
+            try:
+                me = BaseExceptionGroup('unhandled errors in a TaskGroup', self._errors)
+                raise me from None
+            finally:
+                self._errors = None
 
     def create_task(self, coro, *, name=None, context=None):
         if not self._entered: