Incident Library

IL-0552 CircleCI · 2025-01-21database

CircleCI's archival database ran out of storage, slowing workflow and job starts and the display of workflows in the UI

CircleCI's workflows service calls the archival service synchronously when it archives workflows. A code change to a function in the archival service's database on 16 January 2025 unintentionally made the database write an excessive number of log messages, and the database filled far faster than CircleCI had forecast. At about 23:00 UTC on 21 January an alert warned that the database was almost out of free storage. Halting a blue/green deployment at 23:09 to free a logical replication slot did not help. When the database reached capacity, calls from the workflows service timed out, the workflows queue grew from 23:26, and customers saw delays from 23:50. Another team scaled up the event consumer that processes the queue at 23:44, and the team on the database promoted a read replica to a standalone primary at 23:55. The workflows queue was back to normal by 00:03.

At about the same time, Linux machine jobs began to queue because provisioning instances with CircleCI's cloud provider returned errors; the provider was investigating increased API error rates on the provisioning endpoint in that region. Requests began to be fulfilled around 00:32, but the volume of requests met rate limiting, which lengthened the impact. Queues were normal at 00:56 UTC and the incident was resolved at 01:26 UTC. After the incident the database function was changed to stop the excessive logging.

Severity
–
Scope
Starting and cancelling workflows and jobs on CircleCI was slow and the CircleCI UI had trouble showing workflows; Linux machine jobs then queued (Pipelines & Workflows and CircleCI UI)
Users affected
CircleCI customers
Region
–
Time to detect
–
Time to resolve
1h 6m

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.

The first action on the database did not help. At 23:09 the team halted a blue/green deployment on the database to free a logical replication slot, suspecting the slot was the cause, but the database did not recover.

The workflows service calls the archival service synchronously, so when the archival database reached capacity those calls began timing out and the workflows queue grew from 23:26. The growth was not linked to the archival database at first, partly because a separate alert about request volume fired at about the same time. When the queue kept growing after that other issue resolved, a second team investigated workflows. After the queue recovered at 00:03, Linux machine jobs queued because provisioning instances with the cloud provider returned errors, and the volume of requests then ran into rate limiting until queues were normal at 00:56.

Symptom High latencyIntermittent timeoutsLog floodNode disk fullCloud API rate limit exhausted

Root cause

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.

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

Action items

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.

Sources

Related cases

Check your cluster for this

kubegap audits a Kubernetes cluster for conditions like the ones in this case, Database, CI system among them, read-only, from Claude Code or Codex. Its checks cite public reports like this one.

For AI tools and scripts

The API needs no key. The MCP server offers search_incidents, get_incident, list_incidents, get_topic and vocab; both are explained on API and MCP.