| Предыдущий | Следующий |
| XACT_E_PUSH_COMM_FAILURE | XACT_E_LU_TX_DISABLED |
XACT_E_PULL_COMM_FAILURE
Что фиксирует код
XACT_E_PULL_COMM_FAILURE (0x8004D02B) — код ошибки из области MSDTC / COM+ transactions. Короткий ориентир по имени: pull / связь / сбой. Для диагностики важнее определить первый API и состояние объекта в момент возврата, чем переводить символическое имя как общее сообщение.
Исходное условие в техническом описании сформулировано так: MSDTC could not pull the transaction from the source coordinator.
. Эту формулировку следует сопоставлять с фактическим параметром, handle, файлом или state transition в trace.
Граница отказа
Проверяйте состояние самой транзакции отдельно от причины, которая привела её к этому состоянию. Для распределённого commit важны UOW, фаза протокола, голоса участников, ownership операции и терминальный outcome.
Для этого кода особенно полезно различать два признака из исходной документации: MSDTC could not pull the transaction from the source coordinator.
и Source outbound or local inbound DTC access is disabled.
. Они задают более узкую границу, чем название facility.
Evidence для инцидента
- идентификатор UOW и первый API, вернувший код
- фаза prepare/commit/abort/recovery и текущий владелец перехода
- голоса и состояние resource managers, включая первый отказ
- тайм-аут, DTC trace и внешние побочные эффекты вне транзакции
- Сопоставьте trace с исходным признаком:
A firewall permits the initial application call but blocks RPC/DTC traffic used for the pull.
- Сопоставьте trace с исходным признаком:
“Pull” distinguishes the operation from pushing a locally owned transaction outward. The local coordinator is attempting to retrieve transaction state from a source manager, so source outbound policy, local inbound policy, and return-path identity deserve focused checks.
- Сопоставьте trace с исходным признаком:
AllStat explains that “The MSDTC transaction manager was unable to pull the transaction from the source transaction manager due to communication problems;
Проверка без догадок
- Проверьте именно границу «pull / связь / сбой» и зафиксируйте объект, аргумент или состояние, которое её подтверждает.
- Сверьте наблюдаемое состояние с отдельным исходным признаком:
Validate source outbound and local inbound network transaction settings.
.
Коррекция и regression test
Исправляйте конкретную фазу или ownership. Не повторяйте commit/abort на старом объекте вслепую и не создавайте новую бизнес-попытку, пока не понятен исход предыдущей транзакции.
Регрессионная проверка должна отдельно контролировать условие The source coordinator restarts or becomes unreachable after the transaction reference is handed off.
. Положительный тест обязан проходить после узкого исправления, а отрицательный — по-прежнему воспроизводить ожидаемый отказ на заведомо неверном состоянии.
Технические ссылки
- Microsoft: COM transaction error codes
- Microsoft: Test-Dtc
- Microsoft: configure DTC through firewalls
- Microsoft: troubleshooting MSDTC connectivity
- Microsoft: HRESULT values in MS-ERREF
Нужно найти другой код? Найти другой код состояния или ошибки.