3.3.7.4 Begin Rollback
The Begin Rollback event MUST be signaled with the following argument:
An Enlistment object
If the Begin Rollback event is signaled, the Transaction Manager Communicating with an LU 6.2 Implementation Facet MUST perform the following actions:
If the Connection field of the provided Enlistment object is not set:
For each LU Pair object in the LU Pair Table:
Attempt to find the first LUW object in the LUW List of the LU Pair object that meets the following condition:
The Transaction Identifier field of the LUW object is set to the value of the Transaction Identifier field of the provided Enlistment object.
If an LUW object is found:
Set the Local LU LUW State of the found LUW object to Reset.
Set the LUW Recovery State of the found LUW object to Need Recovery.
Signal the Recovery Work Ready event with the following arguments:
The LU Pair object
The Recovery Work Ready Reason set to LUW Recovery
Otherwise:
If the connection state is either Active or Prepared:
Send a TXUSER_DTCLURMENLISTMENT_MTAG_TO_LU_BACKOUT message using the connection referenced by the provided Enlistment object.
Set the connection state to Awaiting Abort Response.
Otherwise, if the connection state is Processing Backout Request:
Send a TXUSER_DTCLURMENLISTMENT_MTAG_TO_LU_BACKEDOUT message using the connection referenced by the provided Enlistment object.
Set the Local LU LUW State field of the LUW object of the provided Enlistment object to Forget.
Signal the Enlistment Rollback Complete event on the Core Transaction Manager Facet with the following argument:
The provided Active Phase Enlistment object.
Set the connection state to Ended (section 3.3.1.4.9).
Otherwise, ignore the event.