graphprotocol / graphprotocol/graph-node
Avoid 'canceling statement due to conflict with recovery'
Nadie ha tomado este issue todavía.
- 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
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- 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