Incident Library
  • Root cause
  • Component
  • Symptom
  • Contributing factor
  • Case

Cases19 cases

1 to 5 of 19

  1. Symptoms

    On 31 March 2026 Buttondown was down twice, for about seven and about thirteen minutes. New requests could not get a database connection and failed, although the database itself was healthy: queries were fast, CPU and memory were fine and replication lag was nominal.

    Root cause
    Component
    Contributing factor
    Detection

    User reports and the team's own manual observation, not automated monitoring. The health check endpoint kept returning 200 for most requests, so no alert fired.

    Remediation
    • Killed active queries to free database connections in the first outage
    • Restarted the database to force-kill the running queries in the second outage
    Action items
    • Reserve a small number of database connections for administrative access
    • Monitor and alert on the database connection count as a percentage of the configured maximum
    • Make the health check endpoint run a lightweight query so connection exhaustion shows in the health checker and the load balancer
    • Add database connection limits to the quarterly capacity review
    • Document and script a fallback that force-recycles workers to release connections without needing a database connection
    Lessons

    Buttondown notes that the tool used to recover from the first outage needed the same resource that was exhausted, which locked the team out during the second outage, and that a health check which cannot detect connection exhaustion, the most common failure mode, gives little protection. A configuration value set long ago drifted out of line with traffic because nobody reviewed it.

  2. Symptoms

    At 07:06 UTC on 20 October 2025, PubNub's monitoring alerted on raised error levels across multiple services in the IAD (US-East) region. Customers could see higher error rates and latency, and Presence was intermittently unavailable in IAD, SJC (US-West) and HND (AP-Northeast).

    Trigger

    A broad infrastructure outage at AWS, PubNub's cloud provider, in the IAD (US-East) region.

    Root cause
    Component
    –
    Contributing factor
    Detection

    PubNub's monitoring systems alerted at 07:06 UTC on raised error levels across multiple services in IAD.

    Remediation
    • Started regional failover procedures and re-routed new connections to other regions
    • Reset established connections by hand
    • Re-routed Presence traffic to Frankfurt (EU-Central)
    • Brought on additional infrastructure in other regions to absorb traffic
    • Isolated the US-East region again when the second wave hit US-West
    • Scaled up balancer capacity in US-West
    • Rebalanced traffic after AWS restored service and US-East was confirmed stable
    Action items
    • Consolidate and centralise regional failover procedures so they are complete and immediately accessible for all production services
    • Fill gaps in process documentation for newer services before they are fully adopted into production
    • Fix internal tooling problems, including inventory and DNS resolution, that made mitigation harder
  3. Symptoms

    At 17:52 UTC on 12 June 2025, Cloudflare's WARP team saw registrations of new devices failing and declared an incident. Minutes later the Cloudflare Access team got an alert on a rapid rise in error rates, and Service Level Objectives for several other services fell below target. All of them shared one cause: Workers KV was unavailable.

    Trigger

    Part of the storage infrastructure behind Workers KV is backed by a third-party cloud provider, and that provider had an outage. Workers KV could then no longer serve cold reads or writes from its central data store.

    Root cause
    Component
    Contributing factor
    Detection

    The WARP team saw registrations of new devices failing at 17:52 UTC and declared an incident. At 18:05 the Access team received an alert on a rapid increase in error rates and Service Level Objective alerts fired across several teams; at 18:06 the incidents were combined once Workers KV unavailability was identified as the shared cause.

    Remediation
    • Activated the Challenges and Turnstile kill switches so visitors were not blocked
    • Degraded Gateway rules that referenced identity or device posture state to remove the Workers KV dependency
    • Force-dropped Access identity and device posture requests to shed load on Workers KV
    • Worked on a Workers KV release against an alternative backing datastore in case the storage stayed down
    • Restored Access and Device Posture calls to Workers KV once the third-party service was back
    Action items
    • Avoid singular dependencies on storage infrastructure that Cloudflare does not own
    • Improve the ability to recover critical services, including Access, Gateway and WARP
    • Add redundancy to Workers KV's storage infrastructure and remove the dependency on any single provider
    • Make each affected product resilient to the loss of any single point of failure, third-party dependencies included
    • Build tooling to re-enable namespaces progressively during storage incidents, so services come back without overloading Cloudflare's own infrastructure
    Lessons

    Cloudflare holds itself responsible for its choice of dependencies and how it architects around them, even when a vendor failure was the trigger. Building many products on Workers KV normally makes them more robust than separate storage services would, but here the cascading failure of Workers KV made the outage worse and widened its blast radius.

  4. Symptoms

    From 06:00 UTC on 10 June 2025, Heroku services degraded badly: customers reported intermittent logins, applications failed, and Heroku's monitoring detected widespread errors with dyno networking. Heroku's own tools and the Heroku Status Page were affected as well, which delayed communication with customers and left many of them without accurate status updates. Only at 13:58 UTC did the team find a workaround to post updates to the @herokustatus account on X.

    Trigger

    An automated operating system update ran on Heroku's production infrastructure when it should have been disabled, and it restarted the hosts' networking services.

    Root cause
    Component
    Contributing factor
    Detection

    Customers reported intermittent logins, and Heroku's monitoring detected widespread errors with dyno networking. Heroku's own tools and the Heroku Status Page were affected as well.

    Remediation
    • Restarted internal instances in rotation, which gave some relief
    • Had an upstream vendor invalidate the token used for the automated updates
    • Disabled the automated upgrade service
    • Recycled dynos across the whole fleet
    Action items
    • Put permanent controls in place so no system change happens outside the controlled deployment process
    • Audit all base images for similar risks
    • Make network routing survive graceful restarts of the networking service
    • Build fully independent backup communication channels
    • Overhaul incident response tooling, including tools that run queries across the whole fleet
    • Streamline break-glass procedures for rapid access to critical systems
    • Improve monitoring to detect complex issues earlier
    Lessons

    Heroku's post-mortem names three areas: production lacked immutability controls, so an automated process could change it; communication was too slow, made worse by a status page that went down with the platform; and gaps in tooling and process made recovery take longer than it should have.

  5. Symptoms

    At 20:45 UTC on 28 May 2025, most of Twingate's API traffic started going to a single backend service, which was overwhelmed and returned elevated error rates, so API calls failed widely across core services.

    Trigger

    A rollout that updated the routing rules of Twingate's global load balancer.

    Root cause
    Component
    Contributing factor
    Detection

    The incident was detected at 20:48 UTC, three minutes after API traffic was first misrouted, and triage began.

    Remediation
    • Started a rollback of the routing change at 20:52 UTC; the automated rollback stalled on infrastructure dependencies
    • Applied a manual fix with local tooling at 21:09 UTC, which restored service by 21:14 UTC
    Action items
    • Correct the routing rule
    • Add alerts that detect backend traffic anomalies in lower environments
    • Improve resource scaling thresholds
    • Decouple infrastructure tooling from service dependencies so recovery has faster options
    • Introduce backend sharding to isolate customer workloads and reduce the impact of incidents
