Cases3 cases
1 to 3 of 3
IL-0552CircleCI's archival database ran out of storage, slowing workflow and job starts and the display of workflows in the UICircleCI2025- Symptoms
At about 23:00 UTC on 21 January 2025, an automated alert reported that the CircleCI database instance holding archived data was almost out of free storage space. From 23:50 UTC customers saw slow starts and cancellations of workflows and jobs, and delays and difficulty viewing workflows in the CircleCI UI, although pipelines for a specific project could still be viewed.
- Trigger
A code change to a function in the archival database on 16 January 2025 unintentionally made it write an excessive number of log messages, and the database filled its storage.
- Root cause
- Component
- Contributing factor
- Detection
An automated alert at about 23:00 UTC warned that the archival database was almost out of free storage, before customers were affected. The growing workflows queue was not linked to it at first because a separate alert about request volume fired at about the same time.
- Remediation
- Scaled up the event consumer that processes the workflows queue at 23:44 UTC
- Promoted a read replica of the archival database to a standalone primary at 23:55 UTC
- Action items
- Fix the database function so it no longer writes an excessive number of log messages
- Add a max duration to the workflows retry policy for archiving so it fails earlier than the default timeout
- Move workflow archival to an event-based model that decouples it from the workflows service
- Add forecast and anomaly monitoring for databases that alerts on unusual activity before it reaches critical levels
- Lessons
The storage alert on the archival database did fire, but the database filled much faster than forecast, so there was little time to act before customers were affected. Because the workflows service called the archival service synchronously, a problem in the archival database slowed the whole workflows service.
- Symptoms
On 20 September 2023 the sprint 82 production deployment of TANF-app failed with a disk space error while it ran a large search-index migration, search_indexes 0017, against the production PostgreSQL database on cloud.gov. Production could not be deployed again until 9 November.
- Trigger
The sprint 82 deployment on 20 September 2023 recreated the deleted search_indexes migration 0016 and ran the large migration search_indexes 0017 against the production database.
- Root cause
- Component
- Contributing factor
- Detection
The sprint 82 production deployment failed with a disk space error, and the large migration search_indexes 0017 was identified as the cause.
- Remediation
- Increased the production database instance size and re-ran the migrations
- Created a backup of the production database
- Truncated all of the search_indexes tables
- Redeployed the sprint 82 release
- Fixed the bug that stored empty fields as blank strings
- Action items
- Write troubleshooting steps for database problems into the technical documentation
- Write wiki pages and operations playbooks that outline common problems and responses
- Add a database section and the cf revisions command to the failed-deployment troubleshooting document
- Keep a GitHub repository of changes made directly to production
- Save terminal output from production debugging sessions
- Create Django migration best practices to enforce in code reviews
- Do not edit migrations that have been merged to develop; write a new migration instead
- Rename auto-generated migrations to more descriptive names
- Use one auto-generated migration per model change and regenerate when a pull request makes successive changes
- Organise a discussion on database seeding and backups for testing
- Lessons
The work was unplanned and pulled in many developers from a small team, so the team wants documentation and playbooks that let fewer people step away from current work. Large datasets and unexpected edge cases such as rows without space-fill had not been tested, and a copy of the production database with PII scrubbed would allow tests against real-world data. Deploying in-progress code to other environments and changing migrations afterwards had caused conflicts there.
IL-0566Hot ranges after a Cookie Run: Kingdom guild update drove CockroachDB nodes to 100% CPU, forcing emergency maintenanceDevsisters2021- Symptoms
About half an hour after the Cookie Run: Kingdom guild update maintenance ended at 11:00 on 6 March 2021, one CockroachDB node was using all 24 cores of its 24-core machine and server metrics began to show a significant number of errors. Soon two more nodes showed abnormal CPU use.
- Trigger
During the guild update maintenance, new guild tables were added and pre-split across the cluster, and a new database node was added to replace one removed a few days earlier for a physical hardware issue. When the game reopened, all players at once wrote to existing tables whose primary-key prefixes were new or had changed in the update.
- Root cause
- Component
- Contributing factor
- Detection
Monitoring after the maintenance showed one node's CPU at the ceiling together with errors in server metrics. Later a Slack alert reported a node failing its Host Status Check, and the abnormal-log channel reported filemap_fdatawait_range_keep_errors.
- Remediation
- Blocked new logins without kicking players already in the game, using the maintenance switch as a makeshift access queue
- Put the game into full emergency maintenance at 14:50 when several nodes failed health checks
- Backed up the game data table by table after the full database backup stalled
- Paused writing play records to reduce load on the database before reopening
- Split the problem tables from about 18:30
- Decommissioned the node that failed its Host Status Check
- Reopened the game and used the login-block queue again when a node reached 100% CPU
- Terminated the node that kept returning to 100% CPU
- Lessons
In a single-server relational database a change to the primary-key prefix is usually harmless, but in CockroachDB's distributed design such a change on a production cluster needs great care. The team had studied this in CockroachDB documentation, but living through it taught far more than reading about it.
These 3 cases involve Database and CI system. 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 cause1
Faulty deployment3 cases
- Component
- Contributing factor
IL-0552CircleCI's archival database ran out of storage, slowing workflow and job starts and the display of workflows in the UICircleCI2025IL-0523TANF-app production deployments were blocked for two months when a search-index migration ran out of database disk spaceIL-0566Hot ranges after a Cookie Run: Kingdom guild update drove CockroachDB nodes to 100% CPU, forcing emergency maintenanceDevsisters2021