Microsoft KB Archive/823183

= BUG: Long running COMTI transactions are unsuccessful and you receive an event 102 (2150) error message =

Article ID: 823183

Article Last Modified on 1/4/2007

-

APPLIES TO


 * Microsoft Host Integration Server 2000 Standard Edition
 * Microsoft Host Integration Server 2000 Service Pack 1
 * Microsoft SNA Server 4.0
 * Microsoft SNA Server 4.0 Service Pack 1
 * Microsoft SNA Server 4.0 Service Pack 2
 * Microsoft SNA Server 4.0 Service Pack 3
 * Microsoft SNA Server 4.0 Service Pack 4

-



SYMPTOMS
COM Transaction Integer (COMTI) transactions that take longer than four minutes to complete may not succeed, and you may receive the following event message: Event ID: 102 Source: COMTI Description: (102) COM Transaction Integrator reported the following exception to the client:

Component:

Method:

Exception description: (2150) The TCP transport received a socket error while attempting to receive user data.

Error description: Connection reset by peer, expected length: 0.

IP Address:, port:  , transid:.



CAUSE
TCP/IP socket connections in a FIN_WAIT_2 state are closed by the TCP/IP stack when the TcpTimedWaitDelay timer expires.



RESOLUTION
To resolve this problem, apply the update that is described in the following Microsoft Knowledge Base article:

813056 The TCP/IP stack does not permit a connection to remain in a FINWAIT-2 status for longer than 300 seconds

When you apply the update, configure the TcpFinWait2Delay registry entry with a value that is greater than the largest COMTI TCP/IP remote environment (RE) timeout value that COMTI uses.



STATUS
Microsoft has confirmed that this is a problem in the products that are listed in Knowledge Base article 813056 (that are mentioned in the &quot;Resolution&quot; section).



MORE INFORMATION
When COMTI has completed sending data, COMTI calls the shutdown(, SD_SEND) function to indicate that COMTI will not send any more data over this socket. The shutdown function causes the TCP/IP stack to send a FIN request to the remote system. At this point, the TCP/IP socket goes into a FIN_WAIT_1 state. When the remote system acknowledges the receipt of the FIN request by sending an acknowledgement (ACK), the TCP/IP socket goes into a FIN_WAIT_2 state.

The TCP/IP stack in Windows was designed to time out sockets according to the TcpTimedWaitDelay timer (just like the stack does for sockets in the TIME_WAIT state). If the COMTI transaction takes longer than the seconds that are in the TcpTimedWaitDelay timer (the default value is 240 seconds), the transaction does not complete because the TCP/IP stack closes the socket connection before the remote application can return the data that COMTI requested.

An update to the TCP/IP stack is available. The update adds a separate timer for socket connections in a FIN_WAIT_2 state.

Note This also applies to any Windows Sockets application that uses shutdown to initiate a graceful shutdown of a socket connection.

