fix(settings): сохранять результат операций базы при вторичных сбоях

This commit is contained in:
Denozordec committed 2026-10-03 16:43:52 +07:00
1 parent 738c98b9d3
commit 92b65a30ce
15 files changed
+159 -32

No files matched your search

+9 -1
View File
@@ -28,7 +28,7 @@
| 9 | VPN, Firewall и Filters | Завершён в границах локальной приёмки 2026-09-30; блоки 9.1–9.64, ограничения в 9.64 |
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | В работе: 11Б.1–11Б.3.6.2.2.1; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | В работе: 11Б.1–11Б.3.6.2.2.2; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Не начат |
@@ -36,6 +36,14 @@
## Блок 11Б.3.6.2.2.2 — подтверждённая операция и вторичные сбои (2026-10-03)
- Core backup/restore отделён от restart listener/scheduler: оба restart выполняются независимо, их errors — warnings после подтверждённой команды; первичная ошибка не подменяется вторичной. Ошибка stop предотвращает команду и запускает попытки восстановления потребителей. Cleanup warning сохранён.
- appendEvent failure не отменяет готовый бинарный backup или ok:true restore. Restore возвращает eventError, backup — percent-encoded strict metadata header; CORS exposes filename/outcome. Client читает warnings отдельно, malformed metadata не уничтожает подтверждённый PGDMP и даёт предупреждение. UI сообщает подготовку скачивания, не подтверждает сохранение файла на диск.
- System DB теперь использует nonblocking pg_try_advisory_lock вместо общей blocking функции: конкурентный запрос получает 409 и не ставится в очередь. Общий helper получил нейтральное имя withOperationLock, NetFlow alias/default сохранены. DATABASE_URL редактируется из точного совпадения stderr команды; прежние event rows не изменялись.
- 4 restore DI + 3 lifecycle DI, HTTP binary/audit/core failure/concurrency, реальные signed JWT gates, 4 API unit группы и 2 browser receipt сценария прошли; backend build, typecheck и профильный lint прошли. Реальный PG dump/restore/lock overlap и UDP stop acknowledgment не проверены; тесты не обращались к реальной БД.
- Следующий блок 11Б.3.6.2.3: отдельная форма system DB, admin/source/active guards, общий синхронный lock, review неизвестного результата, адаптивность. Затем Alerts/Releases/probe scheduling и приёмка 11Б/12.
## Блок 11Б.3.6.2.2.1 — выполнение восстановления PostgreSQL (2026-10-03)
- Restore executor вынесен в pure DI helper. Production pg_restore получает --single-transaction вместе с --clean/--if-exists; validate size/PGDMP prefix выполняется до lock/остановки сборщиков и повторно в executor. Команда не повторяется, временный файл удаляется при write/run error. Cleanup failure после успешной команды — отдельный cleanupError, не отменяет её подтверждённый результат; основная ошибка не подменяется cleanup error.