From 03ec7bb50ff5ed3ae820a4d4d0590c94b3173e68 Mon Sep 17 00:00:00 2001 From: codingl2k1 Date: Tue, 28 Nov 2023 16:13:34 +0800 Subject: [PATCH 1/2] Copy sub_processes in monitor_sub_pools --- python/xoscar/backends/pool.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/xoscar/backends/pool.py b/python/xoscar/backends/pool.py index 73d89d2a..8d8d2623 100644 --- a/python/xoscar/backends/pool.py +++ b/python/xoscar/backends/pool.py @@ -1389,7 +1389,8 @@ def process_sub_pool_lost(self, address: str): async def monitor_sub_pools(self): try: while not self._stopped.is_set(): - for address, process in self.sub_processes.items(): + # Copy sub_processes to avoid changes during recover. + for address, process in list(self.sub_processes.items()): try: recover_events_discovered = address in self._recover_events if not await self.is_sub_pool_alive( From e2d3b65d29074375992e83b0d620eeb7151ff897 Mon Sep 17 00:00:00 2001 From: codingl2k1 Date: Tue, 28 Nov 2023 16:18:40 +0800 Subject: [PATCH 2/2] Fix lint --- python/xoscar/backends/pool.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/python/xoscar/backends/pool.py b/python/xoscar/backends/pool.py index 8d8d2623..749ef8cc 100644 --- a/python/xoscar/backends/pool.py +++ b/python/xoscar/backends/pool.py @@ -911,6 +911,7 @@ def _parse_config(config: dict, kw: dict) -> dict: class MainActorPoolBase(ActorPoolBase): __slots__ = ( + "_subprocess_start_method", "_allocated_actors", "sub_actor_pool_manager", "_auto_recover", @@ -918,6 +919,8 @@ class MainActorPoolBase(ActorPoolBase): "_on_process_down", "_on_process_recover", "_recover_events", + "_allocation_lock", + "sub_processes", ) def __init__(