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>
# 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: