3.2.7.2 Begin Commit

The Begin Commit event MUST be signaled with the following argument:

  • A transaction object

If the Begin Commit event is signaled, the Core Transaction Manager Facet MUST perform the following actions:

  • Set the transaction state to Committing (section 3.2.1.3.10).

  • If the Phase Two Voter Enlistment list of the transaction is not empty:

    • For each Enlistment object in the Phase Two Voter Enlistment list of transaction:

      • Remove the Enlistment object from the Phase Two Voter Enlistment list of the transaction.

      • Signal the Begin Commit event (see sections 3.4.7.3, 3.6.7.1, and 3.7.7.1) on the enlistment's transaction manager facet field with the Enlistment object.

  • If the Phase Two Enlistment list of the transaction is not empty:

    • For each Enlistment object in the Phase Two Enlistment list of the transaction:

      • Signal the Begin Commit event on the enlistment's transaction manager facet field with the Enlistment object.

  • Otherwise, if the Phase Two Enlistment list of the transaction is empty:

    • Signal the Commit Complete (section 3.8.7.3) event on the transaction's superior enlistment's transaction manager facet with the transaction's Superior Enlistment object.

    • Signal the Forget Transaction (section 3.2.7.22) event on the Core Transaction Manager Facet with the provided transaction object.