| Предыдущий | Следующий |
| XACT_S_SINGLEPHASE | XACT_S_LASTRESOURCEMANAGER |
XACT_S_LOCALLY_OK
Где находится ошибка
XACT_S_LOCALLY_OK (0x0004D00A) — информационный или успешный статус из области MSDTC / COM+ transactions. Короткий ориентир по имени: локально / успех. Для диагностики важнее определить первый API и состояние объекта в момент возврата, чем переводить символическое имя как общее сообщение.
Исходное условие в техническом описании сформулировано так: Local transaction has not aborted
. Эту формулировку следует сопоставлять с фактическим параметром, handle, файлом или state transition в trace.
Критическая граница
Проверяйте состояние самой транзакции отдельно от причины, которая привела её к этому состоянию. Для распределённого commit важны UOW, фаза протокола, голоса участников, ownership операции и терминальный outcome.
Для этого кода особенно полезно различать два признака из исходной документации: Local transaction has not aborted
и The semantic difference represented by it should be visible in both control flow and operational metrics.
. Они задают более узкую границу, чем название facility.
Минимальный полезный trace
- идентификатор UOW и первый API, вернувший код
- фаза prepare/commit/abort/recovery и текущий владелец перехода
- голоса и состояние resource managers, включая первый отказ
- тайм-аут, DTC trace и внешние побочные эффекты вне транзакции
- Сопоставьте trace с исходным признаком:
A bridge reports that the local database has not aborted while a remote resource is still resolving. The service keeps the operation pending until the coordinator decides.
- Сопоставьте trace с исходным признаком:
Treat this only as the local state. Continue waiting for the global transaction decision and avoid exposing local success as end-to-end commit.
- Сопоставьте trace с исходным признаком:
Also record xact_s_locally_ok_operation , xact_s_locally_ok_state_before , xact_s_locally_ok_state_after , UTC time, process and thread identifiers, component version, and a correlation ID. Keep it traces useful by recording object identity and timing while excluding authentication or content secrets.
Проверка гипотезы
- Проверьте именно границу «локально / успех» и зафиксируйте объект, аргумент или состояние, которое её подтверждает.
- Сверьте наблюдаемое состояние с отдельным исходным признаком:
Classify the operation phase reached at this result before releasing objects or issuing replacement work.
.
Критерий исправления
Исправляйте конкретную фазу или ownership. Не повторяйте commit/abort на старом объекте вслепую и не создавайте новую бизнес-попытку, пока не понятен исход предыдущей транзакции.
Регрессионная проверка должна отдельно контролировать условие Verify that the local resource remains valid while the distributed or coordinating outcome may still require observation. Failure to prove the boundary can make this result look healthy while the intended operation remains unfinished.
. Положительный тест обязан проходить после узкого исправления, а отрицательный — по-прежнему воспроизводить ожидаемый отказ на заведомо неверном состоянии.
Технические ссылки
- Microsoft: COM transaction status codes
- Microsoft: ITransaction::Commit
- Microsoft: ITransaction::Abort
- Microsoft: HRESULT values
Нужно найти другой код? Найти другой код состояния или ошибки.
