Resolution of transaction manager indoubt units of recovery

A global transaction is a unit of work that involves operations on Db2. All of the operations that comprise a global transaction are managed by a transaction manager, such as WebSphere® Application Server.

When the transaction manager receives transactionally demarcated requests from an application, it translates the requests into a series of transaction control commands, which it directs to the participating resource managers.

When a global transaction for a local application runs in a data sharing group, all parts of the global transaction run on the same data sharing member.

Example: An application requests updates to multiple databases. The transaction manager translates these update requests into transaction control commands that are passed to several resource managers. Each resource manager then performs its own set of operations on a database. When the application issues a COMMIT, the transaction manager coordinates the commit of the distributed transaction across all participating resource managers by using the two-phase commit protocol. If any resource manager is unable to complete its portion of the global transaction, the transaction manager directs all participating resource managers to roll back the operations that they performed on behalf of the global transaction.

If a communication failure occurs between the first phase (prepare) and the second phase (commit decision) of a commit, an indoubt transaction is created on the resource manager that experienced the failure. When an indoubt transaction is created, a message like this is displayed on the console of the resource manager:
00- 17.24.36 STC00051  DSNL405I  = THREAD     
  - G91E1E35.GFA7.00F962CC4611.0001=217     
  - PLACED IN INDOUBT STATE BECAUSE OF     
  - COMMUNICATION FAILURE WITH COORDINATOR 9.30.30.53.     
  - INFORMATION RECORDED IN TRACE RECORD WITH IFCID=209     
  - AND IFCID SEQUENCE NUMBER=00000001

After a failure, the transaction manager, such as WebSphere Application Server, is responsible for resolving indoubt transactions and for handling any failure recovery. To perform these functions, the server must be restarted and the recovery process initiated by an operator. You can also manually resolve indoubt transactions with the RECOVER INDOUBT command.