Цена читающего маршрута: чекпойнт WAL по таймеру и условный запрос
- рядом с воркером свёртки живёт горутина, раз в минуту разбирающая журнал пассивным чекпойнтом; «журнал не разбирается» видно строкой владельцу, а не только по `df`. Признак — пара чисел, а не флаг занятости: тот молчит под удерживаемым читателем (`busy=0` при 6256 страницах и пяти перенесённых), а при занятой блокировке отдаёт `-1` вместо ответа, и `-1 >= -1` читалось бы как «разобрано целиком» - каталог отвечает `304` на `If-None-Match`, не открывая снимок витрины. Метка собрана из всего, от чего зависит ответ: версии витрины (`data_version` с закреплённого соединения плюс поколение — значение локально для соединения и не переживает переоткрытия), горизонта измерения и области действия ресурса. Версия снимается до и после сборки: снятая после пометила бы устаревший снимок свежим номером - предел и дедлайн ответа отложены в задачу Read API точек вместе с измеренной ценой первого запроса; попутно починен флаки-тест чужой задачи, искавший значение точки в сыром буфере записи лога
This commit is contained in:
@@ -48,3 +48,12 @@
|
||||
запроса, ни адреса клиента: жалобу потребителя не сопоставить с записью, а
|
||||
выгрузку каталога посторонним — не отличить от планового опроса агента. У приёма
|
||||
корреляция есть (`delivery_id`), у чтения аналога нет.
|
||||
|
||||
**Обслуживание журнала WAL тоже спрашивается здесь.** Признак «журнал не
|
||||
разбирается» (чекпойнт по таймеру, change `cena-chitayushchego-marshruta`)
|
||||
живёт одной строкой `WARN` в ротируемом docker-логе: состояние держится днями, а
|
||||
сказано о нём один раз. Вопрос «журнал сейчас разбирается?» сегодня не имеет
|
||||
ответа нигде, кроме `df`. В `/stats` просятся последний исход чекпойнта (когда,
|
||||
сколько страниц лежит и сколько перенесено) и — тем же полем — доля ответов
|
||||
чтения, которые удалось подписать `ETag`: механизм условного запроса может
|
||||
перестать окупаться под плотным потоком, и снаружи это неотличимо от нормы.
|
||||
|
||||
Reference in New Issue
Block a user