3.2.7.25 Phase One Completed
The Phase One Completed event MUST be signaled by using the following arguments:
A transaction object
If the Phase One Completed event is signaled, the Core Transaction Manager MUST perform the following actions:
Set the state of the transaction to Phase One Complete (section 3.2.1.3.8).
If both the transaction's Phase Two Enlistment list and the transaction's Phase Two (section 1.3.1.3) Voter Enlistment list are empty:
Signal the Phase One Complete (see sections 3.4.7.13 and 3.8.7.7) event on the transaction's Superior Enlistment's Transaction Manager facet with the following arguments:
The transaction's Superior Enlistment object
The Read Only outcome
Signal the Forget Transaction (section 3.2.7.22) event on the Core Transaction Manager Facet's (section 1.3.3.3.1) with the provided transaction object.
If the Single Phase Commit flag (defined in section 3.2.1) of the transaction is set to TRUE:
Set the transaction state to Failed to Notify (section 3.2.1.3.13).
Save the transaction to the Core Transaction Manager Facet.Durable Log of the Core Transaction Manager.
Signal the Phase One Complete event on the Transaction Manager facet of the transaction's Superior Enlistment using the following arguments:
The Superior Enlistment object of the transaction.
The Committed outcome.
Set the transaction state to Phase One Complete.
Signal the Begin Commit (section 3.2.7.2) event on the Core Transaction Manager Facet's with the provided transaction object.
Otherwise, if the Single Phase Commit flag of the transaction is set to FALSE:
Set the transaction state to In Doubt (section 3.2.1.3.12).
Save the transaction to the Core Transaction Manager Facet.Durable Log of the Core Transaction Manager.
Set the transaction state to Phase One Complete.
Signal the Phase One Complete event on the Superior Enlistment of the transaction's Transaction Manager Facet using the following arguments:
The Superior Enlistment object of the transaction
The Prepared outcome