Co smí stát pád

Díl 6 ze 7 — ./blog.sh v1.4

Fronta teď umí prohodit dva naplánované příspěvky, které sdílejí slug napříč dvěma roky – i s jejich médii a historií úprav, protože ty jsou klíčované rokem a slugem přesně jako soubor příspěvku. Ta věta je krátká; udělat ji pravdivou zabralo většinu vývojového cyklu. Zajímavá část není prohození. Je to, co se stane, když uprostřed vypadne proud.

Rozpočet je nula

Přesun je několik přejmenování a pád může dopadnout mezi kterákoli dvě. Pravidlo, kterého se 1.4 drží: ať je to kdykoli, pád tě smí stát přesun – nikdy příspěvek. Soubory ustoupí stranou pod parkovací jména dřív, než cokoli zapisuje; neúspěšný zápis vrátí všechno zpět, bajt po bajtu; tvrdé zabití, které nechá zaparkovaný soubor stát, ho nechá tam, kde ho check najde a pravdivě řekne, co je.

Rada je součást systému

Ten poslední kousek se ukázal jako nejtěžší. Raná verze rady od check říkala „tohle je zastaralá kopie – smaž ji", z ničeho víc než z toho, že na starém jménu zaparkovaného souboru existuje soubor. Jenže parkování se děje jen tehdy, když dva příspěvky sdílejí slug, takže soubor, který tam stojí, je z principu jiný příspěvek – a po tom správném pádu je zaparkovaný soubor jediná kopie toho tvého, která existuje. Rada teď stojí na vlastní identitě zaparkovaného příspěvku: prokazatelně zastaralý pojmenuje, kde sedí živá kopie; neprokázaný řekne na rovinu, že tohle může být jediná kopie, porovnej, než na to sáhneš, a nikdy nemaž.

Pokyn k obnově, který umí zničit to, co obnovuje, je chyba jako každá jiná. Jen bylo třeba auditu mířeného na naše vlastní opravy, aby to bylo vidět.

Komentáře