checkGitHubCI blocks indefinitely on orphaned check suites stuck in QUEUED
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 68/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- github-actions, graphql, javascript
調査の方向性
pr_checker.js の checkGitHubCI() から始め、PRCommits.gql の checkSuites クエリを調べてから、その suite データを commit-queue.sh の事前チェックの動作と比較します。空で古くなった QUEUED suite が landing をブロックしなくなり、一方でアクティブな suite は引き続き保留されるよう、設定可能な経過時間のしきい値を定義して検証します。警告でスキップされた孤立した suite が特定されることを確認します。
索引モデルが issue の本文から書いたものです。
説明
Problem
checkGitHubCI() in pr_checker.js blocks landing with ✘ GitHub CI is still running when any GitHub Actions check suite has status !== 'COMPLETED'. However, GitHub occasionally creates check suites that remain stuck in QUEUED status with 0 check runs indefinitely — they are never dispatched and will never complete.
This has blocked at least two recent PRs on nodejs/node:
- #64991 —
Test macOSsuite stuck 3+ days, landed manually - #64830 — same
Test macOSsuite stuck, landed manually
In both cases, the orphaned suite:
- Has
status: QUEUED,conclusion: null - Has 0 check runs (never started executing)
- Has a valid
workflowRun(Test macOS, workflow ID 858952) - Was created at the same time as sibling suites that completed fine
- Never gets re-triggered by
request-cibecause GitHub sees it as already "queued" - The only workaround is a collaborator manually running
git node land --yes
The commit-queue.sh pre-check (gh pr checks | grep pending) passes fine because it evaluates individual check runs (all completed), not suite containers.
Data
PR #64991, SHA 94a47d6f15b2:
- 25 GitHub Actions suites total
- 24 completed (success/skipped)
- 1 orphaned: suite
84102428609,Test macOS,QUEUED, 0 check runs, created2026-08-05T13:19:48Z
No newer run of Test macOS exists for this SHA — request-ci does not re-trigger a workflow GitHub considers already "queued."
Proposed fix
Consider a suite as orphaned and skip it if:
status !== 'COMPLETED'checkRuns.nodes.length === 0(nothing has ever executed inside it)- Suite age exceeds a configurable threshold (suggesting 3 hours since
createdAt— legitimate suites dispatch runs within seconds)
if (status !== 'COMPLETED') {
const runCount = checkRuns?.nodes?.length ?? 0;
const ageMs = Date.now() - new Date(createdAt).getTime();
if (runCount === 0 && ageMs > ORPHANED_SUITE_TIMEOUT) {
cli.warn(`Ignoring orphaned check suite with no runs (status: ${status}, age: ${Math.round(ageMs / 3600000)}h)`);
continue;
}
pendingJobs.push({ app: app.slug, status, conclusion });
continue;
}
GraphQL change: add createdAt to the checkSuites query in PRCommits.gql.
Trade-offs
What this fixes: Orphaned suites no longer block the commit queue forever.
Risk: If someone adds commit-queue before request-ci has finished triggering all workflows, a suite that should have run but hasn't started yet (0 runs, within the threshold) could age past the timeout and get skipped — landing the PR without that test suite's results.
However, the current workaround (git node land --yes) already bypasses ALL checks — including real failures. A targeted skip of empty aged-out suites is strictly safer than the current manual workaround.
- 主要言語
- JavaScript
- スター
- 313
- フォーク
- 137
- 平均マージ
- 2日 8時間
- マージ済み PR(30日)
- 24
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
nodejs/node-core-utils のほかの issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
nodejs/node-core-utils#664 · コメント 1 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 65/100
nodejs/node-core-utils#1164 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
nodejs/node-core-utils#1151 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
nodejs/node-core-utils#1063 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
nodejs/node-core-utils#967 · コメント 4 件 ·
nodejs/node-core-utils の issue をすべて見る
似ている issue
-
bot:ai-assisted component:compact-js status:untriaged
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
midnightntwrk/midnight-sdk#403 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
-
難易度 1/5 1〜3時間 初心者へのやさしさ 86/100
DavidAnson/markdownlint-cli2#940 ·
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
githubnext/gh-aw-workshop#3692 ·
-
agent/guide documentation hive/hosted-available-lke648397-260827-5n31
難易度 2/5 1〜3時間 初心者へのやさしさ 90/100