IL-0528 Google Cloud · 2025-01-08gcpdatabase
Cloud Pub/Sub could not publish or subscribe in ten regions, and some ordered subscriptions stayed stuck for hours
Cloud Pub/Sub keeps the metadata of its storage system in a regional database, including which messages were published and in what order the messages were published for ordered delivery. Most data plane operations of Cloud Pub/Sub need this database. On 8 January 2025, from 06:54 to 07:30 US/Pacific, a service configuration change that unintentionally over-restricted the permission to access this database was rolled out to multiple regions. The problem did not show in the pre-production environment because its configuration did not match production, and the change went to several regions within a short time instead of following the standard rollout process. Cloud Pub/Sub could no longer read the metadata store, so publish, subscribe and backlog metrics failed in ten regions. Cloud Logging exports and BigQuery Data Transfer Service runs that go through Pub/Sub were also affected. Engineers identified the change and completed its rollback at 08:07, 1 hour and 13 minutes after the start.
The long database unavailability exposed a latent bug in how Cloud Pub/Sub enforces ordered delivery. For subscriptions with ordering enabled, the ordering metadata became inconsistent with the metadata about published messages, and that inconsistency kept a subset of messages from being delivered after the rollback. Telemetry flagged the stuck ordered subscriptions at 09:07, the cause was found at 12:20, and engineers identified and repaired every affected ordered subscription by 23:09, after which the subscriptions received their whole backlog in the proper order.
- Severity
- –
- Scope
- Cloud Pub/Sub publish and subscribe, and backlog metrics, in ten regions for 1 hour and 13 minutes; a small subset of ordered subscriptions could not consume their backlog until 23:09; Cloud Logging exports to Pub/Sub delayed for 26 minutes; BigQuery Data Transfer Service runs failed for 20 minutes
- Users affected
- –
- Region
- europe-west10, asia-south1, europe-west1, us-central1, asia-southeast2, us-east1, us-east5, asia-south2, us-south1, me-central1
- Time to detect
- 9m
- Time to resolve
- 16h 15m
Symptoms
From 06:54 US/Pacific on 8 January 2025, Google Cloud Pub/Sub customers in ten regions could not publish messages or subscribe to them. Internal telemetry alerted Google engineers at 07:03, nine minutes after the impact started.
The affected regions were europe-west10, asia-south1, europe-west1, us-central1, asia-southeast2, us-east1, us-east5, asia-south2, us-south1 and me-central1. Publishing from other regions could fail as well when the message storage policy stored and processed messages in one of these regions. Pub/Sub backlog metrics could be stale or missing. Cloud Logging exports to Pub/Sub were delayed for 26 minutes, and BigQuery Data Transfer Service runs failed to publish to Pub/Sub for 20 minutes.
Publish and subscribe recovered at 08:07, but at 09:07 internal telemetry showed that a small subset of subscriptions with message ordering enabled could not consume their backlog. Their backlog kept growing after the main outage had ended. Google found the cause, inconsistent ordering metadata, at 12:20, and the last of these subscriptions was repaired at 23:09. Message ordering and guaranteed delivery were not broken; the held-back messages were delivered in order once each subscription was repaired.
Symptom Service outageMonitoring outage
Root cause
Root cause Configuration change
- Trigger
- From 06:54 to 07:30 US/Pacific a bad service configuration change, which over-restricted the permission to access the regional metadata database of Cloud Pub/Sub, was rolled out to multiple regions within a short time.
Detection
Internal telemetry alerted Google engineers at 07:03 US/Pacific, nine minutes after the impact started. A second internal telemetry alert at 09:07 showed the ordered subscriptions that could not consume their backlog.
Remediation
- Rolled back the configuration change that over-restricted access to the metadata database
- Identified and repaired every affected ordered subscription so the subscriptions received their backlog
Action items
- Enforce parity between pre-production and production environments so configuration changes are caught before production
- Review change management so configuration changes roll out progressively according to their priority
- Add monitoring that detects ordering metadata inconsistency
- Fix the bug in Cloud Pub/Sub ordering metadata management that left ordered messages undelivered
Lessons
–
Sources
- https://status.cloud.google.com/incidents/ghMho2Gka33Exr9UNavz · 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-0283Cloudflare's core proxy returned HTTP 5xx across its network after loading an oversized Bot Management feature fileCloudflare · 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-0285Clever Cloud's Pulsar brokers stalled in a minor upgrade, then hypervisors overloaded and crashed with kernel panicsClever Cloud · 2024same root cause · shared Message broker
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-0292App Engine Memcache was down in all regions for 1 hour 50 minutes when its global datacenter mapping could not be readGoogle Cloud · 2017same root cause · shared Database
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
Check your cluster for this
For AI tools and scripts
- This case as JSON: https://incidentlib-api.benchlet.com/cases/IL-0528
- The cases most like it: https://incidentlib-api.benchlet.com/cases/IL-0528/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.