Коды ошибок событий (mpbx-events)
Коды, которые возвращает mpbx_events (W1-PBX-05): шина Bus, конверт события и транзакционная очередь
исходящих событий (outbox). Виды сопоставляются со статусами HTTP на уровне API так же, как в
общих кодах. Сообщения никогда не содержат данные событий, значения строк или секреты.
Руководство:
docs/guides/domain-events.md.
| Код | Вид | Значение | Что делать |
|---|---|---|---|
MPBX-EVENTS-ENCODE | internal | Событие не удалось сериализовать в JSON. | Сообщите о проблеме: это ошибка. |
MPBX-EVENTS-DECODE | invalid_argument | JSON не является корректным конвертом события (неизвестный type, отсутствует поле). В ретрансляторе очереди строка переносится в мёртвые письма (dead_at), а в last_error записывается этот код. | Обычно событие записала более новая версия до отката: обновите систему снова, затем повторно обработайте мёртвые письма (см. руководство). |
MPBX-EVENTS-LAGGED | unavailable | Подписчик внутренней шины Bus отстал и пропустил события; сообщение называет их количество. Ошибка временная: подписка продолжает работать. | Ускорьте обработку подписчиком или увеличьте ёмкость Bus. Подписчикам, которым нужно получить каждое событие, нужна повторная синхронизация или долговечная шина Bus. |
MPBX-EVENTS-CLOSED | unavailable | Шина Bus остановлена. | Ожидаемо при остановке; в остальных случаях перезапустите процесс. |
MPBX-EVENTS-TENANT-MISMATCH | permission_denied | Событие записано в очередь для другой компании, отличной от компании, к которой привязана транзакция (mpbx.tenant_id). Ничего не записано. | Ошибка в вызывающем коде: создавайте событие с компанией транзакции. |
MPBX-EVENTS-SYSTEM-SCOPE-REQUIRED | permission_denied | Ретранслятор очереди, pending_count или prune_published запущены в транзакции, которая не является системной (роль mpbx_system). Ничего не прочитано и не изменено. | Ошибка в подключении: создайте ретранслятор через storage::pg::SystemTx::opener(pool, system_ctx) и вызывайте pending_count и prune_published на соединении SystemTx. |
MPBX-EVENTS-OUTBOX-DB | unavailable or internal | Ошибка базы данных в очереди (сообщение содержит только SQLSTATE). unavailable (повтор возможен), когда Postgres недоступен; во всех остальных случаях internal, например неизвестная компания (23503) или повторный идентификатор события (23505). | Проверьте состояние Postgres; для internal сообщите о проблеме вместе со строкой журнала. |