| Предыдущий | Следующий |
| XACT_E_UNABLE_TO_LOAD_DTC_PROXY | XACT_E_PUSH_COMM_FAILURE |
XACT_E_ABORTING
Диагностический смысл
XACT_E_ABORTING (0x8004D029) — код ошибки из области MSDTC / COM+ transactions. Короткий ориентир по имени: идёт abort. Для диагностики важнее определить первый API и состояние объекта в момент возврата, чем переводить символическое имя как общее сообщение.
Исходное условие в техническом описании сформулировано так: The local transaction has entered or completed abort processing.
. Эту формулировку следует сопоставлять с фактическим параметром, handle, файлом или state transition в trace.
Объект и состояние
Проверяйте состояние самой транзакции отдельно от причины, которая привела её к этому состоянию. Для распределённого commit важны UOW, фаза протокола, голоса участников, ownership операции и терминальный outcome.
Для этого кода особенно полезно различать два признака из исходной документации: The local transaction has entered or completed abort processing.
и A resource manager failed prepare or lost the ability to guarantee its vote.
. Они задают более узкую границу, чем название facility.
Сведения для воспроизведения
- идентификатор UOW и первый API, вернувший код
- фаза prepare/commit/abort/recovery и текущий владелец перехода
- голоса и состояние resource managers, включая первый отказ
- тайм-аут, DTC trace и внешние побочные эффекты вне транзакции
- Сопоставьте trace с исходным признаком:
Stop issuing new work on the transaction and notify all owners of the shared context.
- Сопоставьте trace с исходным признаком:
Dispose of the aborted transaction context and start a new business attempt only after the original outcome and side effects are understood. Retry must be idempotent or guarded by a durable operation key; an abort does not automatically undo nontransactional calls.
- Сопоставьте trace с исходным признаком:
A request exceeds its transaction deadline, and MSDTC begins abort. A worker thread then tries to enlist another resource and receives this result. The service stops the workflow, waits for rollback completion, and retries under a new idempotency key only after checking external effects.
Последовательность действий
- Проверьте именно границу «идёт abort» и зафиксируйте объект, аргумент или состояние, которое её подтверждает.
- Сверьте наблюдаемое состояние с отдельным исходным признаком:
Wait for or query the terminal outcome before releasing durable recovery information.
.
Что считать исправлением
Исправляйте конкретную фазу или ownership. Не повторяйте commit/abort на старом объекте вслепую и не создавайте новую бизнес-попытку, пока не понятен исход предыдущей транзакции.
Регрессионная проверка должна отдельно контролировать условие Design one owner for transaction cancellation and propagate state changes to all workers. Dashboards should count the initiating abort reason separately from later this result observations.
. Положительный тест обязан проходить после узкого исправления, а отрицательный — по-прежнему воспроизводить ожидаемый отказ на заведомо неверном состоянии.
Технические ссылки
- Microsoft: COM transaction error codes
- Microsoft: ITransaction
- Microsoft: OleTx transaction protocol
- Microsoft: enable MSDTC diagnostic tracing
- Microsoft: HRESULT values in MS-ERREF
Нужно найти другой код? Найти другой код состояния или ошибки.