Цена читающего маршрута: чекпойнт WAL по таймеру и условный запрос
- рядом с воркером свёртки живёт горутина, раз в минуту разбирающая журнал пассивным чекпойнтом; «журнал не разбирается» видно строкой владельцу, а не только по `df`. Признак — пара чисел, а не флаг занятости: тот молчит под удерживаемым читателем (`busy=0` при 6256 страницах и пяти перенесённых), а при занятой блокировке отдаёт `-1` вместо ответа, и `-1 >= -1` читалось бы как «разобрано целиком» - каталог отвечает `304` на `If-None-Match`, не открывая снимок витрины. Метка собрана из всего, от чего зависит ответ: версии витрины (`data_version` с закреплённого соединения плюс поколение — значение локально для соединения и не переживает переоткрытия), горизонта измерения и области действия ресурса. Версия снимается до и после сборки: снятая после пометила бы устаревший снимок свежим номером - предел и дедлайн ответа отложены в задачу Read API точек вместе с измеренной ценой первого запроса; попутно починен флаки-тест чужой задачи, искавший значение точки в сыром буфере записи лога
This commit is contained in:
@@ -21,6 +21,14 @@
|
||||
исчерпанного первого, и `BaseContext`, производный от контекста жизненного цикла,
|
||||
чтобы долгий запрос об остановке узнавал.
|
||||
|
||||
**Цена этой ветки выросла** (change `cena-chitayushchego-marshruta`): база в ней
|
||||
не закрывается, а значит не закрывается и закреплённое соединение версии
|
||||
витрины — последнего соединения к базе не наступает, SQLite не делает финального
|
||||
чекпойнта, и рядом с базой остаётся неразобранный `-wal` до 64 МиБ. Данные целы
|
||||
(следующее открытие проиграет журнал), но файл базы в этом состоянии нельзя
|
||||
переносить без его `-wal`. Обвинение в логе при этом стало честнее: этап
|
||||
называется `background`, а не `fold-worker`, потому что ждут двоих.
|
||||
|
||||
**Миграция молчит и не прерывается штатной остановкой.** `store.migrate` не
|
||||
пишет ни одной записи — ни «начал», ни «закончил», ни длительность, — а первая
|
||||
строка в логе появляется уже после успешного открытия базы. Если миграция идёт
|
||||
@@ -37,5 +45,5 @@
|
||||
Готово, когда `WARN` о превышении бюджета называет виновный этап честно, а в логе
|
||||
старта видно, что миграции накатывались и сколько это заняло.
|
||||
|
||||
Связано: `cmd/healthlog/serve.go`, `internal/store/store.go`,
|
||||
`cena-chitayushchego-marshruta.md`.
|
||||
Связано: `cmd/healthlog/serve.go`, `internal/store/store.go`, change
|
||||
`2026-08-02-cena-chitayushchego-marshruta` (архив).
|
||||
|
||||
Reference in New Issue
Block a user