In-Doubt Transactions

Sometimes COM+ (actually, the DTC) is unable to decide on the fate of a transaction. This indecisiveness is usually the result of some unexpected catastrophe. One possible catastrophe is network failure after the root object is deactivated, but before the DTC could conduct the two-phase commit protocol with remote resource managers. Another possible catastrophe is when a resource manager’s machine crashes in the middle of the two-phase commit protocol. In those cases, the transaction is said to be in-doubt. COM+ cannot decide on the fate of in-doubt transactions. It is up to the system administrator to manually resolve those transactions, using the Component Services Explorer. COM+ lists the in-doubt transactions under the DTC folder, on the Transaction List pane. An in-doubt transaction has the comment (In Doubt) in its status column. The system administrator should right-click on the in-doubt transaction and select Resolve from the pop-up menu. COM+ offers three options to resolve a transaction: Commit, Abort, or Forget (see Figure 4-15).

Resolving in-doubt transactions

Figure 4-15. Resolving in-doubt transactions

When the administrator selects Commit or Abort, COM+ instructs all accessible resource managers that took part in the transaction to commit or abort, respectively. Later on, when the rest of the resource managers become available, your system administrator should use an administrative utility to launch a compensating transaction on those resources.

The interesting resolving option is Forget. By choosing to forget about the transaction, your administrator instructs COM+ to do absolutely nothing with this transaction besides remove it from the list. The administrator is willing to accept the inconsistent state the system is in, and does not wish to commit or abort the transaction. Forgetting a transaction may be useful in some esoteric scenarios. Imagine that while a transaction was in doubt, some administrator manually changed entries in the database because he did not wish to wait for the transaction to be resolved. In such a case, your application administrator may choose to forget about the original transaction and accept the current state.

Get COM & .NET Component Services now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.