fix(alerts): удерживать неизвестные отправки без автоматического повтора
This commit is contained in:
1 parent
46be201d10
commit
b1ad9515fa
9 files changed
+128
-133
No files matched your search
+11
-1
@@ -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Б.4.4.3.1; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
|
||||
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | В работе: 11Б.1–11Б.4.4.3.2; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Не начат |
|
||||
|
||||
|
||||
@@ -36,6 +36,16 @@
|
||||
|
||||
|
||||
|
||||
## Блок 11Б.4.4.3.2 — atomic outbox claim и unknown hold (2026-10-03)
|
||||
|
||||
- Перед POST dispatcher выполняет conditional UPDATE pending+due→processing RETURNING и проверяет ownership/id/status. Второй worker и stale selected row не могут отправить ту же запись через новый dispatcher. Claim exception не запускает POST. Payload/history/counters проверяются до отправки.
|
||||
- Unknown/timeout/malformed send удерживается как unknown без automatic resend; crash/DB failure оставляет processing, который также не выбирается заново. API accepted + failed DB receipt не становится failed и не повторяется. Sent/failed status и history записываются одной transaction с returning checks; отсутствие receipt отклоняет callback.
|
||||
- Подтверждённый rejection сохраняет прежние maxRetries/backoff. Enqueue теперь атомарный onConflictDoNothing RETURNING по dedupeKey вместо select-then-insert race; existing failed/held не переотправляются скрыто. Cooldown/recovery/evaluation не менялись. Dispatch sent — число API acceptance, held/errors отдельно отражают failed persistence.
|
||||
- Новая 0008 migration атомарно расширяет реальный PG status CHECK (processing/unknown); исторические SQL не менялись. Bootstrap обнаруживает файл через applySqlMigrations. Migration не применялась локально: PG недоступен. При выпуске обновить все dispatcher workers вместе; старый worker не использует claim. Не откатывать CHECK при held rows.
|
||||
- 7 executor DI, Alerts backend/HTTP/JWT профиль, backend build/lint прошли. Engine groups/cooldown/evaluate прошли; confirm-stability пропущен с ECONNREFUSED PG. DI доказывает orchestration, не реальный PG lock/rollback/migration/crash recovery/Telegram delivery.
|
||||
- Очередь ещё не принята: processing/unknown пока не видны в Alerts UI, ручное разрешение held entries пока отсутствует. Консервативный hold требует операторской проверки; автоматически считать старый processing неотправленным нельзя.
|
||||
- Следующий точный шаг 11Б.4.4.3.3: показать known очередь/processing/unknown в GET/UI и сохранить состояние при сбое; затем контролируемое разрешение held entries, общий dashboard permission reader, адаптивность/pickers, Releases/probe scheduling и приёмка 11Б/12.
|
||||
|
||||
## Блок 11Б.4.4.3.1 — классификация Telegram delivery (2026-10-03)
|
||||
|
||||
- Telegram send helper отличает rejected (валидный negative Bot API receipt с ok:false/error_code/description) от unknown (network/timeout/malformed/HTTP failure без согласованного negative receipt). HTTP success+literal ok:true остаётся API acceptance; не доказательство доставки. Один bounded POST, без retry; секреты redacted.
|
||||
|
||||
Reference in new issue
Block a user