Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

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

Offen
#1,231 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 2 Tagen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
65/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Bereich
backend

Rechercherichtung

Der Fehler befindet sich in push_notification_config_store.py und inmemory_push_notification_config_store.py. Lies zunächst die standardmäßige get_info_for_dispatch-Methode und prüfe, wie sie get_info mit einem leeren ServerCallContext aufruft. Untersuche anschließend die owner_resolver-Logik im In-Memory-Store, um die Owner-Partition für die leere Zeichenkette zu verstehen. Die Korrektur besteht darin, die Methode abstrakt zu machen, aber prüfe zuerst vorhandene Subklassen. Führe alle vorhandenen Tests für Push-Benachrichtigungen aus, um das Verhalten zu verifizieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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
Vorherrschende Sprache
Python
Sterne
2.2k
Forks
518
Ø Merge
3 T. 12 Std.
Gemergte PRs (30 T.)
39

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus a2aproject/a2a-python

Alle Issues in a2aproject/a2a-python

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.