Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

[Bug]: get_info_for_dispatch default resolves to empty owner in multi-owner deployments

Ouverte
#1,231 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 3 jours

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
65/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Domaine
backend

Piste de recherche

Le bug se trouve dans push_notification_config_store.py et inmemory_push_notification_config_store.py. Commencez par lire la méthode get_info_for_dispatch par défaut et vérifiez comment elle appelle get_info avec un ServerCallContext vide. Examinez ensuite la logique owner_resolver dans le store en mémoire afin de comprendre la partition de propriétaire correspondant à la chaîne vide. La correction consiste à rendre la méthode abstraite, mais vérifiez d’abord les sous-classes existantes. Exécutez tous les tests existants pour les notifications push afin de vérifier le comportement.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

component: server maintainers-only
What happened?

PushNotificationConfigStore.get_info_for_dispatch(task_id) is the cross-owner read used by the dispatch loop it must return every config for a task regardless of which owner registered it. But the shipped (non-abstract) default falls back to an owner-scoped get_info with an empty context:

# push_notification_config_store.py (v1.1.3) — default fallback
async def get_info_for_dispatch(self, task_id):
    logger.warning('%s does not override get_info_for_dispatch ...', type(self).__name__)
    return await self.get_info(task_id, ServerCallContext())   # empty context

get_info resolves the owner partition from that context:

# inmemory_push_notification_config_store.py — get_info
owner = self.owner_resolver(context)          # empty ctx -> empty-string owner
owner_infos = self._get_owner_push_notification_infos(owner)
return list(owner_infos.get(task_id, []))     # that partition is empty -> []

So ServerCallContext() -> empty-string owner -> returns [] -> every push notification is silently dropped in any multi-owner deployment. The only signal is a per-call logger.warning.

Proposed fix: #1180 fixes this by marking the method as abstractmethod. However, the method shipped as non-abstract (latest released versions at this time - v1.1.4), so this is a breaking change to a public ABC (existing subclasses fail to instantiate on upgrade) and should be a part of a major release.

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 20 h
PR mergées (30 j)
42

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de a2aproject/a2a-python

Toutes les issues de a2aproject/a2a-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.