Cloudflare'i mitme tunni katkestus osutus vale vigade töötlemise tulemuseks.

Cloudflare'i ettevõte avaldas analüüsi ühest oma infrastruktuuri suurimast juhtumist, mille tõttu oli eile enamiku sisu edastusvõrgu töökatkestus, kestev üle kolme tunni. Häire tekkis pärast muutust ClickHouse'i salvestuses asuva andmebaasi struktuuris, mille tõttu suurenes süsteemi botivastaseid seadeid sisaldava faili suurus kahel korral. Andmebaasis tekkisid dubleeritud tabelid, kuna SQL-päring faili loomisel lihtsalt väljastas kõik andmed kõigist tabelitest võtme järgi, ilma dubleeritud andmete filtreerimiseta. SELECT name, type FROM system.columns WHERE table = 'http_requests_features' order by name;

Cloudflare'i mitme tunni katkestus osutus vale vigade töötlemise tulemuseks.

Loodud fail on levinud kõigi klastrite sõlmede vahel, mis töötlevad sissetulevaid päringuid. Töötlejas, mis kasutab seda faili botide tuvastamiseks, hoiti failis määratud parameetreid mälus ja liigne mälusurve vältimiseks oli koodis ette nähtud failide maksimaalne suurus. Tavalistes tingimustes oli faili tegelik suurus märgatavalt väiksem seatud piirangust, kuid tabelite dubleerimise järel ületas see piiri.

Probleem tulenes sellest, et piiri ületamise korral ei töötlenud süsteem õigesti ja kasutas eelmist faili, teavitades seiret hädaolukorrast, vaid töötleja käivitas erakorralise lõpetamise, mis takistas edasise liikluse suunamist. Viga tekkis Rusti koodi unwrap() meetodi kasutamisest, mille tulemus tüüp oli Result.

Cloudflare'i mitme tunni katkestus osutus vale vigade töötlemise tulemuseks.

Kui Result’i väärtus on „Ok”, tagastab meetod unwrap() sellele olekule seotud objekti, kuid kui tulemus ei ole edukas — põhjustab selle kutsumine avariilise lõpetamise (kutsutakse välja makro „panic!”). Üldiselt rakendatakse unwrap() silumise protsessis või testkoodi kirjutamisel ning ei ole soovitatav kasutada tootmisprojektides.

Cloudflare'i mitme tunni katkestus osutus vale vigade töötlemise tulemuseks.
Cloudflare'i mitme tunni katkestus osutus vale vigade töötlemise tulemuseks.


Allikas: opennet.ru
Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster