graphprotocol / graphprotocol/graph-node

Avoid 'canceling statement due to conflict with recovery'

Abierto
#4,327 2 comentarios 2 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Stale
Lenguaje dominante
Rust
Estrellas
3.2k
Forks
1.1k
Merge medio
4 d 1 h
PR fusionados (30 d)
1

Descripción

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.

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Traza la ruta de consulta y reintento de la réplica de lectura del shard de graph-node y, después, inspecciona cómo se gestionan los errores de PostgreSQL causados por conflictos de recuperación. Compara reintentar en otra réplica con enrutar la consulta a la base de datos principal, teniendo en cuenta las consultas de larga duración; se considera terminado cuando el conflicto puede reintentarse sin enviar repetidamente consultas inadecuadas a una réplica.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
postgresql, rust
Área
backend, databases
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.