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.