# Сбой Google Cloud из-за пустого поля. Три часа.

Published: 2026-09-19

Строка политики с несколькими пустыми полями приводит к ошибке нулевого указателя, и Google Cloud одновременно выходит из строя во всех регионах — затем Cloudflare также падает. 12 июня 2025 года, 17:49 UTC: Service Control, бинарный файл, который одобряет каждый запрос API Google Cloud, считывает изменение политики квот с «непреднамеренными пустыми полями», попадает в путь кода, отправленный двумя неделями ранее без проверки на NULL и без флага функции, и переходит в цикл сбоев в каждом регионе — строка была глобально реплицирована за считанные секунды. Внешние API возвращают 503 в течение трех часов; us-central1 занимает 2 часа 40 минут, потому что перезапускающиеся задачи одновременно обращаются к одной и той же таблице Spanner без рандомизированной задержки. Через три минуты после сбоя Google, Workers KV от Cloudflare — чей источник истины находится на «стороннем облачном провайдере» — теряет 90 % запросов, и Access, WARP, Workers AI, Pages, Stream и Turnstile выходят из строя вместе с ним на 2 часа 28 минут. Страница состояния Google публикует свое первое обновление на час позже, потому что она работает на Google Cloud.

Canonical: https://thedailydiff.dev/ru/video/2026-09-19-google-cloud-null-pointer/

## Что освещается в этом видео

- Пустое поле, нулевой указатель, каждый регион
- Хронология: 29 мая → 17:45 → цикл сбоев → красная кнопка → 17:52 Cloudflare
- us-central1: эффект стада
- Механизм: проверка в пути запроса, глобальная репликация, один поставщик
- git blame — разделение

## Главы

- 0:00 Пустое поле, нулевой указатель, каждый регион
- 0:32 Хронология: 29 мая → 17:45 → цикл сбоев → красная кнопка → 17:52 Cloudflare
- 1:32 us-central1: эффект стада
- 1:43 Механизм: проверка в пути запроса, глобальная репликация, один поставщик
- 2:00 git blame — разделение
- 2:20 Радиус поражения
- 2:33 Вердикт + линия понедельника

## Переведенная стенограмма

Переведено с оригинального английского повествования. Доступные аудио и субтитры контролируются YouTube.

### Пустое поле, нулевой указатель, каждый регион

0:00 Строка политики с пустыми полями вызывает нулевой указатель, и Google Cloud падает в каждом регионе одновременно — и Cloudflare падает вместе с ним, затем называет Google «сторонним провайдером». 12 июня 2025 года, 17:49 UTC. Отчет Google: Service Control, бинарный файл, который одобряет каждый запрос API, в цикле сбоев в течение трех часов. Cloudflare, в тот же вечер: Workers KV, девяносто процентов сбоев, два часа двадцать восемь.

0:23 Как это произошло, почему одно пустое поле стало глобальным за секунды, и кто виноват. Это The Daily Diff, постмортем. 29 мая. Service Control получает новую проверку квоты, развернутую по регионам с

### Хронология: 29 мая → 17:45 → цикл сбоев → красная кнопка → 17:52 Cloudflare

0:35 красной кнопкой — но новый путь кода никогда не запускается во время развертывания; ничто не вызывает его еще. Нет проверки на NULL. Нет флага функции. 17:45. Изменение политики с пустыми полями попадает в таблицу Spanner. Квота глобальна, поэтому строка реплицируется везде за считанные секунды. Каждый бинарный файл Service Control считывает ее, сталкивается с нулевым указателем, падает, перезапускается, считывает ее снова. Каждый вызов API: 503.

0:55 Google работает быстро: устранение в течение двух минут, корневая причина в течение десяти. Красная кнопка выключена через сорок, и небольшие регионы восстанавливаются первыми. Страница состояния публикует свое первое обновление через час, потому что она работает на Google Cloud. 17:52. Команда WARP Cloudflare видит, что новые устройства не регистрируются. Workers KV, хранилище, которое половина Cloudflare использует для конфигурации и идентификации, находится в стороннем облаке. Access не удается выполнить каждый вход — по замыслу, он завершается сбоем.

