mirror of
https://github.com/microsoft/autogen.git
synced 2025-07-24 17:31:41 +00:00

## Why are these changes needed? *Problem* Previously, in `DockerCommandLineCodeExecutor`, cancellation tasks were added directly to `self._cancellation_tasks` using `asyncio.create_task()`: ```python self._cancellation_tasks.append(asyncio.create_task(self._kill_running_command(command))) ``` This caused issues when cancellation tasks were created from multiple event loops, leading to loop mismatch errors during executor shutdown. *Solution* This PR fixes the issue by introducing a dedicated internal event loop for managing cancellation tasks. Cancellation tasks are now scheduled in a fixed event loop using `asyncio.run_coroutine_threadsafe()`: ```python future: ConcurrentFuture[None] = asyncio.run_coroutine_threadsafe( self._kill_running_command(command), self._loop ) self._cancellation_futures.append(future) ``` *Additional Changes* - Added detailed logging for easier debugging. - Ensured clean shutdown of the internal event loop and associated thread. *Note* This change ensures that all cancellation tasks are handled consistently in a single loop, preventing cross-loop conflicts and improving executor stability in multi-threaded environments. ## Related issue number <!-- For example: "Closes #1234" --> Closes #6395 ## Checks - [ ] I've included any doc changes needed for <https://microsoft.github.io/autogen/>. See <https://github.com/microsoft/autogen/blob/main/CONTRIBUTING.md> to build and test documentation locally. - [x] I've added tests (if relevant) corresponding to the changes introduced in this PR. - [x] I've made sure all auto checks have passed. --------- Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>