FIX: DTC's XA RM Incorrectly Returns No More Transaction to Recover

ID: Q232348


The information in this article applies to:


SYMPTOMS

Distributed Transaction Coordinator (DTC) is acting as an XA Resource Manager (RM). After returning the initial set of transactions IDs to be recovered, DTC incorrectly returns no transaction IDs to recover. This can cause inconsistent outcomes on transactions.


CAUSE

The cause of this bug is due to incorrect logic in the way DTC was processing the list of transactions to be recovered. For example, there are 10 transactions to be recovered and a XA Transaction Manager - XATM (for example, Tuxedo) issues xa_recover to DTC asking for the first five XIDs. DTC returns the first five XIDs. But, when XATM comes back again and issues xa_recover for the next five XIDs, DTC would incorrectly report that there are no more XIDs to be recovered. This causes the XATM to assume that DTC already knows the outcome of the five transactions, however, DTC incorrectly forgets those transactions. The next time DTC asks for outcomes on those five transactions to the XATM, it says that the transactions aborted due to the presumed abort nature of the XA protocol.


RESOLUTION

This hotfix(ID: 051099f) fixes above mentioned problem.


STATUS

Who Should Install This Release

You should install hotfix 051099f, if you are experiencing above mentioned recovery problem.

Installation:

This hotfix should only be installed on systems running Microsoft Windows NT version 4.0 (Service Pack 5). It should not be installed on other systems running Microsoft Windows NT version 3.51 or Microsoft Windows 2000.

Note that this hotfix is based on the version of Microsoft DTC included with the Windows NT 4.0 Service Pack 5 release. By installing this hotfix, you are upgrading Microsoft DTC to the Windows NT 4.0 Service Pack 5 release level in addition to correcting the problems described here.

How to Install on a Non-clustered System

  1. Create an empty temporary directory on your system.


  2. Run the self-extracting executable file (i051099f.exe (i386) or a051099f.exe (alpha)) and when you are prompted type the name of the temporary directory.

    The program unzips the following files into the temporary directory:
    
       Dtcsetup.exe
       Qfe051099f.txt 


  3. Stop the Microsoft DTC Service, if it is running. Stop all services that depend on Microsoft DTC (including Microsoft Transaction Server, Microsoft SQL Server, Microsoft Message Queue, and Microsoft COM Transaction Integrator (COMTI)).


  4. Close Windows NT Control Panel, if it is open.


  5. Run Dtcsetup.exe.


  6. Restart the system.


  7. Restart all services that depend on Microsoft DTC.


How to Install on a Cluster with an Already Clustered Microsoft DTC

  1. Create an empty temporary directory on both nodes of the cluster.


  2. Run the self-extracting executable file (i051099f.exe (i386) or a051099f.exe(alpha)) on both nodes of the cluster and type the name of the temporary directory when you are prompted to do so. The program unzips the following files into the temporary directory:
    
       Dtcsetup.exe
       Qfe051099f.txt 


  3. Use the MSCS Cluster Administrator to stop the Microsoft DTC cluster resource, if it is running. Stop all services that depend on Microsoft DTC (including Microsoft Transaction Server, Microsoft SQL Server, Microsoft Message Queue, and Microsoft COMTI).


  4. Close Windows NT Control Panel on all systems in the cluster.


  5. Run Dtcsetup.exe on the node that controls the Microsoft DTC cluster resource. When you are prompted to install Microsoft DTC on the other nodes in the cluster, run Dtcsetup.exe on those nodes.


  6. Restart all systems.


  7. Restart all services that depend on Microsoft DTC.


How to Install on a Cluster with a Non-clustered Microsoft DTC

  1. Create an empty temporary directory on both nodes of the cluster.


  2. Run the self-extracting executable file (i051099f.exe (i386) or a051099f.exe (alpha)) on both nodes of the cluster and type the name of the temporary directory when you are prompted to do so. The program unzips the following files into the temporary directory:
    
       Dtcsetup.exe
       Qfe051099f.txt 


  3. Stop the Microsoft DTC Service on all systems in the cluster. Stop all services that depend on Microsoft DTC (including Microsoft Transaction Server, Microsoft SQL Server, Microsoft Message Queue, and Microsoft COMTI).


  4. Close Windows NT Control Panel on all systems in the cluster.


  5. When you install this release on a clustered system, the Setup program automatically installs a clustered version of Microsoft DTC. The clustered version of Microsoft DTC requires an MSCS Resource Group that contains both a Network Name Resource and a Shared Disk Resource. Before installing this release, ensure that at least one such MSCS Resource Group exists. Dtcsetup.exe assigns Microsoft DTC to the first MSCS Resource Group that it finds that contains both a Network Name Resource and Shared Disk Resource. After ensuring that the necessary Resource Group exists, run Dtcsetup.exe on the node controlling that Resource Group.


  6. When you are prompted to install Microsoft DTC on the other nodes in the cluster, run Dtcsetup.exe on those nodes.


  7. Reboot all systems.


  8. Restart all services that depend on Microsoft DTC.


Additional query words:


Keywords          : kbDTC kbMTS kbMTS200fix 
Version           : winnt:2.0
Platform          : winnt 
Issue type        : kbbug 

Last Reviewed: June 28, 1999