Cases3 cases
1 to 3 of 3
IL-0471GitHub Actions runs failed or sat queued for 9 hours after a routine deployment's pod replacement saturated capacityGitHub2026- Symptoms
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.
- Trigger
A routine deployment to an internal Actions service that processes events and generates Actions jobs replaced pods, and the remaining capacity became saturated.
- Root cause
- Component
- Contributing factor
- Remediation
- Expanded capacity of the affected services
- Throttled incoming webhook-triggered work
- Increased processing capacity for the backlog of affected events
- Deployed changes that stopped runners from repeatedly trying to acquire invalid jobs
- Deployed a fix for self-hosted runners that were not picking up jobs and enabled it incrementally
- Paused migrations with GitHub Enterprise Importer
- Restored webhook-triggered Actions workflows to full throughput
- Rolled back the mitigation that left some ARC runners offline, and recovered those runners by hand
- Shared CLI and UI steps for customers to clear jobs that could not be retried or canceled
- Action items
- Improve deployment and capacity safeguards for the affected services
- Strengthen monitoring for the conditions that preceded the incident
- Improve the resiliency and recovery of queued work and runner assignment
- Add automatic recovery for self-hosted runners in upcoming Runner and ARC releases
- Reduce the risk of cascading failures and speed up recovery during large Actions disruptions
IL-0302Peak load on GitHub's mysql1 MySQL cluster maxed out its database proxy's connections and stopped writes in March 2022GitHub2022- Symptoms
On March 16, 2022 at 14:09 UTC, write operations across GitHub stopped working, including git operations, webhooks, pull requests, API requests, issues, GitHub Packages, GitHub Codespaces, GitHub Actions and GitHub Pages. Under peak-hour load, the database proxy in front of the shared mysql1 MySQL database had reached its maximum number of connections.
- Trigger
Increased load on mysql1 during peak hours, combined with poor query performance in specific circumstances, pushed the database proxy to its maximum number of connections.
- Root cause
- Component
- Contributing factor
- Remediation
- Failed over mysql1 to a healthy replica on March 16
- Reset the application connections to the new primary on March 17
- Added an index that fixed the main query performance problem
- Performed a primary failover on March 22
- Performed a primary failover on March 23
- Throttled webhook traffic to reduce load
- Action items
- Keep throttling webhook traffic at peak load times
- Audit the load patterns of mysql1 during peak hours and make performance fixes based on the audits
- Move traffic to other databases to reduce load and speed up failover
- Review change management, particularly monitoring and changes during high load in production
- Shard the databases and scale up hardware
IL-0263GitHub was slow and erroring all day and down for 18 minutes as links between access and aggregation switches saturatedGitHub2012- Symptoms
On Friday, 30 November 2012, GitHub had sporadic bursts of slow responses and intermittent errors for the whole day and was completely unavailable for 18 minutes. One fileserver pair was offline for a large part of the day, which affected a small percentage of repositories; this was a side effect of the network problems on the high-availability clustering between the fileserver nodes.
- Trigger
On the morning of 30 November GitHub moved the A switches in its server cabinets onto the new aggregation switches, the second half of a migration whose B-switch half had been done the day before.
- Root cause
- Component
- Contributing factor
- Detection
Engineers saw the problems during the maintenance itself: connectivity to the B switch was lost as the last A switch was connected, and afterwards performance stayed low and the links between access and aggregation switches showed as completely saturated.
- Remediation
- Fixed the bridge-loop problem and returned the affected B switch to service
- Removed the partial link failure detection setting from the access switches
- Escalated to the network vendor, which raised the case to its highest severity level
- Restarted core processes on the aggregation switches in a Saturday 0600 Pacific maintenance window so they learned MAC addresses again
- Action items
- Deploy the vendor's software update that fixes the MAC learning issue to the switches
- Closely monitor aggregation-to-access capacity and keep a workaround process ready if the problem returns
- Build a duplicate of the network stack, from the routers through the access switches, as a staging environment for testing such changes
- Add automated network monitoring that alerts sooner on similar issues
- Run scheduled incident response exercises with scenarios that counter tunnel vision
- Contact the network vendor's support at the first sign of trouble in the network
- Lessons
GitHub had designed the maintenance to have no impact on customers and clearly failed, so it plans to invest in a staging copy of its network to test such changes and catch bugs like this one. During the response the team fixated for a long time on a bridge loop, which kept it from considering other causes. GitHub had a very positive experience with the vendor's support staff, so it will contact that support team at the first sign of network trouble.
These 3 cases involve CI system and Database. kubegap audits a Kubernetes cluster for gaps like these, read-only, from Claude Code or Codex; its checks cite public reports like the ones in this library.
By root cause2
Capacity exhaustion2 cases
- Contributing factor
- Organisation
Software defect1 case
- Contributing factor
- Organisation