Files
healthlog/docs/backlog/sverka-vitriny-s-peresborkoj.md
T
av c28de9796e беклог: две задачи из разбора разнесения ответа и свёртки
- предел на размер и число заголовков доставки: спит до деплоя
- сверка живой витрины с пересборкой: отпечатки печатаются, но
  сравнивать их некому — известный путь расхождения записан блокером
2026-08-02 11:04:26 +03:00

31 lines
2.5 KiB
Markdown

# Сверка живой витрины с пересборкой
**Приоритет:** средний
`healthlog reindex` печатает отпечаток собранной витрины и отпечаток рабочей —
то есть данные для сверки уже есть, и **сравнивать их некому**. Расхождение
живого состояния с тем, что даёт проигрывание журнала, сегодня обнаруживается
только тем, что кто-то вручную запустил пересборку и посмотрел на два числа.
Между тем расхождение — не гипотеза. Известный путь к нему записан блокером
[«Порядок журнала при конкурентных приёмах»](poryadok-zhurnala-na-priyome.md):
доставка, свёрнутая раньше своей предшественницы, уходит в `failed` навсегда, и
живая витрина расходится с пересборкой молча. Пока тот предел не закрыт, сверка
— единственный способ узнать, что он сработал.
Инвариант «состояние есть свёртка журнала» проверяем ровно этим: пересобрать в
отдельный файл (рабочая база не трогается — это уже так и устроено), сверить
отпечатки, расхождение — событие, которое видно. Прогон не бесплатный
(на квартальном журнале десятки минут), поэтому это регламент, а не фоновая
задача сервиса.
Развилка при взятии: кто запускает — `cron` на хосте рядом с деплоем или сам
сервис по расписанию. Первое честнее (пересборка уже сейчас команда, а не
режим сервиса), но требует места под второй файл базы.
Готово, когда расхождение витрины с пересборкой перестаёт зависеть от того,
догадался ли человек посмотреть.
Связано: `cmd/healthlog/reindex.go`, [наблюдаемость](stats-nablyudaemost.md),
[деплой](deploy-rivendell.md).