[Bug]: TaskEventStream methods don't receive ServerCallContext
Les mainteneurs répondent en général sous 2 jours
@rohityan y travaille déjà.
Depuis le 23/10/2026.
Évaluation
Cette issue n'a pas encore été évaluée.
Description
What happened?
Version: a2a-sdk 1.2.1
Problem
TaskEventStream (a2a/server/cluster/event_stream.py L17–32) is keyed only by task_id:
async def publish(self, task_id: str, event: VersionedEvent) -> None: ...
def subscribe(self, task_id: str, *, after: TaskVersion) -> AsyncGenerator[VersionedEvent, None]: ...
async def destroy(self, task_id: str) -> None: ...
TaskStore, VersionedTaskStore and PushNotificationConfigStore.{set,get,delete}_info all take context: ServerCallContext. TaskEventStream and PushNotificationConfigStore.get_info_for_dispatch don't.
Context-derived identity is already central to the SDK — OwnerResolver = Callable[[ServerCallContext], str], and DatabaseTaskStore scopes every query by owner = self.owner_resolver(context). TaskEventStream can't participate.
Impact
DefaultRequestHandlerV2 holds one event_stream from construction (L143) and calls publish (L304) / subscribe (L571) with no caller information, so an implementation is permanently bound to its startup resources. That rules out selecting a backing resource per caller, refreshing credentials at a request boundary, propagating auth downstream, or request-scoped tracing — all of which TaskStore supports today.
Related: DatabaseTaskEventStream filters only on task_id/seq, never on the owner column it writes. Authorization is enforced upstream (_versioned_store.get(task_id, context) precedes subscribe), so the default composition is safe — but the stream can't check independently.
Proposed change
Add context: ServerCallContext to the three methods, optional for source compatibility:
async def publish(self, task_id: str, event: VersionedEvent, context: ServerCallContext | None = None) -> None: ...
def subscribe(self, task_id: str, *, after: TaskVersion, context: ServerCallContext | None = None) -> ...: ...
async def destroy(self, task_id: str, context: ServerCallContext | None = None) -> None: ...
The handler already holds the context at both call sites.
get_info_for_dispatch has the same gap — dispatch runs after the request completes, so it needs a stored context, not a live one.
Relevant log output
Code of Conduct
- I agree to follow this project's Code of Conduct
- Langage dominant
- Python
- Étoiles
- 2.2k
- Forks
- 518
- Merge moyen
- 3 j 7 h
- PR mergées (30 j)
- 38
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 61 jours. Ouvertecomponent: server status:awaiting response
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
a2aproject/a2a-python#1204 · 3 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 120 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 GetTask returns 500 for a non-integer historyLengthPeut-être pris @rohityan l’a pris aujourd’hui. Ouverte
a2aproject/a2a-python#1381 · 2 personnes assignées ·
Les mainteneurs répondent en général sous 2 jours
-
v0.3 pushNotificationConfig/get by task id fails with Validation failedPeut-être pris @rohityan l’a pris aujourd’hui. Ouverte
a2aproject/a2a-python#1379 · 2 personnes assignées ·
Les mainteneurs répondent en général sous 2 jours
-
[Bug]: REST tenant routes are mounted before `path_prefix`, so tenant requests from the SDK client get 404Peut-être pris @rohityan l’a pris aujourd’hui. Ouverte
a2aproject/a2a-python#1376 · 2 personnes assignées ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de a2aproject/a2a-python
Issues similaires
-
link-rot
Difficulté 1/5 Moins d'une heure Accessibilité débutants 67/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
developmentseed/titiler-cmr#265 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Insecure Brotli version <1.2.1Peut-être pris @jamescw19 l’a pris aujourd’hui. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
stac-utils/stac-fastapi-pgstac#438 · 1 réaction ·
-
bug triage
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 1 jour