graphprotocol / graphprotocol/graph-node

Avoid 'canceling statement due to conflict with recovery'

Offen
#4,327 2 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Stale
Vorherrschende Sprache
Rust
Sterne
3.2k
Forks
1.1k
Ø Merge
4 T. 1 Std.
Gemergte PRs (30 T.)
1

Beschreibung

When graph-node uses a shard with read replicas, replication conflicts can lead to an error canceling statement due to conflict with recovery. With that error, it is generally ok to retry the query, possibly with some backoff. The retry logic should guard against queries though that take so long that they are virtually guaranteed to fail with that error. For example, a query that would take 2 minutes will almost certainly fail if the underlying deployment has a decent amount of updates.

One way to avoid this would be to retry the query not against the same replica, but against the main database, where this error cannot happen.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Verfolge den Shard-Abfrage- und Retry-Pfad der Read-Replica von graph-node und untersuche anschließend, wie PostgreSQL-Fehler aufgrund von Recovery-Konflikten behandelt werden. Vergleiche das erneute Versuchen auf einer anderen Replica mit dem Weiterleiten der Abfrage an die Hauptdatenbank und berücksichtige dabei lang laufende Abfragen; als erledigt gilt die Aufgabe, wenn der Konflikt erneut versucht werden kann, ohne wiederholt ungeeignete Abfragen an eine Replica zu senden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
postgresql, rust
Bereich
backend, databases
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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