chore(test): подтвердить конкурентный захват очереди на PostgreSQL
This commit is contained in:
1 parent
7c4b21be19
commit
d44511da8e
6 files changed
+73
-4
No files matched your search
@@ -189,3 +189,7 @@ BGP-prefix evaluator, отдельное live GRE расписание и recove
|
||||
## Malformed retry receipt rollback — 2026-10-08
|
||||
|
||||
12.5.36.1 [realPGtrigger/HTTP500/SQLrollback](ux-ui/acceptance/outbox-receipt-rollback-2026-10-08.json) passed: version2 отклонена, unknown/version0 сохранены. Fixture/trigger/functionудалены, app/pool/containerзакрыты, сообщений0. Runtimeпрежний; полнаяQ-7/Telegramприёмка открыта. Следующий12.5.37 — Q-1claim после проверкилимита.
|
||||
|
||||
## Q-1 production claim — 2026-10-08
|
||||
|
||||
12.5.37 [realPG/productiondispatcher](ux-ui/acceptance/outbox-claim-2026-10-08.json) passed:2blockedclaims/interceptedsender1/sentfixture1/history1/no duplicatecall. Реальныхсообщений0; fakeTelegramsettings/fetchзамена сняты, fixtureудалена/DBcountbaseline восстановлен. Q-1принятдляодногопроцесса/несколькихPGconnections, не реальнаяTelegramдоставка. Runtimeпрежний. Следующий12.5.38 — SQLsettlementfailure послеfixtureacceptedresponse.
|
||||
+2
-2
@@ -1,12 +1,12 @@
|
||||
# План реализации UX/UI по пятичасовым окнам
|
||||
|
||||
Актуальное продолжение 2026-10-08: 12.5.36.1 malformed retry receipt rollback passed: реальныйPGtrigger далversion2 вместо1, HTTP500, independentSQL unknown/version0. Trigger/function/fixtureудалены, сообщений0. Q-6/Q-4 предыдущихблоковpassed. Runtime прежний. Следующий12.5.37 — конкурентныйclaimQ-1; передработойпроверитьквоту.
|
||||
Актуальное продолжение 2026-10-08: 12.5.37 Q-1 productionclaim/realPG passed:2blockedUPDATE, один intercepted sender call/однаsent+history fixture, повторне отправляет. Реальных сообщений0, настройки/fixtureвосстановлены. Runtimebackend8782054/frontendf194e72 прежний. Следующий12.5.38 — settlement/history failure после принятого simulatedTelegramresponse; реальнаядоставка остаётсянепроверенной.
|
||||
|
||||
Общий план проекта 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; Q-4 realHTTP/PG race принят в12.5.36; следующий12.5.37 — конкурентныйclaimQ-1. [Протокол](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; Q-1productionclaim/PG/interceptedsender принят в12.5.37; следующий12.5.38 — settlement/historyfailure безреальныхсообщений. [Протокол](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.36.1 malformed retry receipt rollback passed: реальныйPGtrigger далversion2 вместо1, HTTP500, independentSQL unknown/version0. Trigger/function/fixtureудалены, сообщений0. Q-6/Q-4 предыдущихблоковpassed. Runtime прежний. Следующий12.5.37 — конкурентныйclaimQ-1; передработойпроверитьквоту.
|
||||
Актуальное продолжение 2026-10-08: 12.5.37 Q-1 productionclaim/realPG passed:2blockedUPDATE, один intercepted sender call/однаsent+history fixture, повторне отправляет. Реальных сообщений0, настройки/fixtureвосстановлены. Runtimebackend8782054/frontendf194e72 прежний. Следующий12.5.38 — settlement/history failure после принятого simulatedTelegramresponse; реальнаядоставка остаётсянепроверенной.
|
||||
|
||||
Общий план: [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.37 — конкурентный production claim с перехваченным отправителем (2026-10-08)
|
||||
|
||||
[Q-1 real PG evidence](ux-ui/acceptance/outbox-claim-2026-10-08.json): productiondispatchPendingOutbox/source8782054, dedicatedmmapp_acceptance_20261007. Guard проверил имяБД и отсутствиедругихготовыхpendingзаписей; scheduleradmission закрыт в isolatedprocess. Productionenqueue/claim/settle SQL использованы напрямую, queryкод не копировался в тест. Внешний fetch Telegram перехвачен только внутри процесса и вернулfixture oktrue; ниодногонастоящего сообщенияне отправлено.
|
||||
|
||||
Два dispatcher одновременновыбралиоднуpendingзапись и ожидалиSELECT FOR UPDATEholder: observerподтвердил2заблокированныхproductionUPDATE. ПослеCOMMIT оба завершились, но senderboundary былвызван1раз; results.sent суммарно1/failed0/held0/errors[]. IndependentSQL подтвердилоднуsentстроку иоднуhistorysent_oktrue. Повторныйdispatcher не сделалвторогоsendercall. Statussent иhistory — тестовыйрезультат принятогоfixtureHTTPresponse, не утверждениеореальнойдоставкеTelegram.
|
||||
|
||||
Fixtureoutbox/historyудалены, countoutbox восстановленкbaseline, временныеfakeTelegramsettings замененыисходными изпамяти безсохранениятокеноввфайлы/отчёт. Fetchзамена снята, locks/pool/containerзакрыты. Основнойстенд/БД не затрагивались, runtimeпрежний. Q-1claim/uniquesender принят в этихграницах, многопроцессныйdispatcher/реальнаяTelegramдоставка отдельнонепроверены.
|
||||
|
||||
Следующий12.5.38 — реальныйSQL settlement/history failure после принятого simulatedTelegramresponse, безреальныхсообщений. Q-2внешняядоставка не можетсчитатьсяпринятой поfixture. План/паспорт/протокол обновлены; локальныйкоммитбезpush.
|
||||
|
||||
## 12.5.36.1 — rollback при некорректном retry receipt (2026-10-08)
|
||||
|
||||
[Real HTTP/PG evidence](ux-ui/acceptance/outbox-receipt-rollback-2026-10-08.json): dedicatedmmapp_acceptance_20261007/backend8782054. Реальный BEFOREUPDATEtrigger только дляfixtureid добавляллишнююединицуversion: UPDATEreceiptвернул2 вместоожидаемой1. ProductionexecuteOutboxRetry отклонилreceipt, HTTP500; независимыйSQL подтвердилunknown/resolutionVersion0, ложнойpendingзаписи неосталось.
|
||||
|
||||
+11
-1
@@ -1,6 +1,6 @@
|
||||
# Этап 12: итоговая приёмка UX/UI
|
||||
|
||||
Актуальное продолжение 2026-10-08: 12.5.36.1 malformed retry receipt rollback passed: реальныйPGtrigger далversion2 вместо1, HTTP500, independentSQL unknown/version0. Trigger/function/fixtureудалены, сообщений0. Q-6/Q-4 предыдущихблоковpassed. Runtime прежний. Следующий12.5.37 — конкурентныйclaimQ-1; передработойпроверитьквоту.
|
||||
Актуальное продолжение 2026-10-08: 12.5.37 Q-1 productionclaim/realPG passed:2blockedUPDATE, один intercepted sender call/однаsent+history fixture, повторне отправляет. Реальных сообщений0, настройки/fixtureвосстановлены. Runtimebackend8782054/frontendf194e72 прежний. Следующий12.5.38 — settlement/history failure после принятого simulatedTelegramresponse; реальнаядоставка остаётсянепроверенной.
|
||||
|
||||
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
|
||||
|
||||
@@ -1348,3 +1348,13 @@ Fixture удалена/countoutbox восстановленкbaseline; locks/app
|
||||
Тестовыеtrigger/function/rowудалены, countoutbox восстановленкbaseline; app/pool/containerзакрыты, dispatcherне запускался, сообщений0. Основнойbackend8782054/frontendf194e72 прежние. Это validation/transaction rollback, не полнаяQ-7/UI/RBAC/Telegramприёмка. Продуктовыйкод не менялся.
|
||||
|
||||
Блок выполнен изпоследнегорабочегорезервапослеQ-6/Q-4; новыхкрупныхблоковненачато. Следующий12.5.37 — Q-1конкурентныйclaim, сначала проверить остатокквоты. Журнал/план/паспорт/протокол обновлены; локальныйкоммитбезpush.
|
||||
|
||||
## 12.5.37 — конкурентный production claim с перехваченным отправителем (2026-10-08)
|
||||
|
||||
[Q-1 real PG evidence](ux-ui/acceptance/outbox-claim-2026-10-08.json): productiondispatchPendingOutbox/source8782054, dedicatedmmapp_acceptance_20261007. Guard проверил имяБД и отсутствиедругихготовыхpendingзаписей; scheduleradmission закрыт в isolatedprocess. Productionenqueue/claim/settle SQL использованы напрямую, queryкод не копировался в тест. Внешний fetch Telegram перехвачен только внутри процесса и вернулfixture oktrue; ниодногонастоящего сообщенияне отправлено.
|
||||
|
||||
Два dispatcher одновременновыбралиоднуpendingзапись и ожидалиSELECT FOR UPDATEholder: observerподтвердил2заблокированныхproductionUPDATE. ПослеCOMMIT оба завершились, но senderboundary былвызван1раз; results.sent суммарно1/failed0/held0/errors[]. IndependentSQL подтвердилоднуsentстроку иоднуhistorysent_oktrue. Повторныйdispatcher не сделалвторогоsendercall. Statussent иhistory — тестовыйрезультат принятогоfixtureHTTPresponse, не утверждениеореальнойдоставкеTelegram.
|
||||
|
||||
Fixtureoutbox/historyудалены, countoutbox восстановленкbaseline, временныеfakeTelegramsettings замененыисходными изпамяти безсохранениятокеноввфайлы/отчёт. Fetchзамена снята, locks/pool/containerзакрыты. Основнойстенд/БД не затрагивались, runtimeпрежний. Q-1claim/uniquesender принят в этихграницах, многопроцессныйdispatcher/реальнаяTelegramдоставка отдельнонепроверены.
|
||||
|
||||
Следующий12.5.38 — реальныйSQL settlement/history failure после принятого simulatedTelegramresponse, безреальныхсообщений. Q-2внешняядоставка не можетсчитатьсяпринятой поfixture. План/паспорт/протокол обновлены; локальныйкоммитбезpush.
|
||||
@@ -197,3 +197,7 @@ ssh -N -L 3000:127.0.0.1:3000 -L 8000:127.0.0.1:8000 root@161.104.46.222
|
||||
## Malformed retry receipt rollback — 2026-10-08
|
||||
|
||||
12.5.36.1 [realPGtrigger/HTTP500/SQLrollback](ux-ui/acceptance/outbox-receipt-rollback-2026-10-08.json) passed: version2 отклонена, unknown/version0 сохранены. Fixture/trigger/functionудалены, app/pool/containerзакрыты, сообщений0. Runtimeпрежний; полнаяQ-7/Telegramприёмка открыта. Следующий12.5.37 — Q-1claim после проверкилимита.
|
||||
|
||||
## Q-1 production claim — 2026-10-08
|
||||
|
||||
12.5.37 [realPG/productiondispatcher](ux-ui/acceptance/outbox-claim-2026-10-08.json) passed:2blockedclaims/interceptedsender1/sentfixture1/history1/no duplicatecall. Реальныхсообщений0; fakeTelegramsettings/fetchзамена сняты, fixtureудалена/DBcountbaseline восстановлен. Q-1принятдляодногопроцесса/несколькихPGconnections, не реальнаяTelegramдоставка. Runtimeпрежний. Следующий12.5.38 — SQLsettlementfailure послеfixtureacceptedresponse.
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"date": "2026-10-08",
|
||||
"backendSource": "8782054",
|
||||
"database": "mmapp_acceptance_20261007",
|
||||
"productionFunction": "dispatchPendingOutbox",
|
||||
"concurrentBlockedClaims": 2,
|
||||
"results": [
|
||||
{
|
||||
"sent": 0,
|
||||
"failed": 0,
|
||||
"held": 0,
|
||||
"errors": []
|
||||
},
|
||||
{
|
||||
"sent": 1,
|
||||
"failed": 0,
|
||||
"held": 0,
|
||||
"errors": []
|
||||
}
|
||||
],
|
||||
"interceptedSenderCalls": 1,
|
||||
"realExternalMessages": 0,
|
||||
"saved": {
|
||||
"id": "acceptance-claim-1791442661233",
|
||||
"status": "sent",
|
||||
"retry_count": 0,
|
||||
"resolution_version": 0
|
||||
},
|
||||
"history": [
|
||||
{
|
||||
"id": "acceptance-claim-1791442661233-history",
|
||||
"sent_ok": true
|
||||
}
|
||||
],
|
||||
"duplicateDispatcherDidNotSendAgain": true,
|
||||
"limits": [
|
||||
"Telegram HTTP response intercepted in-process; sent DB status is a test fixture, not real delivery",
|
||||
"Real production claim/settle and PostgreSQL row locks, one process with multiple connections",
|
||||
"Settings kept only in memory and restored; no bot token saved in report"
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user