chore(test): проверить настоящий UDP collector и завершение записи

This commit is contained in:
Denozordec committed 2026-10-07 22:55:33 +07:00
1 parent f8da3e08a0
commit 9264b6636a
6 files changed
+82 -4

No files matched your search

+13 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-07: блок12.5.9 завершён локально — отдельный shutdown NetFlow закрывает UDP, сериализует flush, закрывает worker PG pool и требует acknowledgement плюс штатный exit. Четыре lifecycle tests, database HTTP/JWT и build прошли. На стенде остаётся source673e5ba. Следующий12.5.10 — реальные worker/UDP/длительная запись в выделенной проверочной БД и контроль остальных writers; PG-6/restore остаются открытыми.
Актуальное продолжение 2026-10-07:12.5.10 завершён в границах настоящего isolated NetFlow collector: UDP→SQL, ожидание blocked write, освобождение socket до drain, ack/exit0, delta1500bytes и0worker connections подтверждены. Основной runtime остаётся673e5ba. Следующий12.5.11 — admission/drain ручных API и аудит вспомогательных writers перед restore. PG-6 целиком ещё открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -34,6 +34,18 @@
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в описанных границах:12.3.83,main1186/1186,context221/221. Этап остаётся в работе: стенд12.5.1–3 развёрнут,bootstrap/smoke проверены;остальные сценарии12.5 не выполнены. |
## 12.5.10 — настоящий NetFlow collector: UDP и ожидание SQL перед выходом (2026-10-07)
На161.104.46.222 запущен временный docker compose run --rm --no-deps backend с актуальным compiled dist изsourcef8da3e0; основной backend/frontend не пересоздавались. DATABASE_URL в памяти тестового процесса/унаследованного worker ограничен отдельной mmapp_acceptance_20261007. Приложение не подключено к этой БД. [Очищенный отчёт](ux-ui/acceptance/netflow-worker-2026-10-07.json), SHA256 архива и worker JS совпали с локальными файлами. Секреты/дампы не передавались в репозиторий.
Настоящий traffic-flow-collector-worker слушал127.0.0.1:4749 только внутри временного контейнера; синтетический NetFlowv5 datagram отправлен через реальный UDP socket, exporter map сопоставил127.0.0.1→server1. SQL-транзакция удерживала ACCESS EXCLUSIVE lock traffic_flow_settings, независимый pg_stat_activity наблюдатель увидел Lock/relation в проверочной БД. После shutdown и500ms worker ещё не вышел/stop promise не завершился. Успешная привязка нового probe socket к4749 доказала освобождение UDP до завершения SQL drain. После ROLLBACK lock полученыshutdown-complete иexit0; pool connections worker после выхода0.
Независимый SQL сравнил baseline1500bytes и итог3000bytes/20packets в двухflow rows: ровно+1500bytes одного тестовогоdatagram. Baseline обязателен: предыдущая неуспешная попытка оставила тестовую запись в этой выделенной БД. Первые попытки не завершили сценарий: staging mount /app/acceptance не находил backend dependency dotenv (выявлено после добавления диагностики); mount перенесён в /app/backend/acceptance. Затем10сек ожидания lock истекли; окончательный запуск дал initial tick2500ms перед observation и прошёл всеassertions. Это исправления harness, продуктовый код в этом блоке не менялся.
Проверочная БД теперь содержит синтетические flow rows и изменённые collector counters; прежнее сравнение12.5.7 описывает состояние на момент backup, не нынешнюю идентичность БД. Временный контейнер удалён штатным--rm, worker остановлен. Основной /health ok/version1.0.0-test.673e5ba/alivefalse/boundfalse, оба serverID/IP иuptime retention14 сохранены. КонфигурацияCHR/traffic-flow на маршрутизаторах не менялась.
Принята частьPG-6 для isolated collector/drain, не весь app-wide сценарий. Ручные API writers, вспомогательные writers, параллельные экземпляры и API restore не проверены; новый код ещё не развёрнут в основном приложении. Следующий12.5.11 — admission/drain ручных запросов и аудит остальных писателей, затем deployment и полнаяPG-6/PG-3/4 проверка. Локальный коммит безpush.
## 12.5.9 — подтверждённая остановка NetFlow worker перед операцией с БД (2026-10-07)
Добавлена отдельная IPC команда shutdown для database operation; обычный stop остальных потребителей не подменён. Worker прекращает приём datagrams, закрывает UDP socket/таймер, ждёт принудительный flush без prune и pool.end(), затем отправляет shutdown-complete и закрывает parentPort. Основной процесс требует и acknowledgement, и exit0. Timeout30сек, неподтверждённый exit и ошибки отменяют database operation без принудительного terminate. Неуспешный stop остаётся latched: попытка restart не уничтожает worker с неподтверждёнными записями и возвращает существующее listenerError предупреждение.