chore(test): выявить ошибку восстановления разделов PostgreSQL

This commit is contained in:
Denozordec committed 2026-10-07 23:20:12 +07:00
1 parent f1aac49dfc
commit c24ad7810c
6 files changed
+142 -3

No files matched your search

+4
View File
@@ -89,3 +89,7 @@ BGP-prefix evaluator, отдельное live GRE расписание и recove
| ROS-1 | Заполнить при запуске | Очищенные native rows + GET истории + снимок UI | Не выполнен | Проверить transmit/receive/both |
12.5 закрывается после выполнения обязательных сценариев и разбора отказов на согласованном стенде. Подготовленный протокол, успешные browser/DI tests и автоматический axe-аудит не заменяют внешние результаты или ручную работу со screen reader.
## Обнаруженный блокер restore — 2026-10-07
12.5.14 realAPI/sourcef1aac49 навыделеннойPG18.6 подтвердилadmission/drain,ноrestore400 из-заinheritedpartitionPRIMARY KEY при--clean. [Evidence/rollback controls](ux-ui/acceptance/real-restore-2026-10-07.json). PG-4 подтверждёнвграницахнастоящейSQLошибкииконтрольныхстрок/sequence/constraint; PG-3успех/последующийID иполныйPG-6 непроверены. Следующий12.5.15 исправляеттранзакционнуюочистку. Основнойruntime673e5ba сохранён.
+1 -1
View File
@@ -1,6 +1,6 @@
# План реализации UX/UI по пятичасовым окнам
Актуальное продолжение 2026-10-07:12.5.13 завершён локально в части cache invalidation после подтверждённогоrestore. Проверен порядокbackground drain→restore→cache reset→consumer restart;22lifecycle/database tests,HTTP/JWT,RIPE/ifindex/classify иbuild passed. Runtime673e5ba не обновлён. Следующий12.5.14 — integrated real-PG quiescence/restore ввыделеннойБД иdeployment; PG-6/PG-3/4 ещёоткрыты.
Актуальное продолжение 2026-10-07:12.5.14 выполненкакреальнаяприёмка isolated API/sourcef1aac49. ОбнаружендефектPG-3:pg_restore --clean падаетнаinherited partition PRIMARY KEY. HTTP admission409/ожиданиеwrite иrollback контрольныхданныхподтверждены. Основнойruntime673e5ba сохранён. Следующий12.5.15 — исправитьтранзакционнуюочисткуразделов иповторитьrestore; PG-3/полныйPG-6 открыты.
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-07. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
+13 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-07:12.5.13 завершён локально в части cache invalidation после подтверждённогоrestore. Проверен порядокbackground drain→restore→cache reset→consumer restart;22lifecycle/database tests,HTTP/JWT,RIPE/ifindex/classify иbuild passed. Runtime673e5ba не обновлён. Следующий12.5.14 — integrated real-PG quiescence/restore ввыделеннойБД иdeployment; PG-6/PG-3/4 ещёоткрыты.
Актуальное продолжение 2026-10-07:12.5.14 выполненкакреальнаяприёмка isolated API/sourcef1aac49. ОбнаружендефектPG-3:pg_restore --clean падаетнаinherited partition PRIMARY KEY. HTTP admission409/ожиданиеwrite иrollback контрольныхданныхподтверждены. Основнойruntime673e5ba сохранён. Следующий12.5.15 — исправитьтранзакционнуюочисткуразделов иповторитьrestore; PG-3/полный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.14 — реальный API restore: дефект очистки разделов и контроль rollback (2026-10-07)
Временный docker compose run --rm --no-deps backend использовалcompiled dist sourcef1aac49, mount/app/backend/acceptance, DATABASE_URL толькоmmapp_acceptance_20261007, HTTP127.0.0.1:8014 внутриконтейнера. Основнойbackend/frontend не обновлялись. [Очищенный отчёт](ux-ui/acceptance/real-restore-2026-10-07.json); SHA256 переданногоcompiled archive совпалслокальным. РеальныйbuildApp иAPI routes работалибезHTTP mocks; startScheduler=false приinitial build, стандартныеdatabase operation restarts выполнялиреальныйrefreshScheduler/consumer lifecycle.
GETbackup200/478810bytes/PGDMP полученвпамять безкопированиядампавGit. Отдельный тестовыйHTTP write handler менялretention14→16 подудерживаемымSQLlock. Concurrent POSTrestore не завершилсяраньшеwrite; новыйGETservers получил409. ПослеROLLBACKlock write завершился200; restore дождалсяего ивернул400 изнастоящегоpg_restore. Ошибка:cannot drop inherited constraint uptime_resource_samples_w_20261019_pkey of relation uptime_resource_samples_w_20261019. Существующий--single-transaction --clean --if-exists пытаетсяудалитьinheritedPK дочернегораздела. Сходныйконфликтописанв[pgsql-hackers](https://www.postgresql.org/message-id/1228964.1610480929%40sss.pgh.pa.us); текущийотказнепосредственновоспроизведённасервере/client18.6.
Первые2попыткиожидалиrestore200,ноостановилисьassert400; приватнаядиагностикаосталасьтольконасервере. Третийзапускпроверилизвестнуюошибкуиrollback: HTTP400/no ok,обаserverID/IP/enabled сохранены,5speed rows,9migration IDs,servers_id_seq last_value2/is_called=true иretention16 (последняяподтверждённаяHTTPwrite) совпалисожидаемымсостояниемдоrestore. Inheritedconstraint сохранился,count1. ЭтоPG-4 вграницеошибкиреальногоSQLпроцесса/контрольныхданных/sequence/constraint,неполныйchecksum всехтаблиц иневсе возможныеSQLотказы. УспешныйPG-3/новыйID послеуспешногоrestore не проверены.
Изолированныйконтейнерудалён--rm,егоscheduler/background/worker остановлены,соединениязакрыты. ПроверочнаяБД теперьretention16; основнойстендпо-прежнемуretention14,обаCHRзаписи сохранены,healthok/version1.0.0-test.673e5ba. Nativegre/BGP collector можетвыполнятьчтениеприштатномrestart,ноRouterOS apply/конфигурациянеизменялись. РеальныйPortal/browser restore UI иintegrated UDP+detached jobs втомжекритическоминтервалеэтимнепроверены.
Обнаруженныйдефектблокируетуспешнуюприёмкуrestore; коднеразвёрнутвосновномприложении. Следующий12.5.15 — исправитьочисткуpartition constraints внутриоднойтранзакции, безпредварительногонеобратимогоDROP ибезавтоматическогоповторапосленеизвестногоcommit, затемповторитьPG-3/4/полныйPG-6. Локальныйкоммитбезpush.
## 12.5.13 — сброс кэшей после подтверждённого восстановления БД (2026-10-07)
Добавлен invalidateSystemDatabaseCaches, вызываемый послеуспешногоpg_restore внутриrestore execution, доcleanup иперезапускаconsumers. Очищаются settingsRowCache, server/topology catalog, RIPE/index/ASN cache, интерфейсы, classification catalog, analytics/map hops, engine pending/recent/rings/minute accumulators иfact/engine ensured partition sets. Последнее исключаетповторноеиспользованиепамяткиосозданныхразделах, которыхуже можетнебытьввосстановленнойБД. Engine data epoch обновлён, runtime pending cap сохранён. GeoIP readers/file state не изменены: MMDB лежатвнеPostgreSQL dump.
+13 -1
View File
@@ -1,6 +1,6 @@
# Этап 12: итоговая приёмка UX/UI
Актуальное продолжение 2026-10-07:12.5.13 завершён локально в части cache invalidation после подтверждённогоrestore. Проверен порядокbackground drain→restore→cache reset→consumer restart;22lifecycle/database tests,HTTP/JWT,RIPE/ifindex/classify иbuild passed. Runtime673e5ba не обновлён. Следующий12.5.14 — integrated real-PG quiescence/restore ввыделеннойБД иdeployment; PG-6/PG-3/4 ещёоткрыты.
Актуальное продолжение 2026-10-07:12.5.14 выполненкакреальнаяприёмка isolated API/sourcef1aac49. ОбнаружендефектPG-3:pg_restore --clean падаетнаinherited partition PRIMARY KEY. HTTP admission409/ожиданиеwrite иrollback контрольныхданныхподтверждены. Основнойruntime673e5ba сохранён. Следующий12.5.15 — исправитьтранзакционнуюочисткуразделов иповторитьrestore; PG-3/полныйPG-6 открыты.
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
@@ -1076,3 +1076,15 @@ Production invalidate/reset функции отделеныотForTests API; с
Проверки: полныйtest:system-database21tests иHTTP/JWT scripts passed, затемновыйсовместныйcache/drain testpassed (всего22различныхtests). ПровереныудалениестарыхRIPE/interface/live данных безоткрытияRIPE, успешныйrestore→invalidate иотсутствиеinvalidate приошибкепроцесса. Совместныйfixtureснастоящимиoperation/restore helpers иbackground registry доказалпорядокstop listener→background drain→restore→invalidate→restart listener/scheduler; restart увиделочищенныйinterfacecache. Командаpg_restore вэтомfixture подмененаDI, это не реальныйPG-3. RIPE/ifindex/classify regression scripts иcontracts/backend build прошли; diff-check passed. БД/RouterOS влокальныхтестахнеизменялись.
Коднеразвёрнут: основнойruntime673e5ba сохраняется. PG-6 целикомоткрыт, чтение/rollback реальногоAPIrestore ещёнеподтверждено. PostgreSQL dump не содержитGeoIP/backup/certificate files; ихдоступностьнужноучитыватьвприёмке. Другиепроцессы/хосты gate/registry неостанавливает. Следующий12.5.14 — integrated real-PG HTTP/scheduler/background/UDP quiescence ввыделеннойпроверочнойБД, успешныйAPIrestore/ошибкапроцесса/sequence, затемdeploymentпроверенногообраза. Локальныйкоммитбезpush.
## 12.5.14 — реальный API restore: дефект очистки разделов и контроль rollback (2026-10-07)
Временный docker compose run --rm --no-deps backend использовалcompiled dist sourcef1aac49, mount/app/backend/acceptance, DATABASE_URL толькоmmapp_acceptance_20261007, HTTP127.0.0.1:8014 внутриконтейнера. Основнойbackend/frontend не обновлялись. [Очищенный отчёт](ux-ui/acceptance/real-restore-2026-10-07.json); SHA256 переданногоcompiled archive совпалслокальным. РеальныйbuildApp иAPI routes работалибезHTTP mocks; startScheduler=false приinitial build, стандартныеdatabase operation restarts выполнялиреальныйrefreshScheduler/consumer lifecycle.
GETbackup200/478810bytes/PGDMP полученвпамять безкопированиядампавGit. Отдельный тестовыйHTTP write handler менялretention14→16 подудерживаемымSQLlock. Concurrent POSTrestore не завершилсяраньшеwrite; новыйGETservers получил409. ПослеROLLBACKlock write завершился200; restore дождалсяего ивернул400 изнастоящегоpg_restore. Ошибка:cannot drop inherited constraint uptime_resource_samples_w_20261019_pkey of relation uptime_resource_samples_w_20261019. Существующий--single-transaction --clean --if-exists пытаетсяудалитьinheritedPK дочернегораздела. Сходныйконфликтописанв[pgsql-hackers](https://www.postgresql.org/message-id/1228964.1610480929%40sss.pgh.pa.us); текущийотказнепосредственновоспроизведённасервере/client18.6.
Первые2попыткиожидалиrestore200,ноостановилисьassert400; приватнаядиагностикаосталасьтольконасервере. Третийзапускпроверилизвестнуюошибкуиrollback: HTTP400/no ok,обаserverID/IP/enabled сохранены,5speed rows,9migration IDs,servers_id_seq last_value2/is_called=true иretention16 (последняяподтверждённаяHTTPwrite) совпалисожидаемымсостояниемдоrestore. Inheritedconstraint сохранился,count1. ЭтоPG-4 вграницеошибкиреальногоSQLпроцесса/контрольныхданных/sequence/constraint,неполныйchecksum всехтаблиц иневсе возможныеSQLотказы. УспешныйPG-3/новыйID послеуспешногоrestore не проверены.
Изолированныйконтейнерудалён--rm,егоscheduler/background/worker остановлены,соединениязакрыты. ПроверочнаяБД теперьretention16; основнойстендпо-прежнемуretention14,обаCHRзаписи сохранены,healthok/version1.0.0-test.673e5ba. Nativegre/BGP collector можетвыполнятьчтениеприштатномrestart,ноRouterOS apply/конфигурациянеизменялись. РеальныйPortal/browser restore UI иintegrated UDP+detached jobs втомжекритическоминтервалеэтимнепроверены.
Обнаруженныйдефектблокируетуспешнуюприёмкуrestore; коднеразвёрнутвосновномприложении. Следующий12.5.15 — исправитьочисткуpartition constraints внутриоднойтранзакции, безпредварительногонеобратимогоDROP ибезавтоматическогоповторапосленеизвестногоcommit, затемповторитьPG-3/4/полныйPG-6. Локальныйкоммитбезpush.
+4
View File
@@ -97,3 +97,7 @@ ssh -N -L 3000:127.0.0.1:3000 -L 8000:127.0.0.1:8000 [email protected]
## Локальный cache invalidation patch — 2026-10-07
12.5.13 сбрасываетDB-зависимыеNetFlow caches/live buffers/partition memo послеуспешногоrestore доconsumer restart, сохраняяRIPE pause.22различныхlifecycle/database tests,HTTP/JWT,RIPE/ifindex/classify иbuild прошли. Runtime673e5ba не обновлён; следующий12.5.14 — integrated real-PG quiescence/restore ввыделеннойБД иdeployment. PG-6/3/4 остаютсяоткрытыми. Dump не включаетвнешниеbackup/certificate/MMDB files.
## Реальный API restore failure — 2026-10-07
[12.5.14 evidence](ux-ui/acceptance/real-restore-2026-10-07.json): isolatedsourcef1aac49/API againstmmapp_acceptance_20261007, backup200, activewrite drain/GET409. Restore400:inheritedpartitionPK нельзяудалитьсуществующим--clean. Контрольrollback прошёл (servers/speed/migrations/sequence/retention16/constraint). ПроверочнаяБДretention16,основнаяretention14/source673e5ba/healthok сохранены. Runtimeнеобновлён,PG-3 иполныйPG-6 открыты. Следующий12.5.15 — транзакционноеисправлениеclean иповторнаяприёмка.
@@ -0,0 +1,107 @@
{
"date": "2026-10-07",
"source": "f1aac49",
"database": "mmapp_acceptance_20261007",
"mode": "real HTTP API against isolated PostgreSQL",
"mainDatabaseTouched": false,
"backup": {
"status": 200,
"bytes": 478810
},
"admission": {
"blockedGet": 409,
"waitedForActiveWrite": true
},
"restore": {
"status": 400,
"reason": "cannot drop inherited partition constraint",
"reportedSuccess": false
},
"rollbackControlsMatch": true,
"controlsAfterFailure": {
"servers": [
{
"id": 1,
"host": "194.226.121.150",
"enabled": true
},
{
"id": 2,
"host": "104.165.244.7",
"enabled": true
}
],
"uptime": [
{
"id": 1,
"retention_days": 16
}
],
"speed": [
{
"count": 5
}
],
"sequence": [
{
"last_value": 2,
"is_called": true
}
],
"migrations": [
{
"id": "0000_postgresql"
},
{
"id": "0002_compact_schema"
},
{
"id": "0003_backup_s3"
},
{
"id": "0004_geoip_settings"
},
{
"id": "0005_flow_facts"
},
{
"id": "0006_config_revisions"
},
{
"id": "0007_flow_buckets_nat"
},
{
"id": "0008_alert_outbox_outcomes"
},
{
"id": "0009_alert_outbox_resolution"
}
]
},
"failedConstraintStillPresent": 1,
"limits": [
"Single isolated backend instance; no cross-host quiescence proof",
"Real API handler admission and rollback controls tested on genuine pg_restore SQL failure; PG-3 success and sequence insertion NOT tested",
"No Portal SSO or browser restore UI tested",
"Main runtime remains673e5ba; isolated staged codef1aac49 only"
],
"compiledArchiveSha256": "7c8936f7959f356ae236a09257220100af70c4b0408535d75d88f8b275226561",
"attempts": [
"Two initial attempts expected restore200 but observed400; private diagnostic identified inherited constraint drop error",
"Third attempt asserted real SQL failure400 and independent rollback controls"
],
"healthMainAfter": {
"status": "ok",
"timestamp": "2026-10-07T16:18:38.474Z",
"version": "1.0.0-test.673e5ba",
"eventLoopDelayMs": 20,
"flowWorker": {
"alive": false,
"bound": false,
"pendingSize": 0,
"dropped": 0,
"packetsReceived": 0
}
},
"reference": "https://www.postgresql.org/message-id/1228964.1610480929%40sss.pgh.pa.us"
}