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.