TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.82K subscribers
Post #2801 2.79K
Cloudflare раскрыла причину масштабного сбоя, из-за которого вчера часть инфраструктуры компании (и с ней многие сайты) не работала более 3 часов.
Сбой произошёл после изменения в структуре БД, после чего файл с параметрами для противодействия ботам увеличился в два раза. В БД образовались дублирующиеся таблицы, при том, что SQL-запрос для формирования файла просто выводил все данные из всех таблиц по ключу, без отсеивания дубликатов.

SELECT
name,
type
FROM system.columns
WHERE
table = 'http_requests_features'
order by name;


Созданный файл стал применяться для обработки входных запросов. В обработчике, использующем данный файл для проверки на боты, указанные в файле параметры сохранялись в оперативной памяти. Для защиты от излишнего расхода памяти в коде был предусмотрен лимит на размер файла. Обычно фактический размер файла был значительно меньше выставленного органичения, но после дублирования таблиц превысил лимит. В итоге в обработчике срабатывало аварийное завершение, которое блокировало дальнейший проброс трафика. Ошибка была вызвана использованием в коде на языке Rust метода unwrap() с типом Result:

// Fetch edge feature based on 'input' struct into ['Features'] buffer.
pub fn fetch_features(
&self,
input: &dyn BotsInput,
features: &mut Features,
) -> Result<(), (ErrorFlags, i32)> {
// update feature checksum (lower 32 bits) and copy edge feature names
features.checksum &= 0xFFFFFFFF00000000;
features.checksum |= u64::from(self.config.checksum);

let (feature_values, _) = features
.append_with_names(self.config.feature_names)
.unwrap(); // Здесь возникла ошибка

Ok(())
}

Когда значение Result имеет состояние "Ok", метод unwrap() возвращает связанный с этим состоянием объект, но если результат не является успешным - вызов приводит к аварийному завершению (вызывается макрос "panic!").

https://blog.cloudflare.com/18-november-2025-outage/
Cloudflare Blog Cloudflare outage on November 18, 2025 Cloudflare suffered a service outage on November 18, 2025. The outage was triggered by a bug in generation logic for a Bot Management feature file causing many Cloudflare services to be affected.
  • 😁 28
  • ❤ 12
  • 👍 11
  • 🔥 2
  • 🤯 2
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →