3.2.7.35 Voting Complete

The Voting Complete event MUST be signaled by using the following arguments:

If the Voting Complete event is signaled, the Core Transaction Manager Facet (section 1.3.3.3.1) MUST perform the following actions:

  • Set the transaction state to Voting Complete.

  • If the Phase One Enlistment list of the transaction is empty:

    • If the Phase Two (section 1.3.1.3) Voter Enlistment list of the transaction is empty:

      • Signal the Phase One Completed event (section 3.2.7.25) on the transaction's Superior Enlistment's Transaction Manager facet using the following arguments:

        • The Superior Enlistment that is referenced by the provided transaction object

        • The Read Only outcome

      • Set the transaction State to Ended (section 3.2.1.3.14).

    • Otherwise:

      • If the transaction's Single Phase Commit flag (defined in section 3.2.1) is set to true:

        • Signal the Phase One Complete event on the transaction's Superior Enlistment's Transaction Manager facet with the following arguments:

          • The Superior Enlistment referenced by the provided transaction object

          • The Committed outcome

        • Set the transaction's State to Phase One Complete.

        • Signal the Begin Commit (section 3.2.7.2) event on the Core Transaction Manager with the provided transaction object.

      • Otherwise:

        • Set the transaction's state to Phase One Complete.

        • Signal the Phase One Complete event on the transaction's Superior Enlistment's Transaction Manager facet with the following arguments:

          • The Superior Enlistment referenced by the provided transaction object

          • The Prepared outcome

  • Otherwise, if the transaction's Single Phase Commit flag is set to TRUE and the transaction's Phase One Enlistment list contains one element:

    • Set the transaction's state to Single Phase Commit.

    • Signal the Begin Phase One event (see the Resource Manager and Superior Transaction Manager Begin Phase One events in sections 3.6.7.3 and 3.7.7.2, respectively) on the enlistment's Transaction Manager Facet field with the following arguments:

      • The Enlistment object

      • The Single Phase Commit flag set to TRUE

  • Otherwise:

    • Set the transaction's State to Phase One.

    • For each Enlistment object in the transaction's Phase One Enlistment list:

      • Signal the Begin Phase One event (see the Resource Manager and Superior Transaction Manager Begin Phase One events in sections 3.6.7.3 and 3.7.7.2, respectively) on the enlistment's Transaction Manager Facet field with the following arguments:

        • The Enlistment object

        • The Single Phase Commit flag set to FALSE