docs: описать транзакционный guard и взаимное исключение операций
- docs/07: полный порядок staged apply, инвариант снятия guard, объяснение почему окно 45 секунд не обязано покрывать smoke и почему guard не трогает nftables.service, семантическая проверка эффективного firewall; - docs/11: разделы A5e/A5f для новых unit-тестов и серверные сценарии D1e (guard доходит до дедлайна), D1f (конкурентные операции), D1g (успешная операция не оставляет следов транзакции); матрица и acceptance criteria дополнены; - docs/12: разбор отказов "уже выполняется другая операция" и firewall_guard_fired; - docs/13: строки журнала guard в таблице recovery, новый раздел 8a про замок операций; - docs/14 и purge-v0.sh: очистка /run/hy2xs, замка операций и candidate-файлов firewall — /run это tmpfs, но очистка не имеет права требовать перезагрузки; - README: защита от потери доступа при смене firewall и раздел "Одна операция за раз"; - CHANGELOG: шестой проход.
This commit is contained in:
@@ -152,9 +152,17 @@ sudo ./purge-v0.sh --apply --yes-i-know
|
||||
`/var/lib/hysteria` (там остаётся ACME-состояние и сертификаты Hysteria),
|
||||
`/usr/local/lib/hy2xs` и symlink `/usr/local/bin/hy2xs-orchestrator`;
|
||||
5. удаляет `/usr/local/bin/hysteria`;
|
||||
6. удаляет фрагмент `/etc/nftables.d/hy2xs.nft` и строку `include` для него из
|
||||
6. удаляет артефакты незавершённой операции в `/run`: каталог отката
|
||||
`/run/hy2xs` (прежние `nftables.conf`, `hy2xs.nft` и маркер срабатывания
|
||||
guard) и замок операций `/run/lock/hy2xs-orchestrator.lock`, который может
|
||||
пережить убитый `kill -9` процесс оркестратора и не дать запуститься
|
||||
следующей установке. `/run` — tmpfs, и перезагрузка убрала бы оба, но
|
||||
очистка не имеет права требовать перезагрузки;
|
||||
7. удаляет `*.candidate` firewall — они остаются, если операция упала между
|
||||
`nft -c` и подстановкой файла в production-путь;
|
||||
8. удаляет фрагмент `/etc/nftables.d/hy2xs.nft` и строку `include` для него из
|
||||
`/etc/nftables.conf`, после чего перезагружает ruleset;
|
||||
7. проверяет чистоту хоста.
|
||||
9. проверяет чистоту хоста.
|
||||
|
||||
Список удаляемых путей и список legacy-маркеров clean-host контракта описывают
|
||||
одну и ту же границу: расхождение между ними ловится приёмкой сборки. Иначе
|
||||
@@ -194,6 +202,13 @@ sudo rm -rf /etc/hy2xs /etc/hysteria /var/lib/hy2xs /var/lib/hy2xs-admin \
|
||||
/usr/local/lib/hy2xs /usr/local/h-ui
|
||||
sudo rm -f /usr/local/bin/hysteria /usr/local/bin/hy2xs-orchestrator
|
||||
|
||||
# артефакты незавершённой операции в /run (tmpfs)
|
||||
sudo rm -rf /run/hy2xs
|
||||
sudo rm -f /run/lock/hy2xs-orchestrator.lock
|
||||
|
||||
# candidate-файлы firewall от операции, упавшей до подстановки
|
||||
sudo rm -f /etc/nftables.conf.candidate /etc/nftables.d/hy2xs.nft.candidate
|
||||
|
||||
sudo rm -f /etc/nftables.d/hy2xs.nft
|
||||
sudo sed -i '/nftables.d\/hy2xs.nft/d' /etc/nftables.conf
|
||||
sudo nft -c -f /etc/nftables.conf && sudo nft -f /etc/nftables.conf
|
||||
|
||||
Reference in New Issue
Block a user