¿Qué significa el código HRESULT 0x8004D000 (XACT_E_ALREADYOTHERSINGLEPHASE)?

 
Anterior Siguiente
FSRM_E_MODULE_TIMEOUT XACT_E_CANTRETAIN

XACT_E_ALREADYOTHERSINGLEPHASE

Qué significa XACT_E_ALREADYOTHERSINGLEPHASE

XACT_E_ALREADYOTHERSINGLEPHASE corresponde al HRESULT 0x8004D000. Windows lo describe así: «Ya se ha inscrito otro administrador de recursos de fase única en esta transacción.».

Para diagnosticarla conviene pensar en inscripción de resource managers y correspondencia entre UOW, enlistment y recurso, no solo en el método que terminó devolviendo el código. En este caso, ya hay otro resource manager ocupando el papel de optimización single-phase; no pueden competir dos participantes por esa función.

Qué comprobar

  • Captura UOW, RMID, identificador de enlistment, resource manager, flags de single-phase y la llamada exacta de enlist/re-enlist en el intento que devuelve 0x8004D000.
  • Correlaciona eventos de aplicación, MSDTC y resource manager con la misma UOW para no mezclar transacciones concurrentes del mismo proceso.
  • Comprueba de forma explícita esta condición: ya hay otro resource manager ocupando el papel de optimización single-phase; no pueden competir dos participantes por esa función.

Tratamiento y recuperación

Corrige la relación entre la transacción y el resource manager que participa en ella. Reutiliza solo el enlistment y el UOW que pertenecen a esa generación; al reintentar, crea una inscripción nueva si la anterior ya quedó resuelta o invalidada.

Diferencias con resultados cercanos

Después del cambio, confirma que coordinator y resource managers coinciden en la misma decisión y que no quedan ramas prepared/in-doubt pendientes de recovery.

Referencias técnicas


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