Incident Library
Applied filters ComponentObject storageSymptomHigh error rateClear allEvery case under the filters, with no sentence; newest first.
Suggested filters Search, and the values found in your words appear here.

Graph

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

Cases8 cases

1 to 5 of 8

  1. Symptoms

    From 04:00 US/Pacific on 8 October 2026, Google Cloud Storage upload and write operations in the us-central1 region became slow and failed. Clients mostly saw HTTP 503 UNAVAILABLE errors on WriteObject operations and client-side timeouts.

    Trigger

    A configuration update to the Cloud Storage load balancing layer turned on a traffic sorting optimization that was meant to deal with local capacity constraints. The recurrence on 9 October came from an incomplete rollback of an upload planner feature.

    Root cause
    Component
    Contributing factor
    Detection

    Google engineering teams monitoring system telemetry detected the problem at 04:50 US/Pacific on 8 October, 50 minutes after it began.

    Remediation
    • Drained traffic from the most overloaded storage backend nodes
    • Deployed a configuration change that disabled the traffic sorting optimization
    • Rolled back a recent update to the metadata database service
    • Redirected traffic and drained affected storage components again during the recurrence
    • Fully reverted the load balancing configuration change, restoring capacity-aware routing
    • Returned the drained nodes to service once resource use was back to normal
    Action items
    • Validate load balancing logic changes in smaller regions before rolling them out to large, highly utilized regions
    • Make the storage load balancing enforce capacity constraints so traffic cannot bypass pre-spilling safeguards
    • Speed up internal data movement within highly utilized storage cells to absorb temporary load spikes
  2. Symptoms

    For about two weeks in August 2026, some PyPI users got intermittent 502 and 503 errors when downloading files from files.pythonhosted.org, and installations from PyPI failed. The first two reports of persistent 502s were opened in the support tracker on 17 August.

    Trigger

    A partial rollback during a canary deployment inside Fastly's network, whose canary cohort had included PyPI's traffic for a number of years, left the caching configuration of one Seattle point of presence reverted while the routing configuration in front of it was not.

    Root cause
    Component
    Contributing factor
    Detection

    Users filed reports in the PyPI support tracker; one report isolated the 502s to a single Fastly cache node using the x-served-by headers of the failing responses.

    Remediation
    • Fastly's network operations removed the routing override that sent part of PyPI's traffic to the affected point of presence
    • Fixed the B2-to-S3 fallback for the case where B2 does not respond at all (infra#237)
    • Exempted suffix and multi-range requests from segmented caching (infra#241, infra#243)
    • Fastly patched the canary configuration bug and removed all PSF traffic from its canary cohort
    • Moved the segmented-caching exemption check after URL normalization (infra#245)
    Action items
    • Improve the logging configuration of the file hosting service (infra#238)
    • Reject HTTP methods that a file host should not receive (infra#239)
    • Follow a support ticket with Fastly about segmented-caching range handling, and revert PyPI's own handling code once Fastly fixes it
    • Return to Fastly's canary program once clearer controls and notifications exist around that traffic
    • Hire an infrastructure engineer, partly for PyPI, to catch conditions like this earlier
    Lessons

    None of the PyPI configuration bugs were new; they had been in the configuration for a while and came out only when real traffic on large files with range requests forced an investigation. The 5xx baseline was already noisy, so the start of the Fastly problem was easy to miss, and part of that noise turned out to be one of the bugs.

  3. Symptoms

    On 20 October 2025 at 07:45 UTC, while Vercel was moving traffic away from its us-east-1 region (iad1) during the AWS us-east-1 outage, a cascading failure took out a percentage of Vercel's global caching infrastructure. Failures of static file serving peaked at about 22% of traffic, the largest impact of the whole event, until service was restored at 08:18 UTC.

    Trigger

    The AWS us-east-1 region (Vercel's iad1) failed on 20 October 2025, and Vercel began re-routing traffic and function invocations away from it; at 07:45 UTC a cascading failure followed in the global caching infrastructure.

    Root cause
    Component
    Contributing factor
    –
    Detection

    The first automated alerts, for errors across Vercel services, fired at 06:55 UTC at the start of the us-east-1 disruption, 50 minutes before the cache failure began; incidents were created automatically and on-call engineers were paged.

    Remediation
    • Re-routed end-user traffic away from iad1 into neighbouring data centers
    • Re-routed function invocations to configured backup or secondary regions
    • Restored static file serving at 08:18 UTC and mitigated the root cause of the cascading cache failure
    Action items
    • Write a detailed technical postmortem leading to systematic mitigation of the failure modes these disruptions exposed
    • Continue and intensify rehearsals of major regional disruptions
  4. Symptoms

    At 7:13 UTC on 20 October 2025, PlanetScale's continuous tests in production started failing because they could not create new database branches. The service that creates, resizes and configures database branches was unavailable, a near-total control plane outage, while existing database branches kept their capacity and connectivity.

    Trigger

    The incident started with a DNS misconfiguration at one of PlanetScale's service providers. An Amazon DynamoDB outage impacted AWS STS, and several hours of capacity constraints and network instability in AWS us-east-1 followed.

    Root cause
    Component
    Contributing factor
    –
    Detection

    PlanetScale's continuous testing in production started failing and alerted engineers at 7:13 UTC. At 10:05 UTC an alert fired for a Kubernetes operator in a large single-tenant customer installation exhausting its resources.

    Remediation
    • Disallowed new databases in us-east-1 and made us-east-2 the default region for new databases
    • Delayed new backups and cancelled pending backups that were waiting for an EC2 instance
    • Advised PlanetScale Managed customers with vtgate autoscaling to shed load
    • Paused draining and terminating EC2 instances older than 30 days
    • Kept vacant EC2 instances for reuse instead of terminating them
    • Bin-packed vtgate processes more tightly for customers with autoscaling
    • Sent manual reparent requests to move primaries to healthier availability zones
    • Restarted the edge load balancer and vtgate processes that did not recover after the partitions healed
    Action items
    • Understand and become resilient to the failure modes of SaaS dependencies for CI/CD, SSO, web application hosting and incident communication
    • Investigate more ambitious ways to reduce runtime dependence on internal and AWS services
    • Look into using all six us-east-1 availability zones to tolerate zonal outages and partitions
    Lessons

    Keeping the control plane separate from the data plane meant the control plane outage did not affect customer databases, and redundancy, automated failover and zonal traffic routing limited the effect of the network partitions. Network partitions are hard to reason about, test and tolerate: with three availability zones a system survives losing one zone only if the other two can still reach each other reliably.

  5. Symptoms

    From 21:38 UTC on 21 March 2025, Cloudflare R2 object storage returned errors for 1 hour and 7 minutes: all object writes failed and about 35% of object reads failed globally. R2 global availability alerts fired at 21:45 UTC, at a 2% error budget burn rate.

    Trigger

    During a routine rotation of the credentials the R2 Gateway Worker uses to authenticate with the storage infrastructure, the new credentials were deployed to the Worker of the default environment instead of the production Worker, and the old credentials were then removed from the storage infrastructure at 20:37 UTC.

    Root cause
    Component
    Contributing factor
    Detection

    R2 global availability alerts fired at 21:45 UTC, seven minutes after impact began, at a 2% error budget burn rate, and the R2 engineering team turned to operational dashboards and logs.

    Remediation
    • Deployed the new credentials to the production R2 Gateway Worker, which restored R2 availability
    Action items
    • Add logging tags with the suffix of the credential ID the R2 Gateway Worker uses
    • Require confirmation that the new token ID suffix matches storage infrastructure logs before deleting the old token
    • Run key rotation through the hotfix release tooling, which enforces the environment, instead of manual wrangler commands
    • Write the two-person validation of these changes into the standard operating procedures
    • Extend the closed loop health check system to test new keys, report their status through alerting and confirm global propagation before releasing the gateway Worker
    • Add observability views of upstream success rates that bypass caching
    Lessons

    Because the deletion of the old credentials took effect gradually, availability metrics were a poor way to confirm the change. Cloudflare said the team should have checked directly which token the R2 Gateway service was using to authenticate with the storage infrastructure instead of relying on those metrics.

Check your cluster for this

These 8 cases involve Object storage and CDN and edge network. 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 cause6

Configuration change1 case

Organisation
  1. IL-0366 Cloud Storage uploads and writes in us-central1 slowed and failed with HTTP 503 as traffic piled onto a few backends

Dependency failure2 cases

  1. IL-0515 Downloads from files.pythonhosted.org failed with intermittent 502 and 503 errors for two weeks, breaking PyPI installs
  2. IL-0343 DNS names under digitaloceanspaces.com stopped resolving, breaking Spaces, Container Registry and the Control Panel

Cloud provider outage2 cases

Contributing factor
–
  1. IL-0357 Up to 22% of Vercel static file requests failed when part of its global cache was lost during the AWS us-east-1 outage
    Vercel2025
  2. IL-0368 PlanetScale's control plane went down and some database branches failed queries during the AWS us-east-1 outage

Operator error1 case

Organisation
  1. IL-0378 All Cloudflare R2 object writes and about 35% of reads failed when the R2 Gateway could not authenticate to storage

Software defect1 case

  1. IL-0535 An internal Kinesis Data Streams cell in US-EAST-1 degraded, raising errors in CloudWatch Logs, S3 events and Lambda

Capacity exhaustion1 case

Organisation
  1. IL-0382 Linode Object Storage in Newark and Atlanta returned 503 Slow Down to all clients under very high inbound traffic
    Linode2022