FIX: XA Transaction Monitors May Show Inconsistent Outcome
ID: Q232343
|
The information in this article applies to:
-
Microsoft Transaction Server 2.0
SYMPTOMS
Other database's XA monitor (eg. Oracle XA monitor, DB2 XA monitor) may show indoubt transactions that were never resolved by Distributed Transaction Coordinator (DTC) XA Transaction Manager (XATM)
CAUSE
DTC's XATM recovery code issues xa_recover() call to the Resource Manager (RM), which returns XAER_RMERR. DTC incorrectly treats recovery as successful and deletes the information about the RM. This can cause DTC to forget about transactions that are still indoubt in the Resource Manager.
This problem only occurs with 1-pipe RMs. DTC has two models for supporting XA transactions:
- 1-pipe model: where the prepare and commit are sent on the application pipe/connection to the RM
- 2-pipe model: where DTC opens a separate connection to the RM and sends prepare/commit on this second pipe.
NOTE: Oracle and DB2 Resource Manager uses the 1-pipe model.
RESOLUTION
This hotfix(ID: 051099e) fixes the DTC's XA transaction manager, to not ignore the return code from xa_recover() in 1-pipe model.
STATUS
Who Should Install This Release
You should install hotfix 051099e if you are noticing the above mentioned behavior.
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
- Create an empty temporary directory on your system.
- Run the self-extracting executable file (i051099e.exe (i386) or a051099e.exe (alpha)) 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
Qfe051099e.txt
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)).
- Close the Windows NT Control Panel, if it is open.
- Run Dtcsetup.exe.
- Restart the system.
- Restart all services that depend on Microsoft DTC.
How to Install on a Cluster with an Already Clustered Microsoft DTC
- Create an empty temporary directory on both nodes of the cluster.
- Run the self-extracting executable file (i051099e.exe (i386) or a051099e.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
Qfe051099e.txt
- 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).
- Close the Windows NT Control Panel on all systems in the cluster.
- 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.
- Restart all systems.
- Restart all services that depend on Microsoft DTC.
How to Install on a Cluster with a Non-clustered Microsoft DTC
- Create an empty temporary directory on both nodes of the cluster.
- Run the self-extracting executable file (i051099e.exe (i386) or a051099e.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
Qfe051099e.txt
- 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).
- Close the Windows NT Control Panel on all systems in the cluster.
- 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 will assign 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.
- When you are prompted to install Microsoft DTC on the other nodes in the cluster, run Dtcsetup.exe on those nodes.
- Reboot all systems.
- 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 22, 1999