Compartir a través de


Control de las operaciones de reversión

Un administrador de recursos, un cliente transaccional o KTM puede revertir una transacción si determina que la transacción no se debe confirmar (normalmente porque se ha detectado un error).

Para revertir una transacción, un administrador de recursos puede llamar a ZwRollbackEnlistment. Una vez que el administrador de recursos haya llamado ZwCreateEnlistment para inscribirse en una transacción, puede revertir la transacción en cualquier momento antes de llamar a ZwPrepareComplete.

Los clientes transaccionales pueden revertir sus transacciones llamando a ZwRollbackTransaction. Después de que un cliente transaccional haya llamado ZwCreateTransaction para crear una transacción, puede revertir la transacción en cualquier momento antes de llamar a ZwCommitTransaction.

Además, un cliente transaccional puede establecer un valor de tiempo de espera para una transacción mediante una llamada a ZwSetInformationTransaction. KTM revierte la transacción si no ha sido confirmada por la cantidad de tiempo especificada.

Cuando se realiza una llamada a ZwRollbackEnlistment o ZwRollbackTransaction , o cuando se supera un valor de tiempo de espera, KTM envía una notificación de TRANSACTION_NOTIFY_ROLLBACK a todos los administradores de recursos.

Cuando cada administrador de recursos recibe una notificación de TRANSACTION_NOTIFY_ROLLBACK, debe hacer lo siguiente:

  1. Restaure los datos de la transacción en el estado en que estaba antes de que el administrador de recursos se inscriba en la transacción.

    Normalmente, un administrador de recursos restaura los datos de la transacción copiando los datos iniciales guardados de la transacción desde el flujo de registro al almacenamiento público y permanente de la base de datos. Para obtener más información sobre cómo usar flujos de registro, consulte Uso de flujos de registro con KTM.

  2. Llame a ZwRollbackComplete.

Después de llamar a ZwRollbackComplete, el administrador de recursos debe llamar a ZwClose para cerrar el identificador de inscripción.

Si un administrador de recursos inició la operación de reversión, debe usar su interfaz de cliente para informar al cliente de que se produjo un error en la transacción.