chore(test): проверить конкурентное разрешение unknown в PostgreSQL
This commit is contained in:
1 parent
06d73c50cc
commit
87fc1be657
6 files changed
+69
-4
No files matched your search
@@ -181,3 +181,7 @@ BGP-prefix evaluator, отдельное live GRE расписание и recove
|
||||
## Q-6 dedupe — 2026-10-08
|
||||
|
||||
12.5.35 [productionenqueue/PG race](ux-ui/acceptance/outbox-dedupe-2026-10-08.json) passed:2blockedINSERTs/receipts true-false/однаpendingстрока/повторfalse. Fixtureудалена/countbaseline восстановлен; dispatcherне запускался/сообщений0, mainruntime прежний. Q-6 принят; следующий12.5.36 — Q-4 unknownretry/version без отправки.
|
||||
|
||||
## Q-4 retry/version — 2026-10-08
|
||||
|
||||
12.5.36 [realHTTP/PG](ux-ui/acceptance/outbox-retry-2026-10-08.json) passed:2blockedUPDATE/200-409/version0→1; stale409, processing409, ackfalse400, отказанныезапросыне меняютстроку. Fixtureудалена/baselinecount восстановлен, app/pool/containerзакрыты, dispatcherне вызывался/сообщений0. Q-4 принят; Q-5 толькоprocessing-refusal. Runtime/mainhistory9 прежние. Следующий12.5.37 — конкурентныйclaimQ-1; реальныеTelegramdelivery scenarios требуютсогласованногочата/разрешенияна сообщения.
|
||||
+2
-2
@@ -1,12 +1,12 @@
|
||||
# План реализации UX/UI по пятичасовым окнам
|
||||
|
||||
Актуальное продолжение 2026-10-08: 12.5.35 Q-6 passed на выделенномPG: два productionenqueue INSERT подреальнойблокировкой, receipts true/false, однаpendingстрока, повторотклонён. Fixtureудалена, сообщений0. Runtimebackend8782054/frontendf194e72 прежний. Следующий12.5.36 — Q-4 конкурентный unknown retry/version check без отправки сообщений.
|
||||
Актуальное продолжение 2026-10-08: 12.5.36 Q-4 realHTTP/PG passed:2blockedUPDATE/200-409/version0→1, stale409/processing409/безack400/nochange. Fixturesудалены/сообщений0. Q-6 такжеpassed в12.5.35. Runtimebackend8782054/frontendf194e72/mainhistory9 прежние. Следующий12.5.37 — Q-1 конкурентныйclaim; реальнаяTelegramдоставка требует отдельного тестовогочата/разрешения на сообщения.
|
||||
|
||||
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-08. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
||||
|
||||
## Актуальная точка продолжения — 2026-10-08
|
||||
|
||||
Этапы0–11 завершены в описанных локальных границах. Этап12 остаётся открытым. На161.104.46.222 развёрнуты backend/frontend8782054; два CHR подключены. PG backup/restore/rollback, single-instance quiescence, JWT/RBAC и browser restore приняты в границах журнала. PG-8 проверен с настоящими PG/native и введённой после COMMIT ошибкой подтверждения; новый browser UI сохраняет snapshot и сверяет историю. ROS-8/9 API/SQL/native приняты в описанных границах. Browser-смена пары/длительности и удаление во время native-теста приняты в12.5.24. Реальный отказ bandwidth-аутентификации принят в12.5.25. 12.5.26 обнаружил и локально исправил30s timeout Next proxy. Исправленный frontendaa7dbdf развёрнут и проверен в12.5.27; backend8782054 прежний. ROS-3 reverse2→1/native-afterping принят в12.5.28; forward timeout открыт. Форма frontendf194e72 проверена без моков и развёрнута в12.5.29. Read-only диагностика12.5.30 не установила причину. 12.5.31 выявил текущий отказ авторизацииCHR2 вCLI/REST/SSH. В12.5.32 пользователь восстановил доступCHR2; dashboard/native1→2 passed, блокировка снята. TCP receive/both подтверждены после восстановлениядоступа в12.5.33; UDP transmit3s/API/history/UI подтверждены в12.5.34; Q-6productionenqueue/PG race принят в12.5.35; следующий12.5.36 — unknownretry/versionQ-4 без отправки. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) сохраняют точные доказательства и ограничения.
|
||||
Этапы0–11 завершены в описанных локальных границах. Этап12 остаётся открытым. На161.104.46.222 развёрнуты backend/frontend8782054; два CHR подключены. PG backup/restore/rollback, single-instance quiescence, JWT/RBAC и browser restore приняты в границах журнала. PG-8 проверен с настоящими PG/native и введённой после COMMIT ошибкой подтверждения; новый browser UI сохраняет snapshot и сверяет историю. ROS-8/9 API/SQL/native приняты в описанных границах. Browser-смена пары/длительности и удаление во время native-теста приняты в12.5.24. Реальный отказ bandwidth-аутентификации принят в12.5.25. 12.5.26 обнаружил и локально исправил30s timeout Next proxy. Исправленный frontendaa7dbdf развёрнут и проверен в12.5.27; backend8782054 прежний. ROS-3 reverse2→1/native-afterping принят в12.5.28; forward timeout открыт. Форма frontendf194e72 проверена без моков и развёрнута в12.5.29. Read-only диагностика12.5.30 не установила причину. 12.5.31 выявил текущий отказ авторизацииCHR2 вCLI/REST/SSH. В12.5.32 пользователь восстановил доступCHR2; dashboard/native1→2 passed, блокировка снята. TCP receive/both подтверждены после восстановлениядоступа в12.5.33; UDP transmit3s/API/history/UI подтверждены в12.5.34; Q-6productionenqueue/PG race принят в12.5.35; Q-4 realHTTP/PG race принят в12.5.36; следующий12.5.37 — конкурентныйclaimQ-1. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) сохраняют точные доказательства и ограничения.
|
||||
|
||||
Реальные pg_dump/pg_restore, PG rollback и остановка UDP worker требуют внешней приёмки. Датированные продолжения ниже — история; точный следующий шаг также указан в начале [журнала](ux-ui-progress.md).
|
||||
|
||||
|
||||
+11
-1
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-08: 12.5.35 Q-6 passed на выделенномPG: два productionenqueue INSERT подреальнойблокировкой, receipts true/false, однаpendingстрока, повторотклонён. Fixtureудалена, сообщений0. Runtimebackend8782054/frontendf194e72 прежний. Следующий12.5.36 — Q-4 конкурентный unknown retry/version check без отправки сообщений.
|
||||
Актуальное продолжение 2026-10-08: 12.5.36 Q-4 realHTTP/PG passed:2blockedUPDATE/200-409/version0→1, stale409/processing409/безack400/nochange. Fixturesудалены/сообщений0. Q-6 такжеpassed в12.5.35. Runtimebackend8782054/frontendf194e72/mainhistory9 прежние. Следующий12.5.37 — Q-1 конкурентныйclaim; реальнаяTelegramдоставка требует отдельного тестовогочата/разрешения на сообщения.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
|
||||
|
||||
@@ -34,6 +34,16 @@
|
||||
| 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.36 — HTTP/PostgreSQL конкурентное разрешение unknown (2026-10-08)
|
||||
|
||||
[Q-4 real HTTP/PG evidence](ux-ui/acceptance/outbox-retry-2026-10-08.json): source8782054, dedicatedmmapp_acceptance_20261007/guardconfirmed, настоящийbuildApp/authfalse/startSchedulerfalse иproductionretryUnknownOutbox. Scheduleradmission закрыт, dispatcher не запускался; fixturepayload{} не отправлялся.
|
||||
|
||||
Два POSTalerts/outbox/id/retry сexpectedVersion0/acknowledgedDuplicateRisktrue одновременно ожидали внешнююSELECT FOR UPDATE блокировку: observerувидел2Lockwaiters. ПослеCOMMIT ответыполучены200/409. НезависимыйSQL подтвердилpending/version1, ровно одноувеличение. Следующийstaleversion0 запрос409, запись не изменилась. Послепереводаfixtureвprocessing запроссversion1 вернул409 безизменения; ackfalse получил400 такжебезизменения. Реальные транзакции/rowlock/HTTP, не mockDB.
|
||||
|
||||
Fixture удалена/countoutbox восстановленкbaseline; locks/app/poolзакрыты, temporarycontainer--rm удалён. ОсновнаяБД/runtimebackend8782054/frontendf194e72/mainhistory9 прежние. Сообщенийотправлено0; Telegram/Portal/RBAC не проверены этимauthfalse прогоном. Q-4 принят в этихграницах; Q-5 толькоprocessing-refusal, процедураповторанастоящегоunknown/рискдубликата ещёнепринята.
|
||||
|
||||
Следующий12.5.37 — Q-1конкурентныйclaim. РеальнуюTelegramдоставку/потерюreceipt проверятьтолько ссогласованнымтестовымчатом иразрешениемотправки; текущиеSQLfixturetests их не заменяют. Полный12.5открыт. План/паспорт/протокол обновлены; локальный коммит без push.
|
||||
|
||||
## 12.5.35 — PostgreSQL dedupe конкурентного enqueue (2026-10-08)
|
||||
|
||||
[Q-6 real PG evidence](ux-ui/acceptance/outbox-dedupe-2026-10-08.json): production function enqueueTelegramOutbox/source8782054, dedicatedmmapp_acceptance_20261007. Guard проверил имяБД. Scheduler admission закрыт внутри тестового процесса; dispatcher/Telegram sender не вызывались.
|
||||
|
||||
+11
-1
@@ -1,6 +1,6 @@
|
||||
# Этап 12: итоговая приёмка UX/UI
|
||||
|
||||
Актуальное продолжение 2026-10-08: 12.5.35 Q-6 passed на выделенномPG: два productionenqueue INSERT подреальнойблокировкой, receipts true/false, однаpendingстрока, повторотклонён. Fixtureудалена, сообщений0. Runtimebackend8782054/frontendf194e72 прежний. Следующий12.5.36 — Q-4 конкурентный unknown retry/version check без отправки сообщений.
|
||||
Актуальное продолжение 2026-10-08: 12.5.36 Q-4 realHTTP/PG passed:2blockedUPDATE/200-409/version0→1, stale409/processing409/безack400/nochange. Fixturesудалены/сообщений0. Q-6 такжеpassed в12.5.35. Runtimebackend8782054/frontendf194e72/mainhistory9 прежние. Следующий12.5.37 — Q-1 конкурентныйclaim; реальнаяTelegramдоставка требует отдельного тестовогочата/разрешения на сообщения.
|
||||
|
||||
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
|
||||
|
||||
@@ -1330,3 +1330,13 @@ Mainhistory6→8 намеренно: ровно две записи этой п
|
||||
Две настоящие production INSERT сразнымиid/однимdedupekey одновременно ждали LOCK TABLEalert_outbox IN SHARE MODE: независимыйobserver увидел2Lockwaiters. ПослеCOMMIT holder обеоперации завершились, receipts[true,false]. SQL подтвердил однуpendingстроку/version0 сidпобедителя. Последующийenqueue стемжеключомвернулfalse, строкпо-прежнему1. Это реальная uniqueconstraint гонка/productionenqueue, не mockDB.
|
||||
|
||||
Fixture удалена, countoutbox совпал сbaseline, транзакция/соединения закрыты, container--rm удалён; основнойстенд/БД не затрагивались. Сообщений отправлено0. Q-6 принят в этих границах; claim/send/settlement/Q-1–5/7–8 отдельно не проверены. Продуктовыйкод/runtime прежний. Следующий12.5.36 — Q-4: конкурентныйunknownretry/expectedVersion без отправки сообщений. План/паспорт/протокол обновлены; локальный коммит без push.
|
||||
|
||||
## 12.5.36 — HTTP/PostgreSQL конкурентное разрешение unknown (2026-10-08)
|
||||
|
||||
[Q-4 real HTTP/PG evidence](ux-ui/acceptance/outbox-retry-2026-10-08.json): source8782054, dedicatedmmapp_acceptance_20261007/guardconfirmed, настоящийbuildApp/authfalse/startSchedulerfalse иproductionretryUnknownOutbox. Scheduleradmission закрыт, dispatcher не запускался; fixturepayload{} не отправлялся.
|
||||
|
||||
Два POSTalerts/outbox/id/retry сexpectedVersion0/acknowledgedDuplicateRisktrue одновременно ожидали внешнююSELECT FOR UPDATE блокировку: observerувидел2Lockwaiters. ПослеCOMMIT ответыполучены200/409. НезависимыйSQL подтвердилpending/version1, ровно одноувеличение. Следующийstaleversion0 запрос409, запись не изменилась. Послепереводаfixtureвprocessing запроссversion1 вернул409 безизменения; ackfalse получил400 такжебезизменения. Реальные транзакции/rowlock/HTTP, не mockDB.
|
||||
|
||||
Fixture удалена/countoutbox восстановленкbaseline; locks/app/poolзакрыты, temporarycontainer--rm удалён. ОсновнаяБД/runtimebackend8782054/frontendf194e72/mainhistory9 прежние. Сообщенийотправлено0; Telegram/Portal/RBAC не проверены этимauthfalse прогоном. Q-4 принят в этихграницах; Q-5 толькоprocessing-refusal, процедураповторанастоящегоunknown/рискдубликата ещёнепринята.
|
||||
|
||||
Следующий12.5.37 — Q-1конкурентныйclaim. РеальнуюTelegramдоставку/потерюreceipt проверятьтолько ссогласованнымтестовымчатом иразрешениемотправки; текущиеSQLfixturetests их не заменяют. Полный12.5открыт. План/паспорт/протокол обновлены; локальный коммит без push.
|
||||
@@ -189,3 +189,7 @@ ssh -N -L 3000:127.0.0.1:3000 -L 8000:127.0.0.1:8000 [email protected]
|
||||
## Q-6 dedupe — 2026-10-08
|
||||
|
||||
12.5.35 [productionenqueue/PG race](ux-ui/acceptance/outbox-dedupe-2026-10-08.json) passed:2blockedINSERTs/receipts true-false/однаpendingстрока/повторfalse. Fixtureудалена/countbaseline восстановлен; dispatcherне запускался/сообщений0, mainruntime прежний. Q-6 принят; следующий12.5.36 — Q-4 unknownretry/version без отправки.
|
||||
|
||||
## Q-4 retry/version — 2026-10-08
|
||||
|
||||
12.5.36 [realHTTP/PG](ux-ui/acceptance/outbox-retry-2026-10-08.json) passed:2blockedUPDATE/200-409/version0→1; stale409, processing409, ackfalse400, отказанныезапросыне меняютстроку. Fixtureудалена/baselinecount восстановлен, app/pool/containerзакрыты, dispatcherне вызывался/сообщений0. Q-4 принят; Q-5 толькоprocessing-refusal. Runtime/mainhistory9 прежние. Следующий12.5.37 — конкурентныйclaimQ-1; реальныеTelegramdelivery scenarios требуютсогласованногочата/разрешенияна сообщения.
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"date": "2026-10-08",
|
||||
"backendSource": "8782054",
|
||||
"database": "mmapp_acceptance_20261007",
|
||||
"actualBlockedUpdates": 2,
|
||||
"responses": [
|
||||
{
|
||||
"status": 200,
|
||||
"body": {
|
||||
"ok": true,
|
||||
"id": "acceptance-retry-1791431645567",
|
||||
"status": "pending",
|
||||
"resolutionVersion": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"status": 409,
|
||||
"body": {
|
||||
"error": "Запись очереди изменилась или не имеет неизвестного результата. Обновите снимок."
|
||||
}
|
||||
}
|
||||
],
|
||||
"saved": {
|
||||
"id": "acceptance-retry-1791431645567",
|
||||
"status": "pending",
|
||||
"resolution_version": 1
|
||||
},
|
||||
"staleRequestStatus": 409,
|
||||
"processingRetryStatus": 409,
|
||||
"missingAcknowledgementStatus": 400,
|
||||
"externalMessagesSent": 0,
|
||||
"limits": [
|
||||
"Real HTTP/PG retry/version logic; no dispatcher or external send",
|
||||
"Auth false in isolated test app; RBAC not retested here",
|
||||
"Q-5 processing refusal only; not full unknown duplicate-risk operational procedure"
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user