3.2.7.20 Enlistment Vote Complete

The Enlistment Vote Complete event MUST be signaled with the following arguments:

  • An Enlistment object.

  • A value indicating the Enlistment's vote. This value MUST be set to one of the following values:

    • Read Only

    • Prepared

    • Aborted

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

  • If the transaction's Doomed flag is set to TRUE, the Core Transaction Manager Facet MUST cease processing the event.

  • Otherwise:

    • If the Enlistment's Vote outcome is Aborted:

      • Set the transaction's Doomed flag to TRUE.

      • Remove the Enlistment from the transaction's Phase One (section 1.3.1.2) Voter Enlistment list.

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

        • The transaction's Superior Enlistment object.

        • The Aborted outcome.

      • Signal the Notify Aborted (section 3.2.7.23) event on the Core Transaction Manager Facet (section 1.3.3.3.1) with the provided transaction object.

    • Otherwise:

      • If the enlistment's Vote outcome is Read Only:

        • Remove the Enlistment from the transaction's Phase One Voter Enlistment list.

      • Otherwise:

        • Move the Enlistment from the transaction's Phase One Voter Enlistment list to the transaction's Phase Two (section 1.3.1.3) Voter Enlistment list.

      • If the transaction's Phase One Voter Enlistment list is now empty:

        • If the transaction state is Voting (section 3.2.1.3.5):

          • Signal the Voting Complete (section 3.2.7.35) event on the Core Transaction Manager Facet (section 1.3.3.3.1) with the provided transaction object.

        • Otherwise, if the transaction state is Phase One (section 3.2.1.3.7):

          • If both the transaction's Phase One Voter Enlistment list and Phase One Enlistment list are now empty:

            • Signal the Phase One Completed (section 3.2.7.25) event on the Core Transaction Manager Facet (section 1.3.3.3.1) with the provided transaction object.