3.3.6.1 Update Timer

When this timer expires, the Management Server MUST perform the following actions:

  • If the Management Connection List is not empty:

    • Send an MSG_DTCUIC_STATS message to each connection in the Management Connection List with the following fields:

      • Set the cOpen field to Open Transactions.

      • Set the cCommitted field to  Committed Transactions.

      • Set the cAborted field to Aborted Transactions.

      • Set the cInDoubt field to In Doubt Transactions.

      • Set the cHeuristic field to Heuristic.

      • Set the cOpenMax field to Open Max Transactions.

      • Set the cCommittedMax field to Committed Max Transactions.

      • Set the cAbortedMax field to Aborted Max Transactions.

      • Set the cInDoubtMax field to In Doubt Max Transactions.

      • Set the cHeuristicMax field to Heuristic Max.

      • Set the cForcedCommit field to Forced Commit Transactions.

      • Set the cForcedAbort field to Forced Abort Transactions.

      • Set the cAvgResponseTime field to Avg Response Time.

      • Set the cMinResponseTime field to Min Response Time.

      • Set the cMaxResponseTime field to Max Response Time.

      • Set the timeTransactionsUp field to Time Transactions Up.

      • Set the systemTimeTransactionsUp field to System Time Transactions Up.

      • Set the dwTimestamp field to Time Stamp.

      • Set the cSinglePhaseInDoubt field to Single Phase In Doubt.

    • For each transaction object in the Transaction Table maintained by the transaction manager that is either in the In Doubt state or older than the Show Limit value (as determined through an implementation-specific mechanism):

      • If the transaction object is not present in the Tracked Transaction List:

        • Add the transaction object to the Tracked Transaction List.

  • If the Tracked Transaction list is not empty:

    • Create an empty list of DtcUITranListElement structures (up to an implementation-specific maximum capacity<8>

      For each transaction object in the Tracked Transaction List:

      • If the number of structures in the list of DtcUITranListElement structures is less than the implementation-specific capacity<9>

        • Create a new DtcUITranListElement structure.

        • Set the guidTx field to the transaction object's identifier.

        • Set the ulIsol field to the transaction object's isolation level.

        • Set the szDesc field to the transaction object's description.

        • Add the DtcUITranListElement structure to the list of DtcUITranListElement structures.

      • If the transaction is found in the Transaction Table:

        • Set the dwStatus field to the TRACKING_STATUS value that corresponds to the state of the transaction, as specified in section 2.2.2.3.1.

      • Otherwise, if the transaction is not found in the Transaction Table:

        • Set the dwStatus field to XACTSTAT_FORGET.

        • Remove the transaction object from the Tracked Transaction List.

      • Set the szParent field either to the host name specified by the Name field of the transaction object's Superior Enlistment field or to an empty string if the Name field is empty.

    • Send an MSG_DTCUIC_TRANLIST message to each connection in the Management Connection List. The fields of this message MUST be set as follows:

      • dwNumElements: The number of elements in the list of DtcUITranListElement structures.

      • rgElements: The list of DtcUITranListElement structures.

  • Set the Update Timer's period to the value specified by the Update Limit and reset the timer.