Sometimes one worker goes rogue and doesn't stop at the end, making my build fail
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 28/100
- issue の種類
- バグ
- 明瞭さ
- 説明が足りない
- 活発さ
- 停滞
- 技術スタック
- rails, redis, ruby
調査の方向性
Issue にある shell 起動スクリプトから始め、成功した Heroku CI のログと失敗した Heroku CI のログを比較します。その際、worker の完了と、欠落している 8 行目の Finished 行に注目してください。可能であれば 8 worker での実行を再現します。完了の条件は、キューが枯渇した後にすべての worker が停止し、report コマンドが実行されることです。
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Ruby
- スター
- 240
- フォーク
- 36
- 平均マージ
- 28分
- マージ済み PR(30日)
- 3
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Shopify/ci-queue のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 65/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 50/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 45/100
Shopify/ci-queue の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
hanami/hanami-cli#449 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
resque/resque-scheduler#826 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100