3.3.1 Abstract Data Model
This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that the implementations adhere to this model as long as their external behavior is consistent with the behavior that is described in this document.
Note that the abstract data model can be implemented in a variety of ways. This protocol does not prescribe or advocate any specific implementation technique.
The Transaction Manager Communicating with an LU 6.2 Implementation Facet MUST maintain the following data elements:
LU Pair Table: A durable table of LU Pair objects, keyed by an LU Name Pair. An LU Pair object represents an association between a local LU and a remote LU.
LU Pair Object: An LU Pair Object MUST contain the following data elements:
LU Name Pair: A durable byte array that MUST uniquely identify the LU Pair object.
Local Log Name: A durable byte array that MUST contain the log name of the local LU.
Remote Log Name: A durable byte array that MUST contain the log name provided by the remote LU.
Is Warm: A durable flag that indicates whether the log status of the local LU is Log Status Warm or Log Status Cold.
LUW List: A durable list of LUW objects that are associated with the LU Pair object. An LUW object represents a logical unit of work.
Resource Manager Identifier: A durable GUID that specifies the Resource Manager Identifier used when interacting with the Core Transaction Manager Facet as specified in section 3.3.5.3.1.
Recovery Sequence Number: Specifies the recovery sequence number that is provided by the LU 6.2 Implementation to demarcate sequences of recovery protocol messages flowing between the local LU and remote LU associated by this LU Pair.
Local LU Initiated Recovery List: A list of connection objects of type CONNTYPE_TXUSER_DTCLURECOVERYINITIATEDBYDTC. Each object represents a recovery process initiated by the transaction manager on behalf of the local LU.
Remote LU Initiated Recovery List: A list of connection objects of type CONNTYPE_TXUSER_DTCLURECOVERYINITIATEDBYLU. Each object represents a recovery process initiated by the remote LU.
LU Pair Recovery State: An enumeration that indicates the extent to which the LU Pair object has been recovered. This MUST contain one of the values defined by LU Pair Recovery State enumeration, later in this section.
Is LUW Triggered Recovery Pending: A flag that indicates whether a request to recover an LUW associated with the LU Pair object is waiting to be processed.
LUW Object: An LUW Object MUST contain the following data elements:
Transaction Identifier: A durable GUID that specifies the transaction identifier of the transaction that is associated with the logical unit of work.
LUW Identifier: A durable byte array specifying the LUW identifier.
Local LU LUW State: A durable enumeration that specifies the state of the LUW as perceived by its associated local LU. This MUST contain one of the values defined by LUW State enumeration, later in this section.
LUW Recovery State: An enumeration that specifies the state of recovery work for the LUW. This MUST contain one of the values defined by LUW Recovery State enumeration, later in this section.
Enlistment: Specifies a durable reference to the Enlistment object (as specified in [MS-DTCO] section 3.1.1) which represents the enlistment of the LUW on an atomic transaction.
Recovery Sequence Number For LUW: Specifies a snapshot of the recovery sequence number field of the LU Pair object that represents the pair of LUs involved in the LUW taken when the message TXUSER_DTCLURMENLISTMENT_MTAG_CREATE is processed.
Is Conversation Lost: A flag that indicates whether the LU 6.2 Implementation has reported the conversation with the remote LU being used for this LUW as lost.
The connection object of type CONNTYPE_TXUSER_DTCLURECOVERY MUST be extended to include the following data field:
LU Pair: Specifies a reference to the LU Pair object that is associated with the connection.
The connection object of type CONNTYPE_TXUSER_DTCLURMENLISTMENT MUST be extended to include the following data fields:
LU Pair: Specifies a reference to the LU Pair object that is associated with the connection.
LUW: Specifies a reference to the LUW object that is associated with the connection.
The connection object of type CONNTYPE_TXUSER_DTCLURECOVERYINITIATEDBYDTC MUST be extended to include the following data fields:
LU Pair: Specifies a reference to the LU Pair object that is associated with the connection.
LUW To Recover: Specifies a reference to the LUW object that is associated with the connection.
Recovery Sequence Number For Connection: Specifies a snapshot of the Recovery Sequence Number field of the associated LU Pair object taken when a response is sent to the TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_GETWORK message.
Compare State Query Received: This flag is used to indicate whether a Compare States Query was processed while awaiting an XLN Response.
The connection object of type CONNTYPE_TXUSER_DTCLURECOVERYINITIATEDBYLU MUST be extended to include the following data fields:
LU Pair: Specifies a reference to the LU Pair object that is associated with the connection.
LUW To Recover: Specifies a reference to the LUW object that is associated with the connection.
LU Pair Recovery State: An enumeration that indicates the extent to which the LU Pair object has been recovered. This element MUST be set to one of the following values:
Recovery Process Not Attached: This value is used to indicate that a recovery process has not been registered for the LU Name Pair.
Not Synchronized: This value is used to indicate that a recovery process has been registered for the LU Name Pair but that the local LU and remote LU are not currently synchronized.
Synchronizing No Remote Name: This value is used to indicate that an XLN exchange is in progress between the local LU and the remote LU, and the remote LU has not yet supplied a remote log name.
Synchronizing Have Remote Name: This value is used to indicate that an XLN exchange is in progress between the local LU and the remote LU, and the remote LU has supplied a remote log name.
Inconsistent: This value is used to indicate that an exchange of XLN messages has shown that the local LU and the remote LU are currently in inconsistent states.
Synchronized: This value is used to indicate that an exchange of XLN messages has shown that the local LU and the remote LU are in consistent states.
Synchronized Awaiting LU Status: This value is used to indicate that an exchange of XLN messages has shown that the local LU and the remote LU are in consistent states, and a response from the LU 6.2 Implementation reporting the status of the local LU is awaited.
LUW Recovery State: An enumeration that specifies the state, with respect to recovery, of the LUW as perceived by the local LU. This element MUST be set to one of the following values:
Recovery Not Needed: This value is used to indicate that recovery is not needed for the LUW.
Need Recovery: This value is used to indicate that recovery needs to be performed for the LUW.
Recovering: This value is used to indicate that recovery is in progress for the LUW.
LUW State: An enumeration that specifies the state of the logical unit of work as perceived by the local LU. This element MUST be set to one of the following values:
Active: The logical unit of work is in Active Phase.
Committed: The logical unit of work is in Phase Two with the outcome as Committed.
Reset: The logical unit of work is in Phase Two with the outcome as Aborted.
In Doubt: The logical unit of work is in Phase Two with the outcome as In Doubt.
Forget: The logical unit of work has been completed.
Log: A durable list of LU Pair objects. The contents of this log MUST persist across software restarts or transient failures.