IL-0292 Google Cloud · 2017-11-06gcpdatabase
App Engine Memcache was down in all regions for 1 hour 50 minutes when its global datacenter mapping could not be read
App Engine Memcache needs a globally consistent view of the datacenter that currently serves each application, so that it stays strongly consistent when traffic fails over to another datacenter. The configuration that maps applications to datacenters is stored in a global database. After a configuration update, the database entity that holds this configuration became unavailable for both reads and writes. Memcache treats the configuration as invalid if it cannot be refreshed within 20 seconds, so when clients could not fetch it, Memcache stopped working in every region from 12:33 to 14:23 US/Pacific, 1 hour and 50 minutes.
An attempt at 12:59 to roll back the latest configuration change failed, because the rollback was itself an update to the configuration in the same global database. At 14:21 engineers managed to update the configuration by sending the update request with a long enough deadline, which made all replicas of the database synchronise and let clients read the mapping again. The status page later put full recovery for all projects at 15:30. As a temporary mitigation Google reduced the number of readers of the global configuration, which avoids the contention during writes that had led to the unavailability, and started work to regionalise the configuration to limit the blast radius of similar failures.
- Severity
- –
- Scope
- App Engine Memcache unavailable in all regions; all HTTP requests and App Engine API calls failed on Managed VMs; higher Datastore latency and errors for some customers
- Users affected
- All projects using Memcache
- Region
- All regions
- Time to detect
- 1m
- Time to resolve
- 1h 50m
Symptoms
From 12:33 US/Pacific on 6 November 2017, the App Engine Memcache service was unavailable to applications in all regions. Google received an automated alert at 12:34, and the status page said all projects using Memcache were affected.
While Memcache was down, some customers saw higher Datastore latency and errors. Google attributes these to applications sending surges of Datastore operations while Memcache was unavailable, which can cause contention or hotspotting on particular entities or key ranges. Customers on Managed VMs saw every HTTP request and App Engine API call fail, while App Engine Flexible Environment, the successor to Managed VMs, was not affected.
Engineers first looked for recent changes and at 12:59 tried to revert the latest change to the configuration file, but the rollback needed a write to the same global database, and that write also failed. When Memcache came back at 14:23, a surge of traffic raised the load on Datastore servers; some US applications saw higher get latency until 14:31 and higher put latency until 15:04, and Memcache traffic was ramped up gradually while the error rate fell.
Symptom Service outageDatabase overloadHigh latencyHigh error rate
Root cause
Root cause Configuration change
- Trigger
- A configuration update, after which the database entity holding the mapping of applications to datacenters could no longer be read or written.
Detection
Google received an automated alert at 12:34 US/Pacific, one minute after the start.
Remediation
- Sent the configuration update with a long enough deadline, which synchronised the database replicas and let clients read the mapping
- Ramped Memcache traffic back up gradually while the error rate fell
Action items
- Reduce the number of readers of the global configuration to avoid contention during writes
- Regionalise the configuration to limit the blast radius of similar failures
Lessons
–
Sources
- https://status.cloud.google.com/incident/appengine/17007 · official-status · archived copy
References
Related cases
IL-0574Aurora MySQL writer CPU stuck near 100% minutes after Safie pointed production at a new Amazon RDS ProxySafie · 2026same root cause · shared Database
IL-0366Cloud Storage uploads and writes in us-central1 slowed and failed with HTTP 503 as traffic piled onto a few backendsGoogle Cloud · 2026same root cause · shared Database
IL-0179With DEBUG logging and synchronous log output, a high-traffic service filled the 64 KB stdout pipe, so request threads blocked in write() while holding database connections and HikariCP ran dry, failing requests in 30-second burstsMUSINSA · 2026same root cause · shared Database
IL-0561DigitalOcean's Cloud Control Panel and Public API returned up to 25% errors in two windows as authorization timed outDigitalOcean · 2026same root cause · shared Database
IL-0487Autumn's Postgres CPU spiked and about 10% of API requests failed after a collation change left the main query unindexedAutumn · 2026same root cause · shared Database
IL-0063VPN outage after recreating a Redis StatefulSet restarted the whole Redis cluster without readiness checksAdGuard VPN · 2025same root cause · shared In-memory cache
IL-0283Cloudflare's core proxy returned HTTP 5xx across its network after loading an oversized Bot Management feature fileCloudflare · 2025same root cause · shared Database
IL-0528Cloud Pub/Sub could not publish or subscribe in ten regions, and some ordered subscriptions stayed stuck for hoursGoogle Cloud · 2025same root cause · shared Database
IL-0392MariaDB replication of section x1 between eqiad and codfw broke on a missing heartbeat row during a cookbook runWikimedia Foundation · 2024same root cause · shared Database
IL-0367Azure Storage in Central US rejected VM disk I/O, taking down VMs and the SQL Database and Cosmos DB services on themMicrosoft Azure · 2024same root cause · shared Database
IL-0511MIT xPro stopped responding after a configuration deploy as pgbouncer logins to RDS failed with 'wrong password type'MIT Open Learning · 2023same root cause · shared Database
IL-0331An RDS MySQL Multi-AZ failover lost 5 seconds of committed data and broke replication on all five read replicasRazorpay · 2020same root cause · shared Database
IL-0272New Cassandra nodes served reads for data they did not hold, so Monzo records looked missing and payments failedMonzo · 2019same root cause · shared Database
IL-0430Mackerel's Redis stopped answering during a replication setup, keepalived failed over by mistake, and Mackerel degradedHatena · 2018same root cause · shared In-memory cache
IL-0325DigitalOcean's control panel and API were down for 4 hours 56 minutes after the production primary database was deletedDigitalOcean · 2017same root cause · shared Database
IL-0215Twilio's billing Redis master lost all balances and went read-only, and auto-recharge charged customer cards repeatedlyTwilio · 2013same root cause · shared In-memory cache
Check your cluster for this
For AI tools and scripts
- This case as JSON: https://incidentlib-api.benchlet.com/cases/IL-0292
- The cases most like it: https://incidentlib-api.benchlet.com/cases/IL-0292/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.