Sometimes one worker goes rogue and doesn't stop at the end, making my build fail
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 28/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- rails, redis, ruby
- Ambito
- distributed-systems, testing-qa
Direzione di ricerca
Inizia con lo script di avvio della shell nell’issue e confronta i log di Heroku CI riusciti e falliti, concentrandoti sul completamento dei worker e sull’ottava riga „Finished“ mancante. Riproduci l’esecuzione con otto worker, se possibile; il lavoro è completato quando ogni worker si arresta dopo che la coda è stata esaurita e viene eseguito il comando di report.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I'm running ci-queue in a bit of an alternative setting. I've got a Ruby on Rails app which has a long test suite, and I'm running 8 concurrent instances of RSpec on Heroku CI, but on one and the same dyno, which also runs Redis in-dyno.
I start the whole chain with the following script
export CI_QUEUE_URL=$([ -z "$REDIS_URL" ] && echo "redis://127.0.0.1:6379" || echo "$REDIS_URL")
for num in $(seq 1 $PARALLEL_COUNT); do
RUBYOPT="-W0" \
CI_NODE_INDEX=$(expr $num - 1) \
DATABASE_URL=$([ "$num" -ne "1" ] && echo $DATABASE_URL$num || echo $DATABASE_URL) \
rspec-queue \
--timeout 180 \
--max-consecutive-failures 10 \
--max-requeues 5 \
--requeue-tolerance 5 $@ &
done
wait
rspec-queue --report
Every now and then when this runs on Heroku CI, 7 out of the 8 workers end at the same time, but it seems the 8th one keeps on running for hours until Heroku kills my build after 2 hours that usually passes in about 10-15 minutes. It's as if it doesn't understand that the queue is done.
Randomized with seed 57482
.
Finished in 9 minutes 51 seconds (files took 10.22 seconds to load)
85 examples, 0 failures, 1 pending
Randomized with seed 15517
< THIS IS WHERE I EXPECT THE REPORT >
.......................................................................................................................-----> test command `bin/test` failed with signal: terminated
While there are 8 instances running, the word Finished only shows up 7 times in the log, so I assume what I see here is the finishing of workers 6 and 7, and the following dots being part of worker 8.
I have no idea how to debug this further, but I'd love to add more details if someone can help me in the right direction.
A little more research
I've compared the output of a successful build and a failed build.
- A successful build had 8 workers finish with a total of 1216 examples, an average number of 152.
- A failed build had 7 workers finish with a total of 1194 examples reported.
- This means that at the time they finished, the 8th worker only processed 22 examples, which is remarkebly few compared to the average of 170 examples processed by the other 7. (This could potentially corroborate your theory). However:
- After that, the 8th worker drew 130 dots, which as I can only imagine refer to specs that already passed in different workers.
- Lingua principale
- Ruby
- Stelle
- 240
- Fork
- 36
- Merge medio
- 28m
- PR unite (30g)
- 3
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Shopify/ci-queue
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 50/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Update ciqueue for pytest Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
Tutte le issue di Shopify/ci-queue
Issue simili
-
SyncEm always forwards a dummy block, so wrapped methods lose their no-block/Enumerator behavior Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
endoflife-date/endoflife.date#11086 ·
-
internal
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
Kong/developer.konghq.com#7322 ·
-
bug P2
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100