From 0e6defa412267477377fa98d62361a0e13785dcb Mon Sep 17 00:00:00 2001 From: Srikanth Patchava Date: Mon, 15 Jun 2026 21:36:49 -0700 Subject: [PATCH] fix: use except BaseException for async queue cleanup handlers Replace bare except with except BaseException in put() and get() cleanup blocks. These handlers must catch asyncio.CancelledError (which derives from BaseException in Python 3.9+) to properly clean up canceled putters/getters during shutdown. Using except Exception would let CancelledError bypass the cleanup, leaving stale entries in _putters/_getters. The cleanup block already re-raises, so no exceptions are silenced. --- python/packages/autogen-core/src/autogen_core/_queue.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/python/packages/autogen-core/src/autogen_core/_queue.py b/python/packages/autogen-core/src/autogen_core/_queue.py index 699921a37f5d..2f3d71841580 100644 --- a/python/packages/autogen-core/src/autogen_core/_queue.py +++ b/python/packages/autogen-core/src/autogen_core/_queue.py @@ -122,7 +122,7 @@ async def put(self, item: T) -> None: self._putters.append(putter) try: await putter - except: + except BaseException: putter.cancel() # Just in case putter is not done yet. try: # Clean self._putters from canceled putters. @@ -169,10 +169,9 @@ async def get(self) -> T: self._getters.append(getter) try: await getter - except: + except BaseException: getter.cancel() # Just in case getter is not done yet. try: - # Clean self._getters from canceled getters. self._getters.remove(getter) except ValueError: # The getter could be removed from self._getters by a