Skip to content

本番の配布のプランで judge が同じ CI の失敗に打ち直しを 7 回返し、上限まで同じ run を読み直す → 同じ失敗が続いたら止めて人へ戻す #1983

Open

Description

@takemi-ohama

何を見つけたか

本番の配布のプランで、release のステップが同じ CI の失敗で落ち続けたのに、judge が毎回「同じステップをもう一度」(release)を返し、ステップの上限まで 7 回打ち直した。打ち直しは同じ失敗した CI の run を読み直すだけで、結果が変わる見込みが無かった。

時刻(UTC) 起きたこと
05:50:17 release が PR #1976 の CI が失敗: runtime-smoke (agy)(run 38353378585) で exit 1
05:50:25〜05:53:29 judge が 7 回とも release を返す。release は毎回 22 秒ほどで同じ run 38353378585 の失敗を返す
05:50:48〜05:53:22 supervise が毎回 attention「judge のステップで stop が出そう」(2〜7 回落ちた)を出すが、流れは変わらない
— ステップの上限で「止まった」(queue-8.log、366 秒)

judge の理由は 7 回とも「規則の『外部の待ち(CI)の揺れ』に当たる」「再び同じ所で落ちたら止める」と書いている。judge は前の打ち直しの結果を読まずに判断しており、自分で書いた「次は止める」が働かなかった。規則(プランの 規則: 「外部の待ち(CI・ネットワーク)の揺れなら同じステップをもう一度」)にも、何回まで・何が変われば打ち直すかが無い。

記録: ~/.local/state/ndf/sv/sprint-m1953/8-release-prod-state/(07-release.out〜20-judge.out・progress.jsonl)

どこで見つけたか

スプリント m1953 の本番 10.17.74(release PR 1975)と振り返り。

直す候補

  • judge に、同じステップの前の判断と失敗の要約(回数・同じ失敗か)を渡す
  • 同じステップが同じ失敗(同じ要約・同じ CI の run)で 2 回落ちたら、judge を呼ばずに止めて人へ戻す
  • CI の揺れを打ち直すときは、ステップの打ち直しではなく CI のジョブの再実行を経由する(同じ run を読み直さない)

受け入れ条件

  • 1. 同じ失敗の要約で 2 回落ちたステップは、3 回目を流さずに止まり、理由に回数と失敗の要約が載る
  • 2. judge が前の判断と結果を読める(入力に載る)
  • 3. 同じ CI の run の失敗を、打ち直しで解決したとみなさない
  • 4. 1〜3 を確かめるテストがある

関連

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions