BUG: Misleading Error 0x8004d021 When Import Transaction Fails on BYOT (231886)



The information in this article applies to:

  • Microsoft COM+ 1.0
  • Microsoft COM+ 1.5
  • the operating system: Microsoft Windows 2000
  • the operating system: Microsoft Windows XP

This article was previously published under Q231886

SYMPTOMS

When you use Bring Your Own Transaction (BYOT), the import transaction may fail with XACT_E_TIP_PULL_FAILED. The following message may be logged in event viewer:
The BYOT Gateway failed to import the transaction using Transaction Internet Protocol (TIP). Make sure that the installed DTC supports the TIP protocol.

Server Application ID : {A20B779B-03F6-11D3-926A-00C04F8EF295}
Server Application Name : server_name
Error Code = 0x8004d021 :
COM+ Services Internals Information :
File: .\byotex.cpp, Line: 105

CAUSE

This error is misleading because import transaction can fail even if Microsoft Distributed Coordinator (MS DTC) supports Transaction Internet Protocol (TIP).

This error is returned when a PULLED command is sent to the Transaction Manager (TM), and the TM sends back a NOTPULLED token. Any TM that is TIP-compliant can send a NOTPULLED token. A TM can return this token if for any reason the Pull relationship is not established. For additional information, see the "More Information" section to follow.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

MS DTC returns a NOTPULLED token under the following circumstances:
  • The Transaction identifier (TrID) that is included in the PULL command is not valid. TIP specification does not define a format for TrID. Each TM defines its own TrID. For MS DTC, the valid TrID should comply with the following format:
    oletx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    						
    which is 43 characters long (including terminal NULL).
  • The application was badly designed. The transaction was committed before the complete transaction tree was set up.
  • The specified TrID is not in the list for the active transactions. As a result, the transaction is stopped or timed out.

Modification Type:MajorLast Reviewed:12/17/2003
Keywords:kbBug kbDTC kbpending KB231886