Что означает код HRESULT 0x8004D080 (XACT_E_CLERKNOTFOUND)?

 
Предыдущий Следующий
XACT_E_LU_TX_DISABLED XACT_E_CLERKEXISTS

XACT_E_CLERKNOTFOUND

Диагностический смысл

XACT_E_CLERKNOTFOUND (0x8004D080) — код ошибки из области MSDTC / COM+ transactions. Короткий ориентир по имени: recovery clerk не найден. Для диагностики важнее определить первый API и состояние объекта в момент возврата, чем переводить символическое имя как общее сообщение.

Исходное условие в техническом описании сформулировано так: A requested TXF or CRM recovery clerk could not be located.. Эту формулировку следует сопоставлять с фактическим параметром, handle, файлом или state transition в trace.

Объект и состояние

Проверяйте состояние самой транзакции отдельно от причины, которая привела её к этому состоянию. Для распределённого commit важны UOW, фаза протокола, голоса участников, ownership операции и терминальный outcome.

Для этого кода особенно полезно различать два признака из исходной документации: A requested TXF or CRM recovery clerk could not be located. и Avoid retaining monitor objects or clerk identifiers across COM+ application restarts.. Они задают более узкую границу, чем название facility.

Сведения для воспроизведения

  • идентификатор UOW и первый API, вернувший код
  • фаза prepare/commit/abort/recovery и текущий владелец перехода
  • голоса и состояние resource managers, включая первый отказ
  • тайм-аут, DTC trace и внешние побочные эффекты вне транзакции
  • Сопоставьте trace с исходным признаком: COM+ Compensating Resource Manager documentation uses clerks to hold durable log records for a transaction and exposes monitoring interfaces for clerk state. A concrete diagnosis still requires the returning interface, clerk identifier, transaction UOW, and product component; the constant name is not enough to claim a particular method.
  • Сопоставьте trace с исходным признаком: Serialize enumeration and lookup if the API contract does not guarantee a stable snapshot.
  • Сопоставьте trace с исходным признаком: XACT_E_CLERKEXISTS represents the opposite identity conflict. XACT_E_RECOVERYINPROGRESS indicates that recovery activity, rather than absence alone, blocks the requested operation.

Последовательность действий

  1. Проверьте именно границу «recovery clerk не найден» и зафиксируйте объект, аргумент или состояние, которое её подтверждает.
  2. Сверьте наблюдаемое состояние с отдельным исходным признаком: The application expects CRM infrastructure on a code path that did not register or durably create a clerk..

Что считать исправлением

Исправляйте конкретную фазу или ownership. Не повторяйте commit/abort на старом объекте вслепую и не создавайте новую бизнес-попытку, пока не понятен исход предыдущей транзакции.

Регрессионная проверка должна отдельно контролировать условие Refresh the clerk inventory and reacquire the object from the current recovery context. Do not fabricate a clerk or delete logs to bypass the lookup. If the transaction is incomplete, preserve durable records until the owning component determines the correct recovery action.. Положительный тест обязан проходить после узкого исправления, а отрицательный — по-прежнему воспроизводить ожидаемый отказ на заведомо неверном состоянии.

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


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