UnresolvedEntry leaks to test runner in lazy-load retry runs
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 65/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- ruby
- Área
- testing-qa
Línea de trabajo
Lee minitest/queue.rb alrededor de la línea 167 y luego sigue la ruta de unión del retry y la llamada existente a configure_lazy_queue en populate_queue. Confirma que los workers que no son líderes configuran un entry_resolver en las ejecuciones de retry con lazy-load antes de extraer tests, y verifica que el runner recibe un objeto de test activo en lugar de un UnresolvedEntry.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
In lazy-load mode, workers on a retry run can end up with resolve_entry returning an UnresolvedEntry instead of a live test object, crashing the test runner:
NoMethodError: undefined method `run' for an instance of CI::Queue::Redis::UnresolvedEntry
minitest/queue.rb:~167
Root cause
PR #380 introduced UnresolvedEntry as a defense-in-depth fallback for when resolve_entry finds neither @index nor entry_resolver set. The same PR added configure_lazy_queue to the eager-mode branch of populate_queue so non-leader workers get an entry_resolver.
The gap is in the retry join path. When a worker enters a retry run, it can skip populate_queue entirely -- going straight to the retry queue pop loop. configure_lazy_queue is never called in that path, so entry_resolver stays nil. The next test popped off the queue falls through to the UnresolvedEntry fallback. The runner then calls .run on it and crashes.
With many parallel workers this cascades: the unresolved entry is never acknowledged, gets requeued, and each worker that picks it up crashes the same way.
Conditions
- Lazy-load mode enabled
- Retry run (automatic retry is the most common trigger in CI environments)
- Non-leader worker (the leader goes through
populate_queueand getsentry_resolverset)
Fix direction
Call configure_lazy_queue in the retry join path, not just inside populate_queue. Mirrors the eager-mode fix from #380 for the initial run.
- 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 4/5 3-5 días Aptitud para principiantes 50/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/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
palladius/rails8-app-on-gcp#145 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
rubocop/rubocop-rspec#2236 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
riscv/riscv-unified-db#2624 · 1 reacción ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100