Situation 2: Coordinator issued a commit; one participant commits and one reports a heuristic rollback
The coordinator gathers all responses from participants.
If at least one participant reports a heuristic rollback and at least
one reports an acknowledgment of a commit, the result is called a mixed-transaction
result. The following events occur as a consequence:
- The coordinator writes the following message to its own database
server message log:
Mixed transaction result. (pid=nn user=userid)
Thepid
value is the user-process identification number of the coordinator process. Theuser
value is the user ID associated with the coordinator process. Associated with this message are additional messages that list each of the participant database servers that reported a heuristic rollback. The additional messages take the following form:Participant database server dbservername heuristically rolled back.
- The coordinator sends a message to each participant that heuristically rolled back its piece of work, directing each one to end the transaction.
- Each participant writes an ENDTRANS message in its logical-log buffer. (The transaction entry is removed from the transaction table.)
- The coordinator writes an ENDTRANS message in its logical-log buffer. (The transaction entry is removed from the shared-memory transaction table.)
- The coordinator returns error -698 to the application, as follows:
-698 Inconsistent transaction. Number and names of servers rolled back.
- Associated with this error message is the list of participant database servers that reported a heuristic rollback. If many database servers rolled back the transaction, this list might be truncated. The complete list is always included in the message log for the coordinator database server.
In this situation, examine the logical log at each participant database server site and determine whether your database system is consistent. (See Determine if a transaction was implemented inconsistently.)