¿Qué significa el código HRESULT 0x8004D001 (XACT_E_CANTRETAIN)?

 
Anterior Siguiente
XACT_E_ALREADYOTHERSINGLEPHASE XACT_E_COMMITFAILED

XACT_E_CANTRETAIN

Qué significa XACT_E_CANTRETAIN

XACT_E_CANTRETAIN corresponde al HRESULT 0x8004D001. Windows lo describe así: «No se admite una confirmación o anulación con retención.».

La frontera técnica relevante es opciones de la transacción: aislamiento, retención, asincronía y límites soportados. La condición que distingue este valor de otros XACT es que el caller solicitó commit/abort retaining, pero esa implementación no conserva el contexto después del límite.

Qué comprobar

  • Captura nivel de aislamiento, isoFlags, retaining flags, timeout, modo síncrono/asíncrono y capacidades anunciadas por el transaction manager en el intento que devuelve 0x8004D001.
  • Localiza el primer participante o coordinador que cambia el estado; los HRESULT posteriores pueden ser solo propagación del outcome ya elegido.
  • Comprueba de forma explícita esta condición: el caller solicitó commit/abort retaining, pero esa implementación no conserva el contexto después del límite.

Tratamiento y recuperación

Ajusta la llamada a las capacidades reales del transaction manager y del recurso. No ocultes un flag no soportado sustituyéndolo silenciosamente: registra la semántica elegida y valida que aislamiento, timeout y retaining cumplen el contrato de la aplicación.

Diferencias con resultados cercanos

La prueba final debe demostrar tanto el resultado de negocio como el outcome de cada recurso enlistado. Un commit local aislado no prueba atomicidad distribuida.

Referencias técnicas


¿Buscas un código diferente? Buscar otro código de estado o error.