IL-0368 PlanetScale · 2025-10-20awsdatabasenetworking
PlanetScale's control plane went down and some database branches failed queries during the AWS us-east-1 outage
The incident had two phases. In the first, the PlanetScale control plane service that creates, resizes and configures database branches, which is hosted in AWS us-east-1, was unavailable. That service depends on PlanetScale's internal secret-distribution service, which depends on Amazon S3, which depends on AWS STS, and AWS STS was impacted by the Amazon DynamoDB outage. The dashboard, hosted by a provider that also runs in us-east-1, was intermittently available, SSO logins failed and the status site could not be updated. No database branch lost capacity or connectivity. PlanetScale engineers investigated but took no corrective action, and service returned at 9:30 UTC once the upstream providers recovered.
In the second phase, from 10:05 UTC, new EC2 instances could not be launched in us-east-1, so branch creates and resizes stayed queued while existing MySQL and Postgres servers kept running. To need fewer new instances, engineers disallowed new databases in us-east-1 and made us-east-2 the default region, delayed new backups and cancelled pending ones that were waiting for an instance (a PlanetScale backup launches an extra replica that restores the previous backup and catches up on replication before taking the new one), asked PlanetScale Managed customers with vtgate autoscaling to shed load, paused the routine draining of instances older than 30 days, and kept vacant instances for reuse instead of terminating them. The most important change was to bin-pack vtgate processes more tightly than usual, closer to CPU capacity, for customers with autoscaling, so there was enough vtgate capacity for the US work day.
From about 14:30 UTC partial network partitions between availability zones made many queries fail for some customers, depending on which zones a branch used and whether its traffic crossed zones. Automated failover moved primaries to the majority side of the partitions, and engineers sent manual reparent requests to move primaries to healthier zones or next to the customer's application. The partitions healed gradually between about 18:30 and 19:30 UTC. PlanetScale's edge load balancer and some vtgate processes could not recover on their own because of how those processes had experienced the partition, and engineers restarted them. The incident commander declared the incident resolved at 20:32 UTC.
- Severity
- –
- Scope
- PlanetScale control plane (creating, resizing and configuring database branches), dashboard, SSO login and status page; queries, replication and query routing for some database branches in us-east-1
- Users affected
- –
- Region
- AWS us-east-1
- Time to detect
- –
- Time to resolve
- –
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.
During the same phase the PlanetScale dashboard was available only on and off, customers who sign in with SSO could not log in unless they were already logged in, and PlanetScale could not post updates to its status site, which was itself down for at least half an hour.
At 10:05 UTC an alert showed a Kubernetes operator in a large single-tenant customer installation using up all its resources, which usually means rising latency or control plane requests failing and being retried. Responders found that new EC2 instances could not be launched in us-east-1, so requests to create or resize database branches stayed queued. With the US East Coast about to start its Monday, some of the largest customers, who autoscale the vtgate component of their Vitess clusters on a daily cycle, were heading into their weekly peak traffic with less than half the vtgate capacity of the week before.
From about 14:30 UTC partial network partitions in us-east-1 made a significant share of some customers' queries fail. Some database servers were reachable from the Internet but could not talk across availability zones for query routing, replication or both. Some replicas started and reached container registries but could not replicate from their MySQL or Postgres primary. Some servers could not resolve internal DNS names, and others could not connect to the internal services those names resolved to.
Symptom Service outageScale-up failureNetwork unreachableHigh error rateReplication lagDNS resolution failures
Root cause
Root cause Cloud provider outage
- 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.
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.
Sources
Related cases
IL-0488Kit's RDS MySQL write latency rose 100x and running threads jumped from 9 to 900, backing up Sidekiq job queuesKit · 2022same root cause · shared Database, Database replication
IL-0322A GCP storage incident degraded the disk under GitLab.com's primary PostgreSQL and caused two bursts of site-wide 503sGitLab · 2026 · sev1same root cause · shared Database
IL-0318Clerk's APIs went down with lock contention and 429s while a Google Cloud SQL live migration slowed its database diskClerk · 2026same root cause · shared Database
IL-0357Up to 22% of Vercel static file requests failed when part of its global cache was lost during the AWS us-east-1 outageVercel · 2025same root cause · shared Object storage
IL-0284Workers KV failed 90.22% of requests in a third-party storage outage, breaking Access, WARP and many Cloudflare productsCloudflare · 2025same root cause · shared Database
IL-0119ChatGPT web service pods crash-looped on failing health checks after a Cosmos DB failure, leaving too few healthy pods to serve the web layerOpenAI · 2025same root cause · shared Database
IL-0145A power sag and chiller failure in one Australia East availability zone took down the AKS control plane's compute and its non-zone-redundant SQL Database operation queue, blocking AKS create, update and delete operations in Australia East and Australia SoutheastMicrosoft Azure · 2023same root cause · shared Database
IL-0172An AWS Tokyo data centre cooling failure took down 6 of 60 CockroachDB nodes on Kubernetes within 22 minutes, and ranges lost quorum because the Helm-deployed cluster had no availability zone locality configuredDevsisters · 2021same root cause · shared Database
IL-0193A GCP persistent disk degradation took down a Cassandra StatefulSet whose OrderedReady policy blocked recovery, and Metrictank could not reconnect to the recreated pods, causing a 23-hour Graphite query outageGrafana Labs · 2019same root cause · shared Database
Check your cluster for this
For AI tools and scripts
- This case as JSON: https://incidentlib-api.benchlet.com/cases/IL-0368
- The cases most like it: https://incidentlib-api.benchlet.com/cases/IL-0368/similar
- MCP server (Streamable HTTP, no key):
https://incidentlib-mcp.benchlet.com/mcp
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.