Cloudflare публикува информация за един от най-мащабните инциденти в своята инфраструктура, при който вчера голяма част от мрежата за разпространение на съдържание не функционираше в продължение на повече от 3 часа. Сривът е настъпил, след като промяна в структурата на базата данни, разположена в хранилището ClickHouse, е удвоила размера на файл, съдържащ параметрите на системата за борба с ботовете. В базата данни са били създадени дублиращи се таблици, докато SQL заявката за генериране на файла просто е извеждала всички данни от всички таблици по ключ, без да отсява дублиращите се.
SELECT
name,
type
FROM system.columns
WHERE
table = 'http_requests_features'
order by name;

Създаденият файл е разпространен до всички възли на клъстера, които обработват входните заявки. В обработчика, който използва този файл за проверка за заявки от ботове, параметрите, зададени във файла, се съхраняват в оперативната памет, а за да се предпази от прекомерна консумация на памет, кодът има ограничение за максимално допустимия размер на файла. При нормални условия действителният размер на файла е много по-малък от зададеното ограничение, но след дублиране на таблиците той надхвърля ограничението.
Проблемът е бил в това, че вместо да обработи правилно превишаването на лимита и да продължи да използва предишната версия на файла и да информира системата за наблюдение за извънредната ситуация, обработващият модул е задействал аварийно прекратяване, което е блокирало по-нататъшното пренасочване на трафика. Грешката е причинена от използването на метода unwrap() с тип Result в кода на езика Rust.

Когато параметърът Result има състояние „Ok“, методът unwrap() връща обекта, свързан с това състояние, но ако резултатът не е успешен – извикването води до аварийно прекратяване (извиква се макросът „panic!“), . Обикновено unwrap() се използва при отстраняване на грешки или при писане на тестови код и не се препоръчва за използване в работните проекти.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!