More aggressively retry Redis commands
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- redis, ruby
- Área
- backend, distributed-systems
Línea de trabajo
No se nombran archivos ni pruebas. Empieza por inventariar cada comando de Redis emitido por ci-queue y revisar la configuración de reintentos de la gema redis; se considera terminado cuando los fallos transitorios de Redis se reintentan sin permitir que los comandos no idempotentes corrompan el estado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Acceptance Criteria
- We need to go over all the commands we emit and make sure they are idempotent, otherwise retrying could result in a corrupted state, lost tests etc.
- The redis gem has the necessary elements for that it's mostly just configuration.
Context
Sometimes our Redis server that handle the ci-queue workload experience a failover or some other availability issues.
When this happens it break builds even though it recovers pretty fast.
Examples
Error connecting to Redis on redacted.svc.cluster.local.:6379 (SocketError) (Redis::CannotConnectError)
./tmp/bundle/ruby/3.1.0/gems/redis-4.8.0/lib/redis/client.rb:162:in `call': MASTERDOWN Link with MASTER is down and replica-serve-stale-data is set to 'no'. (Redis::CommandError)
(that later one need to be better categorized by the redis gem though)
Solution
Ideally we'd be resilient to these small transient errors, this means retrying all or most commands and possibly waiting a bit before retrying. The redis gem has the necessary elements for that it's mostly just configuration.
However we need to go over all the commands we emit and make sure they are idempotent, otherwise retrying could result in a corrupted state, lost tests etc.
cc @ChrisBr
- Lenguaje dominante
- Ruby
- Estrellas
- 240
- Forks
- 36
- Merge medio
- 28 min
- PR fusionados (30 d)
- 3
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
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.
Más de Shopify/ci-queue
-
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 50/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
-
Update ciqueue for pytest Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 38/100
Todos los issues de Shopify/ci-queue
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
simp/pupmod-simp-simp#395 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
simp/pupmod-simp-rsyslog#219 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
simp/pupmod-simp-pupmod#256 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
simp/pupmod-simp-sudo#150 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100