Okamžik
Ve tři ráno pracovník reprodukoval občasné selhání a jasně to řekl. V devět už relace není. Zbyde věta popisující selhání, které teď nikdo nedokáže vyvolat.
Proč k tomu dochází
Reprodukce je drahá část ladění a žije v běžícím kontextu: prostředí, posloupnost, kus stavu. Nic z toho není zapsáno ve chvíli, kdy existuje, protože pracovník je zaneprázdněn řešením problému, a když to někdo chce, kontext už byl zahozen.
Proč to lepší model nevyřeší
Selhání už bylo nalezeno. Chybí trvalý artefakt vytvořený v okamžiku pozorování. Lepší pracovník ho najde rychleji a ztratí ho stejně úplně.
Co to stojí
Šetření se opakuje od začátku, obvykle víckrát, a každé opakování se platí za cenu originálu. Občasná selhání jsou nejhorší případ: druhé šetření nemusí vůbec reprodukovat, takže chyba se zaeviduje jako nereprodukovatelná a vrátí se v produkci.
Co Majordomus dělá
Checkpointing je prvotřídní, levný úkon s pevným limitem délky: majordomus checkpoint zaznamenává, co platilo před chvílí, dost krátce, aby ho další kontext mohl citovat celé, a příliš dlouhé tělo odmítne, místo aby ho ořízlo. Profil nastavuje interval a check a watch hlásí stáří checkpointu, takže dlouhé vyšetřování, které nic nezaznamenalo, je vidět. Relace, která skončí, zapíše předávku s cílem, aktuálním stavem a další akcí, každé povinné, a další relace ji rozřeší s označením divergence vypočteným z gitu.
Před a po
before 3am: "reproduced it — it's the retry loop under load" (session, gone)
after $ majordomus history --task t-…a4f1
checkpoint head=8c31f0e "reproduced under 50 concurrent enqueues;
the retry loop re-enters before the ack"
handover advanced # Next Action: add the load case to test/queueCo nedělá
Nezachycuje prostředí a nezaznamenává výstup relace. Checkpoint píše pracovník; nástroj zaručuje, že je krátký, připojený k head a čitelný tím, co přijde dál.