From af857389d11ef67fc07e5ab93dfb0eee49ce621a Mon Sep 17 00:00:00 2001 From: arunmm8335 Date: Sat, 4 Jul 2026 16:21:06 +0530 Subject: [PATCH 1/4] fix(agent_execution): resolve ActiveTask 'destroyed but pending' warning during teardown --- src/a2a/server/agent_execution/active_task.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/a2a/server/agent_execution/active_task.py b/src/a2a/server/agent_execution/active_task.py index b0154c8d6..867a3b26c 100644 --- a/src/a2a/server/agent_execution/active_task.py +++ b/src/a2a/server/agent_execution/active_task.py @@ -36,6 +36,7 @@ from __future__ import annotations import asyncio +import contextlib import logging import uuid @@ -574,6 +575,11 @@ async def _run_consumer(self) -> None: self._is_finished.set() self._request_queue.shutdown(immediate=True) await self._event_queue_agent.close(immediate=True) + + if self._producer_task and not self._producer_task.done(): + with contextlib.suppress(asyncio.CancelledError): + await self._producer_task + async with self._lock: self._reference_count -= 1 logger.debug('Consumer[%s]: Finishing', self._task_id) From 99976aeda23c13197e581dcf66de0a5ceb66c654 Mon Sep 17 00:00:00 2001 From: arunmm8335 Date: Sun, 5 Jul 2026 19:48:23 +0530 Subject: [PATCH 2/4] fix(agent_execution): explicitly catch asyncio.CancelledError during shutdown --- src/a2a/server/agent_execution/active_task.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/a2a/server/agent_execution/active_task.py b/src/a2a/server/agent_execution/active_task.py index 867a3b26c..583ac2b7a 100644 --- a/src/a2a/server/agent_execution/active_task.py +++ b/src/a2a/server/agent_execution/active_task.py @@ -577,8 +577,12 @@ async def _run_consumer(self) -> None: await self._event_queue_agent.close(immediate=True) if self._producer_task and not self._producer_task.done(): - with contextlib.suppress(asyncio.CancelledError): + try: await self._producer_task + except asyncio.CancelledError: + pass + except Exception as e: + logger.debug('Consumer[%s]: Awaited producer_task raised %r', self._task_id, e) async with self._lock: self._reference_count -= 1 From ea135f2b89373ef26c410019deed77ef33ac6b9c Mon Sep 17 00:00:00 2001 From: arunmm8335 Date: Sun, 5 Jul 2026 19:54:26 +0530 Subject: [PATCH 3/4] fix(style): resolve ruff linter/formatter line length error --- src/a2a/server/agent_execution/active_task.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/a2a/server/agent_execution/active_task.py b/src/a2a/server/agent_execution/active_task.py index 583ac2b7a..7d37c6d9f 100644 --- a/src/a2a/server/agent_execution/active_task.py +++ b/src/a2a/server/agent_execution/active_task.py @@ -582,7 +582,11 @@ async def _run_consumer(self) -> None: except asyncio.CancelledError: pass except Exception as e: - logger.debug('Consumer[%s]: Awaited producer_task raised %r', self._task_id, e) + logger.debug( + 'Consumer[%s]: Awaited producer_task raised %r', + self._task_id, + e, + ) async with self._lock: self._reference_count -= 1 From a9f1a3ad5cc46067dad50f4a5cc3e0521b25a6c9 Mon Sep 17 00:00:00 2001 From: arunmm8335 Date: Sun, 5 Jul 2026 19:59:48 +0530 Subject: [PATCH 4/4] fix(style): apply ruff fixes --- src/a2a/server/agent_execution/active_task.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/a2a/server/agent_execution/active_task.py b/src/a2a/server/agent_execution/active_task.py index 7d37c6d9f..718db7500 100644 --- a/src/a2a/server/agent_execution/active_task.py +++ b/src/a2a/server/agent_execution/active_task.py @@ -36,7 +36,6 @@ from __future__ import annotations import asyncio -import contextlib import logging import uuid @@ -581,7 +580,7 @@ async def _run_consumer(self) -> None: await self._producer_task except asyncio.CancelledError: pass - except Exception as e: + except Exception as e: # noqa: BLE001 logger.debug( 'Consumer[%s]: Awaited producer_task raised %r', self._task_id,