Что означает код HRESULT 0x8004D02B (XACT_E_PULL_COMM_FAILURE)?

 
Предыдущий Следующий
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;

Проверка без догадок

  1. Проверьте именно границу «pull / связь / сбой» и зафиксируйте объект, аргумент или состояние, которое её подтверждает.
  2. Сверьте наблюдаемое состояние с отдельным исходным признаком: 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.. Положительный тест обязан проходить после узкого исправления, а отрицательный — по-прежнему воспроизводить ожидаемый отказ на заведомо неверном состоянии.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.