3.3.4.1 Recover
This event is triggered by the higher-layer software hosting infrastructure when it reinitializes the system after a software failure or restart.
When the Transaction Manager Communicating with an LU 6.2 Implementation Facet is asked to Recover after a software failure or restart, it MUST perform the following actions:
For each LU Pair object in the log of the Transaction Manager Communicating with an LU 6.2 Implementation Facet:
Copy the LU Pair object to the LU Pair Table of the Transaction Manager Communicating with an LU 6.2 Implementation Facet.
For each LU Pair object in the LU Pair Table of the Transaction Manager Communicating with an LU 6.2 Implementation Facet:
For each LUW object in the LUW List of the currently referenced LU Pair object:
Attempt to find a transaction in the transaction table of the transaction manager (as specified in [MS-DTCO] section 3.1.1) that meets the following condition:
The value of the Transaction Object.Identifier field of the Transaction object is set to the value of the Transaction Identifier field of the currently referenced LUW object.
If a transaction that meets the preceding condition is found:
If the local LU LUW State of the currently referenced LUW object is set to Forget:
Continue processing for the next LUW object in the LUW List.
Otherwise:
Signal the Request Transaction Outcome event (as specified in [MS-DTCO] section 3.2.7.33) on the Core Transaction Manager Facet with the following argument:
The Enlistment object of the currently referenced LUW object.
Otherwise:
Set the local LU LUW State of the currently referenced LUW object to Reset.
Set the LUW Recovery State of the currently referenced LUW object to Need Recovery.
Signal the Recovery Work Ready event with the following arguments:
The currently referenced LU Pair object.
The Recovery Work Ready Reason set to LUW Recovery.
All incoming connections MUST be rejected until the Core Transaction Manager Facet signals the Begin Commit event or Begin Rollback event for each transaction. Connection rejection is as specified in [MS-CMP] section 3.1.5.5, with the rejection reason value set to 0x80070005.