chore(test): выявить ошибку восстановления разделов PostgreSQL
This commit is contained in:
1 parent
f1aac49dfc
commit
c24ad7810c
6 files changed
+142
-3
No files matched your search
@@ -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
@@ -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
@@ -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
@@ -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.
|
||||
@@ -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"
|
||||
}
|
||||
Reference in new issue
Block a user