From 2aed7dd5a451eb7912a7fa48602fc647678ca71e Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Wed, 9 Nov 2022 19:10:59 -0500 Subject: [PATCH] Always set the `parent_exit: trio.Event` on exit --- tractor/trionics/_mngrs.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tractor/trionics/_mngrs.py b/tractor/trionics/_mngrs.py index 9a7cf7f..5621f79 100644 --- a/tractor/trionics/_mngrs.py +++ b/tractor/trionics/_mngrs.py @@ -133,13 +133,13 @@ async def gather_contexts( # deliver control once all managers have started up await all_entered.wait() - # NOTE: order *should* be preserved in the output values - # since ``dict``s are now implicitly ordered. - yield tuple(unwrapped.values()) - - # we don't need a try/finally since cancellation will be triggered - # by the surrounding nursery on error. - parent_exit.set() + try: + yield tuple(unwrapped.values()) + finally: + # NOTE: this is ABSOLUTELY REQUIRED to avoid + # the following wacky bug: + # + parent_exit.set() # Per actor task caching helpers.