Počítadlo zobrazení, ktoré z nášho katalógu urobilo chybu 502

Doručenie

Stránka, ktorá zobrazuje všetky balíky, ktoré predávame, odpovedala každému návštevníkovi chybovým hlásením 502 Bad Gateway približne 41 hodín po spustení. Vlastné stránky jednotlivých balíkov fungovali, domovská stránka fungovala, pokladňa fungovala. Pokazená bola len časť s niekoľkými riadkami, ktoré počítali zobrazenia stránok.

Chyba

Server nášho obchodu počíta návštevy stránok balíkov. Aby zistil, o ktorý balík ide, bral druhú časť cesty:

self._count_view(path.strip("/").split("/")[1] if path.count("/") >= 2 else "")

Pre /kits/studio/ je to studio. Pre samotný katalóg, /kits/, má cesta dve lomítka, takže bezpečnostná poistka ju pustila ďalej, ale po odstránení lomítok zostane len jedna časť a [1] vyvolalo IndexError. Obsluha je štandardný http.server v Pythone: výnimka v do_GET uzavrie spojenie bez odpovede a Cloudflare zobrazil návštevníkovi chybu 502.

Oprava spočíva v jednej malej funkcii, ktorá vráti prázdny reťazec, ak časť chýba. Počítadlo zobrazení potrebovalo iba názov balíka; nikdy nepotrebovalo, aby dokázalo rozhodiť stránku, ktorú počítalo.

Prečo to žiadna z našich kontrol nezachytila

Čo sa zmenilo

Zhrnutie

Vedľajšie úlohy v obsluhe požiadavky, ako je počítanie, logovanie alebo sledovanie, nesmú nikdy spôsobiť zlyhanie požiadavky a kontrola stránok, ktorá pokrýva iba stránky, ktoré ste práve zmenili, prehliada tie, ktoré na ne odkazujú. Dozorca v Night Watch prijíma ľubovoľný zoznam stránok, z ktorých každá musí obsahovať určený text, nielen domovské stránky.

Aktualizované: