TransactionManager.Reenlist(Guid, Byte[], IEnlistmentNotification) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Reenlists a durable participant in a transaction.
public:
static System::Transactions::Enlistment ^ Reenlist(Guid resourceManagerIdentifier, cli::array <System::Byte> ^ recoveryInformation, System::Transactions::IEnlistmentNotification ^ enlistmentNotification);
public static System.Transactions.Enlistment Reenlist (Guid resourceManagerIdentifier, byte[] recoveryInformation, System.Transactions.IEnlistmentNotification enlistmentNotification);
static member Reenlist : Guid * byte[] * System.Transactions.IEnlistmentNotification -> System.Transactions.Enlistment
Public Shared Function Reenlist (resourceManagerIdentifier As Guid, recoveryInformation As Byte(), enlistmentNotification As IEnlistmentNotification) As Enlistment
Parameters
- recoveryInformation
- Byte[]
Contains additional information of recovery information.
- enlistmentNotification
- IEnlistmentNotification
A resource object that implements IEnlistmentNotification to receive notifications.
Returns
An Enlistment that describes the enlistment.
Exceptions
recoveryInformation
is invalid.
-or-
Transaction Manager information in recoveryInformation
does not match the configured transaction manager.
-or-
RecoveryInformation
is not recognized by System.Transactions.
RecoveryComplete(Guid) has already been called for the specified resourceManagerIdentifier
. The reenlistment is rejected.
The resourceManagerIdentifier
does not match the content of the specified recovery information in recoveryInformation
.
Remarks
Important
Calling this method with untrusted data is a security risk. Call this method only with trusted data. For more information, see Validate All Inputs.
A resource manager facilitates resolution of durable enlistments in a transaction by reenlisting the transaction participant after resource failure.
The resourceManagerIdentifier
parameter is used to consistently label the participant of a transaction in the event of a resource failure. When calling the Reenlist method, the resource manager must provide the same resourceManagerIdentifier
as it used when it originally called the EnlistDurable method during enlistment, or a TransactionException is thrown.
When a participant is reenlisted using this method, the phase 2 methods of IEnlistmentNotification that correspond to the transaction's outcome (that is, Commit, Rollback, or InDoubt ) are called as appropriate.
After the participants are successfully reenlisted, you should then call RecoveryComplete to complete the recovery.
You should only call this method when a resource manager restarts from failure. In addition, you should only reenlist unresolved transactions logged by a resource manager during the initial Prepare phase of a two-phase commit. Any attempt to call this method at invalid times can produce erroneous results.
If the transaction manager fails, and your resource manager performs recovery only a short time after you called the Prepared method on an enlistment in phase 1 of the Two-Phase Commit protocol, your resource manager might either receive the InDoubt or Rollback callback.
For more information on recovery, see Performing Recovery.