Check your cluster for this

These 19 cases involve Database and Automated capacity manager. 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 cause8

Capacity exhaustion5 cases

  1. IL-0497 Buttondown's database ran out of connections twice in one day and requests failed while health checks mostly passed
  2. IL-0384 Amazon Kinesis front-end servers in US-EAST-1 could not route requests, so Kinesis and services built on it failed
  3. IL-0492 Hosted Graphite's self-hosted load balancers hit their connection limit in an AWS outage, timing out its site and APIs
  4. IL-0333 A downsized RDS PostgreSQL database maxed out its CPU at US peak and failing ELB health checks took buildkite.com down
  5. IL-0282 DynamoDB in US-East reached about 55% request errors as storage servers overloaded its metadata service

Cloud provider outage3 cases

  1. IL-0559 PubNub services degraded in US-East during an AWS outage in the IAD region, and failover load then degraded US-West
    PubNub2025
  2. IL-0284 Workers KV failed 90.22% of requests in a third-party storage outage, breaking Access, WARP and many Cloudflare products
  3. IL-0220 An overloaded AWS Transit Gateway dropped packets on 4 January 2021, and Slack's web tier saturated and went down
    Slack2021

Breaking change in an upgrade1 case

Organisation
  1. IL-0227 Most Heroku dynos in Private Spaces lost outbound connectivity after an automated OS update restarted host networking
    Heroku2025

Configuration change4 cases

  1. IL-0543 Twingate API traffic piled onto one backend behind the global load balancer, failing core services for 29 minutes
  2. IL-0285 Clever Cloud's Pulsar brokers stalled in a minor upgrade, then hypervisors overloaded and crashed with kernel panics
  3. IL-0254 Square's internal DNS servers failed and Square products, services and payments were unavailable for about 15 hours
    Square2023
  4. IL-0272 New Cassandra nodes served reads for data they did not hold, so Monzo records looked missing and payments failed
    Monzo2019

Software defect2 cases

  1. IL-0223 A connection surge congested the devices between AWS's internal and main networks in us-east-1, breaking EC2 APIs
  2. IL-0222 Google Cloud US regions had heavy packet loss and some went unreachable after the network control plane was descheduled

Operator error2 cases

  1. IL-0221 A backbone maintenance command disconnected all Facebook data centers, and its DNS servers withdrew their BGP routes
    Meta2021
  2. IL-0534 Amazon S3 in US-EAST-1 could not serve GET, LIST, PUT or DELETE requests for hours while its index subsystem restarted

Faulty deployment1 case

Organisation
  1. IL-0229 bunny.net's DNS servers crashed in a loop on a corrupted routing database file and could not fetch a fix from its CDN

Dependency failure1 case

Organisation
  1. IL-0273 A power disruption took GitHub's Redis clusters offline, the app could not boot, and GitHub served 503s for 2 hours
    GitHub2016