Az adatbázisban duplikált táblák keletkeztek, miközben az SQL-lekérdezés, amely a fájl generálását végezte, egyszerűen az összes táblából kiolvasta a kulcs szerinti adatokat anélkül, hogy kiszűrte volna a duplikátumokat:
SELECT name, typeFROM system.columnsWHERE table = 'http_requests_features'ORDER BY name;
A létrehozott fájl ezután szétterjedt a klaszter összes olyan csomópontjára, amelyek a bejövő kéréseket dolgozzák fel. Az azt használó feldolgozó modul a botok által indított kérések felismeréséhez a fájl paramétereit a memóriába töltötte. A túlzott memóriahasználat megakadályozására a kódban be volt állítva egy maximális fájlméret-korlát. Normál esetben a fájl mérete jóval a határérték alatt maradt, de a táblák duplikációja után meghaladta a limitet.
A probléma lényege az volt, hogy a rendszer nem megfelelően kezelte a limit túllépését. Ahelyett, hogy szabályosan jelezte volna a felügyeleti rendszer felé a rendellenes helyzetet, miközben tovább használja a korábbi, érvényes fájlverziót, a feldolgozó modul hibára futott és leállt. Ez a leállás blokkolta a forgalom továbbítását.
A hibát az okozta, hogy a Rust nyelven írt kódban a Result típushoz tartozó unwrap() metódust használták. Ha a Result állapota „Ok”, akkor az unwrap() visszaadja a benne lévő értéket; ha viszont nem sikeres („Err”), a hívás azonnali programösszeomlást eredményez (a „panic!” makró fut le). Az unwrap() általában csak hibakeresés során vagy tesztkódokban ajánlott, és nem javasolt éles rendszerekben.
- lacesz blogja
- A hozzászóláshoz be kell jelentkezni
- 232 megtekintés
Hozzászólások
Azért itt a change management process is el volt szúrva keményen. Nem volt rollback / backout plan.
Meg eleve nem terítek konfiguráció változást az összes prod gépre, ha megoldható, hogy körökre bontom. Microsoft is futott már bele ebbe a hibába - talán a WU-nál.
- A hozzászóláshoz be kell jelentkezni
Szóval megint rust kód, megint tesztelés (és ész) nélkül. Remélem ez már elég nagy esemény ahhoz, hogy ne menjenek el mellette szó nélkül.
Debian - The "What?!" starts not!
http://nyizsa.blogspot.com
- A hozzászóláshoz be kell jelentkezni
.
- A hozzászóláshoz be kell jelentkezni
Ez igencsak facepalm eset... Sokszor ugyanilyen szintű kreténségekkel találkozom máshol is, sajnos senkiháziak kezében van a popszakma...
- A hozzászóláshoz be kell jelentkezni
Nem értek a rust-hoz de valahol leírták hogy unwrap() -ot nem hagyunk production kódban.
Triviálisnak tűnik berakni erre egy rule-t bármilyen static analyzerbe / CI-CD pipeline-ba.
Se automatikus, se manuális code-review nem volt. És ennek a cégnek fizetnek nem keveset ...
- A hozzászóláshoz be kell jelentkezni
Vállalhatatlan az unwrap() egy ilyen kódban:
Using unwrap() in Rust is Okay - Andrew Gallant's Blog
Én nem csodálnám, ha azt a kódot nem ember írta volna a két kezével.
Tegyük hozzá: a Cloudflare gorillaként döngeti a mellét, milyen nagyon használják ők az AI-t.
Lesz ez még százszor rosszabb is, ahogy az AI terjed.
Ha tartós rendszert építesz és okos csapatot nevelsz, akkor száz kiadásban sem érheti baj; ha csak a gépekre hagyatkozol, akkor egyszer jól jársz, máskor rosszul; de ha sem a rendszer nem bírja a terhet, sem a csapat nem tanul a hibákból, akkor minden egyes kiadás kockázat.
- A hozzászóláshoz be kell jelentkezni
- én se csodálnám
- valójában nem érdekes. Per pill. minden termékért a nap végén valaki embernek kell vállalnia a felelősséget. Legyen ez akár a CEO ha nincs delegálva a feladat (remélem van)
- Akire a termékért való felelősségvállalás van delegálva az most bajban van: mert ez a szitu nem csak mint coder vállalhatatlan, hanem több ezután következő szinten is.
- A hozzászóláshoz be kell jelentkezni
...de a Rust-ban megírt kódok majd jobbak lesznek.
Avagy megintcsak azt látjuk, hogy felesleges mindent Rust-ban újraírni, mert a kód csak annyira lesz gyors és biztonságos, amennyire a fejlesztő ért az adott nyelvhez. Ehhez semmi köze nincs a nyelvnek meg a runtime-nak.
- A hozzászóláshoz be kell jelentkezni