{"id":"IL-0528","org":"Google Cloud","date":"2025-01-08","docs":["https://cloud.google.com/pubsub/docs/ordering","https://cloud.google.com/pubsub/docs/resource-location-restriction#message_storage_policy_overview"],"title":{"en":"Cloud Pub/Sub could not publish or subscribe in ten regions, and some ordered subscriptions stayed stuck for hours","ko":"Cloud Pub/Sub 가 여러 리전에서 게시와 구독을 모두 못 했고 순서 지정 구독 일부는 그날 밤까지 메시지를 받지 못했다"},"domain":["gcp","database"],"impact":{"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":"unknown","region":"europe-west10, asia-south1, europe-west1, us-central1, asia-southeast2, us-east1, us-east5, asia-south2, us-south1, me-central1"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":null,"related":[],"sources":[{"url":"https://status.cloud.google.com/incidents/ghMho2Gka33Exr9UNavz","kind":"official-status","archived":"https://web.archive.org/web/20261103082005/https://status.cloud.google.com/incidents/ghMho2Gka33Exr9UNavz"}],"summary":{"en":"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.\n\nThe 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.","ko":"Cloud Pub/Sub 는 저장 시스템의 메타데이터 상태를 리전 데이터베이스에 둔다. 여기에는 게시된 메시지의 정보와 순서 지정 전달에 쓰는 게시 순서가 들어 있다. 대부분의 데이터 플레인 작업이 이 데이터베이스를 거친다. 2025-01-08 미국 태평양 시간 06:54 부터 07:30 사이에 이 데이터베이스의 접근 권한을 의도치 않게 지나치게 제한한 설정 변경이 여러 리전에 배포됐다. 사전 운영 환경은 설정이 운영 환경과 달라서 문제가 드러나지 않았다. 이 변경은 표준 배포 절차를 따르지 않고 짧은 시간 안에 여러 리전에 잘못 배포됐다. Pub/Sub 가 리전 메타데이터 저장소에 접근하지 못하자 게시, 구독, 백로그 지표가 모두 실패했다.\n\n엔지니어들은 07:03 에 내부 텔레메트리로 알림을 받았고, 원인이 된 설정 변경을 찾아 08:07 에 롤백을 마쳤다. 게시와 구독이 막힌 시간은 1시간 13분이었다. 그런데 데이터베이스를 오래 쓸 수 없던 동안 Pub/Sub 가 순서 지정 전달을 지키는 방식에 숨어 있던 버그가 드러났다. 순서에 관한 메타데이터가 게시된 메시지의 메타데이터와 어긋났고, 그 때문에 순서 지정 구독 일부에 메시지 일부가 전달되지 않았다.\n\n엔지니어들은 09:07 에 이 문제로 알림을 받았고, 12:20 에 메타데이터 불일치가 원인이라는 것을 찾았다. 영향을 받은 순서 지정 구독을 모두 찾아 고치는 작업은 23:09 에 끝났고, 고친 구독은 쌓인 메시지를 모두 올바른 순서로 받았다."},"trigger":{"en":"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.","ko":"미국 태평양 시간 06:54 부터 07:30 사이에 잘못된 서비스 설정 변경이 여러 리전에 배포됐다. 이 변경은 리전 메타데이터 데이터베이스에 접근하는 권한을 의도치 않게 지나치게 좁혔다."},"severity":"unknown","symptoms":["service-unavailable","monitoring-down"],"timeline":{"detected_after":"9m","resolved_after":"16h 15m"},"date_kind":"incident","detection":{"en":"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.","ko":"엔지니어들은 영향이 시작되고 9분 뒤인 미국 태평양 시간 07:03 에 내부 텔레메트리로 장애 알림을 받았다. 순서 지정 구독 일부가 백로그를 소비하지 못하는 문제는 09:07 에 역시 내부 텔레메트리 알림으로 알았다."},"components":["message-broker","database"],"root_cause":"config-change","remediation":[{"text":{"en":"Rolled back the configuration change that over-restricted access to the metadata database","ko":"문제를 일으킨 설정 변경을 찾아 미국 태평양 시간 08:07 에 롤백을 마쳤다."}},{"text":{"en":"Identified and repaired every affected ordered subscription so the subscriptions received their backlog","ko":"영향을 받은 순서 지정 구독을 모두 찾아 고쳤고, 이 작업을 미국 태평양 시간 23:09 에 마쳤다."}}],"action_items":[{"text":{"en":"Enforce parity between pre-production and production environments so configuration changes are caught before production","ko":"설정 변경의 영향을 운영 환경에 닿기 전에 잡을 수 있도록 사전 운영 환경과 운영 환경의 설정을 같게 맞추는 규칙을 더 강하게 적용한다. 목표일은 2025년 1월 31일이다."}},{"text":{"en":"Review change management so configuration changes roll out progressively according to their priority","ko":"변경 관리 절차를 검토해 앞으로 설정 변경이 우선순위에 맞춰 단계적으로 배포되게 한다. 목표일은 2025년 1월 31일이다."}},{"text":{"en":"Add monitoring that detects ordering metadata inconsistency","ko":"순서 메타데이터의 불일치를 미리 잡아내는 모니터링을 더한다. 목표일은 2025년 3월 31일이다."}},{"text":{"en":"Fix the bug in Cloud Pub/Sub ordering metadata management that left ordered messages undelivered","ko":"순서 지정 메시지가 전달되지 않게 만든 Cloud Pub/Sub 의 순서 메타데이터 관리 버그를 고친다. 목표일은 2025년 6월 30일이다."}}],"contributing":["staging-not-representative","no-staged-rollout","revert-did-not-restore"],"recurrence_of":null,"symptoms_text":{"en":"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.\n\nThe 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.\n\nPublish 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.","ko":"여러 리전에서 Cloud Pub/Sub 에 메시지를 게시할 수도, 구독할 수도 없었다. 백로그 지표는 오래된 값이거나 아예 비어 있을 수 있었다. 상태 페이지의 제목은 \"Multiple regions completely blocked for subscribe for Pubsub\" 였다.\n\n영향을 받은 리전은 europe-west10, asia-south1, europe-west1, us-central1, asia-southeast2, us-east1, us-east5, asia-south2, us-south1, me-central1 이었다. 메시지 저장 정책에 이 리전이 들어 있으면 다른 리전에서 게시하는 고객도 같은 문제를 겪었을 수 있다.\n\nPub/Sub 를 쓰는 다른 서비스도 함께 영향을 받았다. Cloud Logging 에서 Pub/Sub 로 로그를 내보내는 고객은 모두 26분 동안 내보내기가 늦어졌다. BigQuery Data Transfer Service 는 전송 실행이 Pub/Sub 에 게시하지 못해 20분 동안 실패했다.\n\n미국 태평양 시간 08:07 에 서비스가 돌아온 뒤에도 메시지 순서 지정을 켠 구독 일부는 백로그를 소비하지 못했다. 이 백로그 증가는 09:07 에 드러났다. 이 구독들은 23:09 에 복구될 때까지 쌓인 메시지를 받지 못했다. 메시지 순서와 전달 보장 자체는 깨지지 않았다."},"updated_at":"2026-11-14T12:34:17.135783Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0528","org_slug":"google-cloud"}