[Bug]: ActiveTask.start() leaves the event queue dispatchers pending when setup fails
Les mainteneurs répondent en général sous 2 jours
Évaluation
Cette issue n'a pas encore été évaluée.
Description
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
- Langage dominant
- Python
- Étoiles
- 2.2k
- Forks
- 532
- Merge moyen
- 3 j 2 h
- PR mergées (30 j)
- 46
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de a2aproject/a2a-python
-
[Bug]: `A2A-Version` validation ignores minor versions and the query parameterPeut-être pris @rohityan l’a pris il y a 72 jours. Ouvertecomponent: server status:awaiting response status:stale
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
a2aproject/a2a-python#1204 · 4 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
[Bug]: REST task/request id sanitizationPeut-être pris @Linux2010 l’a pris il y a 131 jours. Ouvertemaintainers-only
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
a2aproject/a2a-python#805 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
v0.3 REST and gRPC clients send blocking requests as non-blockingPeut-être pris @rohityan l’a pris aujourd’hui. Ouverte
a2aproject/a2a-python#1428 · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
Compat REST client drops security from the v0.3 extended agent cardPeut-être pris @ConnorMoss02 l’a pris il y a 1 jour. Ouvertecomponent: client status:awaiting response
a2aproject/a2a-python#1418 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
[Feat]: Add a task-state-invariants agent skill for sibling-surface propagationPeut-être pris @Linux2010 l’a pris il y a 3 jours. Ouvertecomponent: tooling status:awaiting response
a2aproject/a2a-python#1413 · 3 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de a2aproject/a2a-python
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
didi/helixharness#18 ·
-
[MOVIE]: Airport '77 (1977)Ouverterequest-theme
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
LizardByte/ThemerrDB#9883 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
NousResearch/hermes-agent#149885 ·
Les mainteneurs répondent en général sous 1 jour
-
Set cache_ok = True on GUID TypeDecorator to enable SQLAlchemy query cachingPeut-être pris @patelshivani2283-lab l’a pris aujourd’hui. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 91/100
fedora-infra/anitya#2157 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Project-MONAI/MONAI#9258 ·
Les mainteneurs répondent en général sous 3 jours