From 52f135d85d66e703b1ad495f0b1ee5aad3c7cfa0 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Thu, 10 Jun 2021 13:59:08 -0400 Subject: [PATCH] Avoid mutate on iterate race --- tractor/_actor.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tractor/_actor.py b/tractor/_actor.py index bfcbf98..ff6d1db 100644 --- a/tractor/_actor.py +++ b/tractor/_actor.py @@ -528,11 +528,14 @@ class Actor: task_status.started(loop_cs) async for msg in chan: if msg is None: # loop terminate sentinel + log.debug( f"Cancelling all tasks for {chan} from {chan.uid}") - for (channel, cid) in self._rpc_tasks: + + for (channel, cid) in self._rpc_tasks.copy(): if channel is chan: await self._cancel_task(cid, channel) + log.debug( f"Msg loop signalled to terminate for" f" {chan} from {chan.uid}")