[Bug]: ActiveTask.start() leaves the event queue dispatchers pending when setup fails
Maintainer antworten meist innerhalb von 2 Tagen
Bewertung
Dieses Issue wurde noch nicht bewertet.
Beschreibung
What happened?
ActiveTask (src/a2a/server/agent_execution/active_task.py) creates its two EventQueueSource queues in __init__, and each EventQueueSource starts its dispatcher task as soon as it is created (src/a2a/server/events/event_queue_v2.py):
self._dispatcher_task = asyncio.create_task(self._dispatch_loop())
When the setup in start() fails, the except block marks the task as finished and re-raises, but never closes the queues:
except Exception:
logger.debug('ActiveTask[%s]: Setup failed, cleaning up', self._task_id)
self._is_finished.set()
if self._reference_count == 0 and self._on_cleanup:
self._on_cleanup(self)
raise # _event_queue_agent and _event_queue_subscribers stay open
The setup fails when the stored task is in a terminal state (UnsupportedOperationError) or is missing and create_task_if_missing is false (TaskNotFoundError). With DefaultRequestHandler, a SendMessage to a completed task takes the first path, so each rejected request leaves two _dispatch_loop tasks pending. Once they are garbage collected, asyncio logs:
Task was destroyed but it is pending!
task: <Task pending name='Task-28' coro=<EventQueueSource._dispatch_loop() ...>>
On a server built with DefaultRequestHandler, InMemoryTaskStore and the JSON-RPC and REST routes, six SendMessage requests to completed tasks log this twelve times.
Suggested fix: close both queues in the except block, before _on_cleanup:
await self._event_queue_agent.close(immediate=True)
await self._event_queue_subscribers.close(immediate=True)
aclose() already closes the queues the same way, but it can't be called here because it takes _lock, which start() holds.
I have a fix ready and I'm opening a PR alongside this issue.
Code of Conduct
- I agree to follow this project's Code of Conduct
- Vorherrschende Sprache
- Python
- Sterne
- 2.2k
- Forks
- 532
- Ø Merge
- 3 T. 11 Std.
- Gemergte PRs (30 T.)
- 43
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus a2aproject/a2a-python
-
[Bug]: `A2A-Version` validation ignores minor versions and the query parameterEvtl. vergeben @rohityan hat das vor 71 Tagen übernommen. Offencomponent: server status:awaiting response status:stale
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
a2aproject/a2a-python#1204 · 4 Kommentare · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
-
[Bug]: REST task/request id sanitizationEvtl. vergeben @Linux2010 hat das vor 130 Tagen übernommen. Offenmaintainers-only
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
a2aproject/a2a-python#805 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Compat REST client drops security from the v0.3 extended agent cardEvtl. vergeben @rohityan hat das vor 1 Tag übernommen. Offen
a2aproject/a2a-python#1418 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
-
v0.3 JSON-RPC returns -32600 instead of -32602 for invalid paramsEvtl. vergeben @ConnorMoss02 hat das vor 1 Tag übernommen. Offencomponent: server status:awaiting response
a2aproject/a2a-python#1417 · 1 Kommentar · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
-
[Bug]: CancelTaskRequest.metadata never reaches AgentExecutor.cancelEvtl. vergeben @muscariello hat das vor 2 Tagen übernommen. Offenmaintainers-only
a2aproject/a2a-python#1415 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
Alle Issues in a2aproject/a2a-python
Ähnliche Issues
-
area:docs documentation effort:M ready-for-agent
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
mczielinski/ob-analytics#423 ·
Maintainer antworten meist innerhalb von 1 Tag
-
needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
gke-labs/kube-agents#4838 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
danyuchn/asd-ste100-skill#60 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 64/100
Gathin23/cleanyourtv#3299 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
autowarefoundation/autoware_carla_scenario#1485 ·
Maintainer antworten meist innerhalb von 1 Tag