Monitoring and Managing Two-Phase Commit

The iIS two-phase commit protocol is implemented by placing an engine session in two-phase commit mode. iIS engine transactions for this session are automatically placed in a PREPARE phase. A session with two-phase commit enabled can only support one iIS transaction at a time.

The iIS process engine uses a unique transaction ID to monitor transactions during a two-phase transaction. The client application can specify a unique transaction ID; otherwise the engine generates a transaction ID (based on a time stamp, session name, and the session operation sequence number).

Managing Two-Phase Commit Operations

If a session should be suspended for any of a number of reasons, any iIS transaction in a PREPARE phase is retained on the session, awaiting resolution (commit or rollback). The client application is normally responsible for resolving these transactions; however, in the case of failure, these transactions may be left permanently in the PREPARE phase. Because of this, it is up to a system manager to check for and resolve any transactions left in a PREPARE phase.

For example, a client application may perform an activity, but fail before it can notify the engine to commit the CompleteActivity operation. Similarly, the engine could fail before receiving the commit. Both these situations result in inconsistency of state information between the client application and engine.

To properly resolve iIS transactions in a PREPARE phase, however, you must investigate whether related application transactions were committed or aborted. How you do this depends on the details of the application and how it keeps track of transaction IDs.

You can use Conductor Script commands to identify and resolve transactions in a PREPARE phase, as described in “Monitoring and Managing Two-Phase Commit Transactions” on page 258.

202 iPlanet Integration Server • Process System Guide • August 2001

Page 202
Image 202
Sun Microsystems 3 manual Managing Two-Phase Commit Operations