1:20 Workers AI терпит неудачу при каждом выводе. 19:11, Гергели Орош: два независимых облака упали одновременно, никогда раньше не видел. 19:32, поддержка Google сообщает пользователю, что известных сбоев нет — попробуйте очистить ваши куки. Все остальные восстанавливаются к 19:48.

### us-central1: эффект стада

1:34 us-central1 нет: перезапускающиеся задачи одновременно обращаются к одной и той же таблице Spanner, без рандомизированной задержки, поэтому Google вручную регулирует их. Два часа сорок. Первое: проверка политики находится внутри пути запроса; когда проверка умирает,

### Механизм: проверка в пути запроса, глобальная репликация, один поставщик

1:46 API умирает. Второе: данные квоты становятся глобальными без промежуточной среды; плохая строка — это глобальная строка. Третье: Cloudflare знал. Workers KV был в процессе миграции на свой собственный R2, до одного провайдера — постмортем называет это пробелом в покрытии.

### git blame — разделение

2:00 git blame. Google, пятьдесят пять процентов: нет проверки на NULL, нет флага функции, нет задержки — их отчет говорит, что флаг поймал бы это на стадии тестирования. Глобальная репликация, двадцать: одна строка, каждый регион, секунды. Cloudflare, двадцать: половина линейки продуктов на хранилище одного поставщика, и постмортем, который никогда не называет Google. Страница состояния, пять, за то, что она живет на том, о чем сообщает. Радиус поражения: семьдесят продуктов Google Cloud, десять приложений Workspace,

### Радиус поражения

2:23 каждый регион. Три часа. В Cloudflare: Access, WARP, Workers AI, Pages, Stream — два с половиной. Hacker News, четырнадцатьсот баллов; топ-комментарий: страница состояния зеленая.

### Вердикт + линия понедельника

2:33 Вердикт, постмортем: SHIP IT. Оба постмортема выходят в течение тридцати часов, оба винят себя, и исправления Google конкретны: "fail open", флаги по умолчанию выключены, экспоненциальная задержка. Линия понедельника: новый код за флагом, который отключен, и проверка на NULL там, где поступают данные. Присылайте мне инцидент, о котором вам до сих пор не разрешено говорить, в комментариях или на "the daily diff dot dev". И это The Daily Diff на сегодня.

2:53 Я Нико из Axrisi. Ответственно объединяйте (Merge responsibly).

## Источники

- [Google Cloud Service Health, Incident Report (Jun 13, 2025) + Mini Incident Report (Jun 12)](https://status.cloud.google.com/incidents/ow5i3PPK96RduMcb1SsW) — status.cloud.google.com
- [Cloudflare, "Cloudflare service outage June 12, 2025" (Jun 12, 2025, 22:00 UTC)](https://blog.cloudflare.com/cloudflare-service-outage-june-12-2025/) — blog.cloudflare.com
- [Cloudflare Status, "Broad Cloudflare service outages" (18:19–21:31 UTC)](https://www.cloudflarestatus.com/incidents/25r9t0vz99rp) — www.cloudflarestatus.com
- [Gergely Orosz, 19:11 UTC, "Their infra is fully independent AFAIK"](https://x.com/GergelyOrosz/status/1933240698716729511) — x.com
- [@Google support, 19:32 UTC, "there aren't any known service disruptions"](https://x.com/Google/status/1933246051512644069) — x.com
- [Thomas Kurian (Google Cloud CEO), Jun 13 01:35 UTC](https://x.com/ThomasOrTK/status/1933337436970709493) — x.com
- [Hacker News, "GCP Outage" (1,468 points)](https://news.ycombinator.com/item?id=44260810) — news.ycombinator.com
- [Hacker News, "Cloudflare was down" (341 points)](https://news.ycombinator.com/item?id=44261064) — news.ycombinator.com
- [Hacker News, "Google Cloud Incident Report – 2025-06-13" (209 points)](https://news.ycombinator.com/item?id=44274563) — news.ycombinator.com
