Ang view counter na ginawang 502 ang aming catalogue

Shipping

Ang pahina na naglilista ng lahat ng kit na aming ibinebenta ay sumagot sa bawat bisita ng 502 Bad Gateway sa loob ng humigit-kumulang 41 oras pagkatapos ng launch. Gumagana ang sariling pahina ng bawat kit, gumagana ang home page, gumagana ang checkout. Ang sira ay ilang linya na bumibilang ng mga page view.

Ang bug

Ang server ng aming store ay bumibilang ng mga bisita sa mga pahina ng kit. Upang malaman kung para saang kit ang isang request, kinukuha nito ang ikalawang bahagi ng path:

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

Para sa /kits/studio/, ito ay studio. Para sa catalogue mismo, /kits/, may dalawang slash ang path, kaya pinagdaan ito ng guard, ngunit pagkatapos alisin ang mga slash, may isang bahagi na lamang, at nag-raise ng IndexError ang [1]. Ang handler ay ang standard na http.server ng Python: ang exception sa do_GET ay nagsasara ng connection nang walang sagot, at ipinakita ng Cloudflare sa bisita ang 502.

Ang ayos ay isang maliit na function na nagbabalik ng empty string kapag wala ang bahagi. Ang view count ay kailangan lamang ng pangalan ng kit; hindi nito kailanman kailangang masira ang pahinang binibilangan nito.

Bakit wala sa aming mga check ang nakakita nito

Ano ang nagbago

Ang takeaway

Ang mga gawaing panggilid sa isang request handler, tulad ng pagbibilang, pag-log o pag-track, ay hindi dapat kailanman maging dahilan ng pagkabigo ng request, at ang isang page check na sumasaklaw lamang sa mga pahinang bagong binago mo ay hindi nasasaklaw ang mga pahinang nagli-link sa kanila. Ang watch sa Night Watch ay tumatanggap ng anumang listahan ng mga pahina, bawat isa ay may text na dapat nilang laman, hindi lamang ang mga home page.

Na-update: