Kontaktovať podporu

Odpovedáme e-mailom, zvyčajne do dvoch dní.

Google reCAPTCHA kontroluje toto podanie na ochranu pred zneužitím; údaje sa prenášajú spoločnosti Google. Skript sa načíta až pri otvorení tohto formulára.

← Všetky príspevky

Čoho sa odstránenie počítadla naozaj dotkne

O obsahu a jeho overovaní

V tomto článku

Odstránenie počítadla tu vyprázdni 33 tabuliek. Včera ich vyprázdnilo 25.

Všetkých osem vynechaných vzniklo deň predtým medzi 11:10 dopoludnia a 15:10 popoludní.

33 tabuliek uchováva niečo o počítadle 8 z nich sa nevyprázdňovalo — všetky vznikli deň predtým osem tabuliek spolu obsahovalo 4 840 riadkov dnes pridané na abecedné miesto, nie na koniec v ďalších tabuľkách sa našlo a odstránilo 25 osirelých riadkov

Ako funguje odstraňovanie

Vlastník môže svoje počítadlo odstrániť. Potrebuje to POST, token vlastníka a ručne napísané číslo počítadla, pretože krok späť neexistuje. Nič sa neodkladá: tieňová kópia by bola opakom požiadavky a odkazy na export sú nad tlačidlom pre každého, kto kópiu chce.

Potom sa zoznam tabuliek vyprázdni v jednej transakcii, hlavná tabuľka posledná, a do archívu sa vloží náhrobný záznam, aby sa číslo už nikdy nemohlo prideliť niekomu inému. Ak ktorákoľvek časť zlyhá, všetko sa vráti späť. Nič odstránené je lepšie než napoly odstránené.

Nad týmto zoznamom je v súbore tento komentár:

„Každá tabuľka, ktorá o tomto počítadle niečo vie. Ako zoznam, nie roztrúsené po kóde: čokoľvek tu chýba, zostane ako osirelý riadok a nikto si to nevšimne.“

Komentár opísal medzeru deň pred jej vznikom

Včera pribudlo šesť nových tabuliek pre novú funkciu — čas na stránke, hĺbku posunutia, výstupné stránky — spolu s dvoma ďalšími. Medzi 11:10 a 15:10.

Zoznam odstraňovania sa v ten istý deň upravil, aby sa pridala iná nová tabuľka. Tých osem pribudlo potom a zoznam sa už nepohol. Jedno popoludnie teda odstránenie počítadla nechávalo 4 840 riadkov údajov o správaní v ôsmich tabuľkách. Medzera sa našla a uzavrela na ďalší deň; ukázala však, že na úplnosť zoznamu treba niečo iné než pamäť.

Toto nie je príbeh o nedbalosti. Niekto napísal zoznam, presne pochopil, prečo je zoznamom, zapísal, čo sa stane pri jeho zaostaní, a v ten istý deň ho aktualizoval pre jednu tabuľku. A aj tak zaostal, pretože udržiavať dve veci zosúladené pomocou pamätania je niečo, čo ľudia spoľahlivo robia až do popoludnia, keď to neurobia.

Oprava a druhá oprava

Osem názvov už je v zozname. Vložili sa na svoje abecedné miesta namiesto pridania na koniec, pretože zoradený zoznam zviditeľní medzeru a zoznam s pridávaním na koniec nie.

To je malá oprava. Podstatný je skript, ktorý sa databázy pýta, ktoré tabuľky nesú číslo počítadla, číta zoznam zo zdrojového súboru namiesto jeho opakovania a porovnáva. Každý, kto pridáva tabuľku, ho raz spustí. Nemôže sa naň zabudnúť tak ako na zoznam, pretože nič neukladá — odpoveď zakaždým odvodzuje zo schémy.

Pri prvom behu našiel ešte niečo: 25 riadkov v ôsmich ďalších tabuľkách, ktorých číslo počítadla nie je ani v živej tabuľke, ani v archíve. Nie odstránené počítadlá — tie nechávajú náhrobný záznam. Čísla nepatriace vôbec ničomu, zväčša zjavné testovacie čísla z obdobia pred kontrolou archívu. Zapísali sa do súboru mimo koreňového adresára webu a potom odstránili.

Na čo sa to dá zovšeobecniť

Každý zoznam, ktorý sa musí udržiavať zosúladený s niečím iným, sa napokon rozíde a medzera bude neviditeľná, pretože zoznam s chýbajúcou položkou vyzerá presne ako úplný zoznam.

Obranou nie je disciplína. Je ňou odvodenie jednej strany z druhej a kontrola zhody — a spustenie kontroly v okamihu, keď niekto vec pridáva, nie až keď sa niekto čuduje.

Komentár nad zoznamom mal pravdu vo všetkom okrem jedného slova. Hovoril, že si to nikto nevšimne. Niekto si to o deň neskôr všimol, pretože hľadal skriptom namiesto pamäti.

Reklama