fix(traffic): согласовать опрос между процессами backend

This commit is contained in:
Denozordec committed 2026-10-13 14:35:00 +07:00
1 parent a68bd61e58
commit b525e70655
19 files changed
+1411 -19

No files matched your search

+16 -2
View File
@@ -1,6 +1,6 @@
# UX/UI: протокол внешней приёмки 12.5
Актуальное продолжение 2026-10-13: завершены191 и193 — общий пик подтверждённых интервалов и одно чтение истории сервера на запрос пользователей. Runtime backend ux-peak193/frontend ux-peak191 healthy/API/live UI2 passed.192: backend24 профиля passed321237ms; отдельные Monthly SQL/IPv6 UDP-worker-SQL/Ping replay passed, frontend59 test files accepted after corrected stale assertion; полный E2E1286 ещё выполняется.12.5 открыта.
Актуальное продолжение 2026-10-13: завершены191/193/194 — temporal peak, request cache, межпроцессная блокировка опроса трафика. Runtime backend ux-peak194/frontend ux-peak191 healthy/API/live UI2 passed; traffic ownSQL71+cross-process sequence passed53237ms.192: общая backend24 профиля/отдельные SQL controls/frontend59 test files приняты; полный E2E1286 ещё выполняется, итог ещё не принят.12.5 открыта.
IPsec78: реальный PSK responder established, mode-config198.18.78.10 и online=true подтверждены API; точные собственные объекты удалены. Сертификатный/DN online, late failure и history restore остаются открытыми. [Отчёт](ux-ui/acceptance/ipsec-mode-config-2026-10-09.json), [журнал](ux-ui-progress.md).
@@ -696,7 +696,7 @@ flowchart LR
## 12.5.77 — основной блок IPsec (2026-10-09)
Актуальное продолжение 2026-10-13: завершены191 и193 — общий пик подтверждённых интервалов и одно чтение истории сервера на запрос пользователей. Runtime backend ux-peak193/frontend ux-peak191 healthy/API/live UI2 passed.192: backend24 профиля passed321237ms; отдельные Monthly SQL/IPv6 UDP-worker-SQL/Ping replay passed, frontend59 test files accepted after corrected stale assertion; полный E2E1286 ещё выполняется.12.5 открыта.
Актуальное продолжение 2026-10-13: завершены191/193/194 — temporal peak, request cache, межпроцессная блокировка опроса трафика. Runtime backend ux-peak194/frontend ux-peak191 healthy/API/live UI2 passed; traffic ownSQL71+cross-process sequence passed53237ms.192: общая backend24 профиля/отдельные SQL controls/frontend59 test files приняты; полный E2E1286 ещё выполняется, итог ещё не принят.12.5 открыта.
Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md).
@@ -2326,3 +2326,17 @@ Backend build passed. Production backend ux-peak193/version1.0.0-test.peak193 р
Протоколы: [cache](ux-ui/acceptance/traffic-users-cache-2026-10-13.json), [SQL](ux-ui/acceptance/traffic-users193-sql193-result.json), [source](ux-ui/acceptance/traffic-users193-source193-result.json), [compiled](ux-ui/acceptance/traffic-users193-compiled193-result.json), [runtime](ux-ui/acceptance/traffic-users193-runtime193-result.json), [API](ux-ui/acceptance/traffic-users193-peak193-api-result.json), [live UI](ux-ui/acceptance/traffic-users-cache-deployed-2026-10-13.json).
Общая регрессия192 начата на backend191; её24 backend профиля passed, текущий cache193 отдельно принят полным traffic-rate профилем. Не повторять общие неизменённые разделы. Полный браузерный прогон1286 ещё выполняется — не считать его завершённым. Исправлена ссылка live UI191: его evidence теперь хранится отдельно от исторического190, исходный протокол190 восстановлен. Следующий шаг — завершить192, разобрать ошибки полного E2E и восстановить только снимки текущего тестового запуска с сохранением8 исходно изменённых пользовательских PNG. Затем multi-instance/scale и внешние группы матрицы.12.5 открыта.
## 12.5.194 — трафик: координация опроса разных backend-процессов (2026-10-13)
На независимых Node-процессах подтверждён baseline: локальный collecting не препятствовал двум одновременным опросам одного источника и двум записанным волнам общей БД. Проверка использует собственную временную PostgreSQL БД и HTTP-эмулятор RouterOS на127.0.0.1, реальные CHR не менялись. [Baseline](ux-ui/acceptance/traffic-concurrency-baseline-2026-10-13.json).
Добавлена nonblocking session advisory lock8723105 на весь collectTrafficOnce в пределах общей PostgreSQL БД. Второй процесс возвращает существующий skipped snapshot до чтения настроек/истории, native GET и записи samples/receipt. Manual API уже преобразует skipped в409 «Сбор трафика уже выполняется», существующая семантика scheduler сохранена. Отложенная очередь опросов не создаётся. Локальный collecting сохранён для быстрых повторов внутри процесса. Неопределённый ответ acquisition не запускает run, соединение уничтожается; unconfirmed/failed unlock тоже уничтожает соединение вместо возврата в pool. Ошибка получения блокировки возвращает fatal snapshot без ложного успешного сбора.
Изменены traffic-collector.ts, добавлен traffic-collection-lock.ts и профильные unit/owned SQL tests. Actual collector body test обновлён под wrapper, не заменён копией алгоритма. Проверены busy/no work, malformed acquisition, run error, unlock false/error и destroy. Два настоящих процесса: первый удерживает HTTP-чтение, второй завершается skipped без второго запроса и samples; после первого следующий процесс выполняет новый опрос — lock released/recovery. SQL profile принял все71 ранее определённых cases и дополнительную cross-process sequence53237ms без unavailable skip; не считать её произвольным количеством новых тестов. DB/role/test container удалены. Production backend build passed;465 source files и1044 compiled artifacts совпали.
Backend ux-peak194/version1.0.0-test.peak194 развёрнут, frontend ux-peak191 сохранён. Backend/PG healthy, frontend HTTP/browser passed. API200, current measurements обоих CHR, live UI1440/320 без page errors/overflow. Native конфигурация/пароли не менялись, messages0.
Протоколы: [SQL](ux-ui/acceptance/traffic-lock194-sql194-result.json), [source](ux-ui/acceptance/traffic-lock194-source194-result.json), [compiled](ux-ui/acceptance/traffic-lock194-compiled194-result.json), [runtime](ux-ui/acceptance/traffic-lock194-runtime194-result.json), [API](ux-ui/acceptance/traffic-lock194-peak194-api-result.json), [live UI](ux-ui/acceptance/traffic-collection-lock-deployed-2026-10-13.json).
Границы: принято отсутствие параллельного traffic run при двух исправных process/session в одной БД, не координация всех writers приложения. Физическая потеря lock connection во время native GET/записи других pool connections не проверена; session lock не является fencing token. Не считать этот блок полной multi-instance/restore-drain/failover приёмкой. Следующий шаг — закончить и разобрать общую E2E192; затем отдельные multi-instance failures и внешние зависимости матрицы.12.5 открыта.