+− THE DAILY DIFFdev & AI news
SHIP IT

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

Строка политики с несколькими пустыми полями приводит к ошибке нулевого указателя, и Google Cloud одновременно выходит из строя во всех регионах — затем Cloudflare также падает.

Строка политики с несколькими пустыми полями приводит к ошибке нулевого указателя, и 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.

Читать письменное издание (на английском) ↗

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

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

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

Переведено с оригинального английского повествования. Доступные аудио и субтитры контролируются 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).

Источники

  1. Google Cloud Service Health, Incident Report (Jun 13, 2025) + Mini Incident Report (Jun 12)status.cloud.google.com
  2. Cloudflare, "Cloudflare service outage June 12, 2025" (Jun 12, 2025, 22:00 UTC)blog.cloudflare.com
  3. Cloudflare Status, "Broad Cloudflare service outages" (18:19–21:31 UTC)www.cloudflarestatus.com
  4. Gergely Orosz, 19:11 UTC, "Their infra is fully independent AFAIK"x.com
  5. @Google support, 19:32 UTC, "there aren't any known service disruptions"x.com
  6. Thomas Kurian (Google Cloud CEO), Jun 13 01:35 UTCx.com
  7. Hacker News, "GCP Outage" (1,468 points)news.ycombinator.com
  8. Hacker News, "Cloudflare was down" (341 points)news.ycombinator.com
  9. Hacker News, "Google Cloud Incident Report – 2025-06-13" (209 points)news.ycombinator.com

Похожие видео

postmortem · ru · 25 сент. 2026 г.

Ошибка в одну миллисекунду остановила воздушное движение в Великобритании. На шесть часов.

Во вторник, 8 сентября, в 10:00 обычный запрос squawk-кода в Национальной системе воздушного пространства NATS (NAS) прерывается сообщением с более высоким приоритетом в процессе обновления значения.

3:06 ↗
postmortem · ru · 22 сент. 2026 г.

Перезагрузка отбросила Telstra в 2006 год. Девять миллионов телефонов.

Инженер в Мельбурне в 2:50 ночи снова включает шасси синхронизации, и к завтраку крупнейшая мобильная сеть Австралии соглашается, что сейчас ноябрь 2006 года. 8 июля 2026 года: GPS-карта в шасси NTP T

3:15 ↗