{"id":"IL-0471","org":"GitHub","date":"2026-08-06","docs":["https://github.com/orgs/community/discussions/204152#discussioncomment-17946043"],"title":{"en":"GitHub Actions runs failed or sat queued for 9 hours after a routine deployment's pod replacement saturated capacity","ko":"GitHub Actions 워크플로 실행이 대량으로 실패하거나 큐에서 오래 기다렸다"},"domain":["kubernetes"],"impact":{"scope":"GitHub Actions workflow runs on GitHub-hosted and self-hosted runners: at the peak 71% had infrastructure failures and 75% of the rest were delayed by more than 5 minutes; GitHub Pages, Copilot code review, Copilot coding agent and GitHub Enterprise Importer migrations were also affected","users":"Customers using GitHub-hosted and self-hosted runners","region":"unknown"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":null,"related":[],"sources":[{"url":"https://www.githubstatus.com/incidents/qcvjkzcs7j74","kind":"official-status","archived":"https://web.archive.org/web/20261030091145/https://www.githubstatus.com/incidents/qcvjkzcs7j74"}],"summary":{"en":"On 6 August 2026 a routine deployment to an internal GitHub Actions service that processes events and generates Actions jobs exposed a capacity and concurrency weakness that already existed. As the deployment replaced pods, the remaining capacity saturated, services crashed, and the failure cascaded across multiple clusters and downstream services. These services recovered at 17:00 UTC after capacity was expanded, incoming webhook-triggered work was throttled, and processing capacity for the backlog of affected events was increased.\n\nBy then a backlog had built up in the systems that assign jobs to runners. A latent bug in one of the job assignment services gave runners jobs that were no longer valid, and the runners got stuck retrying them instead of taking valid work. GitHub deployed changes that stopped runners from repeatedly trying to acquire invalid jobs and a fix for self-hosted runners that were not picking up jobs, enabled incrementally. The queues then drained, webhook-triggered workflows returned to full throughput, and Actions was back to normal at 00:14 UTC on 7 August, 9h 9m after the start. Migrations with GitHub Enterprise Importer were paused during mitigation.\n\nOne mitigation deployed during the incident inadvertently affected some Actions Runner Controller (ARC) runners, which stayed offline until they were recovered by hand; GitHub later rolled that change back and told affected users to delete the stuck idle pods with kubectl or redeploy ARC so it would create replacement runners. For jobs left stuck without retry or cancel, GitHub shared CLI and UI steps in a community discussion, and customers might need to repeat the push or pull request actions whose events were never processed.","ko":"2026-08-06 15:05 UTC 부터 2026-08-07 00:14 UTC 까지 GitHub Actions 의 가용성이 떨어졌다. 이벤트를 처리하고 Actions 작업을 만드는 내부 서비스에 일상 배포를 하자 이미 있던 용량과 동시성의 약점이 드러났다. 배포로 파드가 교체되는 동안 남은 용량이 포화돼 서비스가 죽었다. 영향은 여러 클러스터와 하위 서비스로 줄줄이 번졌다. GitHub 는 용량을 늘리고, 웹훅으로 들어오는 작업을 줄이고, 밀린 이벤트를 처리할 용량을 늘렸다. 처음 무너진 서비스들은 17:00 에 회복했다.\n\n그사이 러너에 작업을 배정하는 시스템들에 일이 밀렸다. 작업 배정을 맡은 서비스 하나에 숨어 있던 버그 때문에 러너가 더는 유효하지 않은 작업을 배정받고 그 작업을 계속 재시도하느라 유효한 작업을 가져가지 못했다. 러너가 유효하지 않은 작업을 되풀이해 가져가지 못하게 하는 변경을 배포하자 밀린 큐가 빠지고 Actions 가 정상으로 돌아왔다. 장애 중에 배포한 완화 조치 하나가 뜻하지 않게 Actions Runner Controller 러너에 영향을 줘, 러너 일부가 손으로 복구할 때까지 오프라인으로 남았다. GitHub 는 그 변경을 롤백했다. 사용자에게는 idle 상태에 멈춘 러너 파드를 kubectl 로 지우거나 Actions Runner Controller 애플리케이션을 다시 배포하면 Actions Runner Controller 가 새 러너를 만든다고 안내했다. 장애 중에 만들어진 일부 작업은 재시도도 취소도 되지 않는 상태로 남았다."},"trigger":{"en":"A routine deployment to an internal Actions service that processes events and generates Actions jobs replaced pods, and the remaining capacity became saturated.","ko":"이벤트를 처리하고 Actions 작업을 만드는 Actions 내부 서비스에 일상 배포를 했다. 배포로 파드가 교체되는 동안 남은 용량이 포화됐다."},"severity":"unknown","symptoms":["high-error-rate","high-latency"],"timeline":{"detected_after":null,"resolved_after":"9h 9m"},"date_kind":"incident","detection":null,"components":["ci-system"],"root_cause":"capacity","remediation":[{"text":{"en":"Expanded capacity of the affected services","ko":"용량을 늘렸고, 처음 무너진 서비스들은 17:00 에 회복했다."}},{"text":{"en":"Throttled incoming webhook-triggered work","ko":"시스템이 회복할 수 있게 웹훅으로 들어오는 작업을 줄였다. 한때 웹훅의 약 15% 만 처리했다."}},{"text":{"en":"Increased processing capacity for the backlog of affected events","ko":"밀린 이벤트를 처리할 용량을 늘렸다."}},{"text":{"en":"Deployed changes that stopped runners from repeatedly trying to acquire invalid jobs","ko":"러너가 유효하지 않은 작업을 되풀이해 가져가려 하지 않도록 하는 변경을 배포했다."}},{"text":{"en":"Deployed a fix for self-hosted runners that were not picking up jobs and enabled it incrementally","ko":"작업을 가져가지 못하던 자체 호스트 러너를 위한 수정을 배포하고 조금씩 켰다."}},{"text":{"en":"Paused migrations with GitHub Enterprise Importer","ko":"완화 작업에 도움이 되도록 GitHub Enterprise Importer 마이그레이션을 멈췄다."}},{"text":{"en":"Restored webhook-triggered Actions workflows to full throughput","ko":"웹훅으로 시작하는 Actions 워크플로를 전체 처리량으로 되돌렸다."}},{"text":{"en":"Rolled back the mitigation that left some ARC runners offline, and recovered those runners by hand","ko":"완화 조치 하나 때문에 오프라인으로 남은 Actions Runner Controller 러너는 손으로 복구했고, 그 변경은 나중에 롤백했다."}},{"text":{"en":"Shared CLI and UI steps for customers to clear jobs that could not be retried or canceled","ko":"재시도도 취소도 되지 않는 작업을 고객이 정리할 수 있는 CLI 와 UI 방법을 GitHub 커뮤니티 토론 글로 공유했다."}}],"action_items":[{"text":{"en":"Improve deployment and capacity safeguards for the affected services","ko":"영향받은 서비스의 배포 안전장치와 용량 안전장치를 개선한다."}},{"text":{"en":"Strengthen monitoring for the conditions that preceded the incident","ko":"이번 장애에 앞서 나타난 조건을 잡아내도록 모니터링을 강화한다."}},{"text":{"en":"Improve the resiliency and recovery of queued work and runner assignment","ko":"장애가 나도 큐에 쌓인 작업과 러너 배정이 버티고 빨리 복구되도록 개선한다."}},{"text":{"en":"Add automatic recovery for self-hosted runners in upcoming Runner and ARC releases","ko":"다음 Actions Runner 와 Actions Runner Controller 릴리스에 자동 복구를 넣어 손으로 하는 조치가 필요 없게 한다."}},{"text":{"en":"Reduce the risk of cascading failures and speed up recovery during large Actions disruptions","ko":"대규모 Actions 장애에서 연쇄 장애가 번질 위험을 줄이고 복구를 앞당기는 개선을 더 한다."}}],"contributing":["no-spare-capacity","blast-radius-too-wide","manual-action-worsened"],"recurrence_of":null,"symptoms_text":{"en":"From 15:05 UTC on 6 August 2026 GitHub Actions workflow runs failed to start, failed partway through or stayed queued for a long time, on both GitHub-hosted and self-hosted runners. Some requests to the Actions REST API returned errors, and some customers saw unexpected rate limiting in their workflows.\n\nAt the peak, 71% of workflow runs had infrastructure failures and 75% of the remaining runs were delayed by more than 5 minutes. Status updates gave job success rates of 30 to 40% at the low point, about 65% at 20:34 UTC, 97% at 22:18 UTC and 99% at 23:13 UTC. Self-hosted runners saw errors or rate limiting when registering. Copilot code review, Copilot coding agent, GitHub Pages and migrations with GitHub Enterprise Importer were affected as well, and webhook deliveries were delayed.\n\nTo help recovery, webhook triggers were throttled, at one point to about 15% of webhooks, so many push and pull request events did not start workflow runs, and some of those events were never processed and could not be replayed automatically. Later in the incident, runners were stuck retrying jobs that were no longer valid instead of picking up valid work. Afterwards some Actions Runner Controller (ARC) runner pods stayed stuck in an idle state, and some jobs created during the incident could neither be retried nor canceled.","ko":"2026-08-06 15:05 UTC 부터 GitHub Actions 워크플로 실행이 시작하지 못하거나 도중에 실패했고, 일부 Actions REST API 요청이 오류를 냈다. 일부 고객은 워크플로에서 예상하지 못한 rate limiting 을 겪었다.\n\n가장 심할 때 워크플로 실행의 71% 가 인프라 오류로 실패했고, 나머지 실행의 75% 는 5분 넘게 늦어졌다. GitHub 호스트 러너와 자체 호스트 러너가 모두 영향을 받았다. 큐에 들어간 작업의 성공률은 한때 30~40% 까지 떨어졌다.\n\n영향은 다른 서비스로 번졌다. 15:53 UTC 에 GitHub Pages 의 성능이 떨어졌고, Copilot code review, Copilot coding agent, GitHub Enterprise Importer 마이그레이션도 실패하거나 늦어졌다. 웹훅 전달이 늦어졌고, 자체 호스트 러너를 등록할 때 오류나 rate limiting 이 났다.\n\n복구하려고 웹훅 트리거를 줄이는 동안에는 웹훅을 약 15% 만 처리했다. 그래서 많은 push 와 pull request 이벤트가 워크플로를 시작하지 못했다. 이때 처리되지 않은 이벤트는 자동으로 다시 처리할 수 없었다.\n\n용량 문제가 풀린 뒤에도 러너가 더는 유효하지 않은 작업을 배정받고 그 작업을 계속 재시도하느라 유효한 작업을 가져가지 못했다. 장애가 끝난 뒤에는 일부 Actions Runner Controller 러너 파드가 idle 상태에 멈춰 있었다. 장애 중에 만들어진 일부 작업은 재시도도 취소도 되지 않았다."},"updated_at":"2026-11-14T12:34:11.868537Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0471","org_slug":"github"}