Chapter 15. IMS Connect client diagnostics 303
15.3.1 Duplicate clientID (reason code 56)
This error occurs when you send IMS Connect an interaction on a given port using a clientID
that is already in use on that port. There can be several reasons that this can occur:
You are executing two concurrent interactions using the same clientID. This can happen
when you are running more than one instance of an application in the same or different
machines, or in cloned environments, especially if you are using dedicated persistent
sockets, which require user-specified clientIDs, with IMS Connector for Java.
You must ensure that the same clientID is not associated with more than one connection
to a given IMS Connect port. In particular, it is not possible to both send transactions and
recover asynchronous output messages (RESUME TPIPE) on different connections to the
same IMS Connect port using the same clientID at the same time. For example, if you are
executing a receive asynchronous output interaction (RESUME TPIPE) using clientID
12345abc on a socket connected to PORT 5678 of IMS Connect ICON01, you are not able
to submit transaction requests using the clientID 12345abc on another socket connected
to PORT 5678 of IMS Connect ICON01.
Note that it is possible to use the same clientID on two different sockets connected to the
same IMS Connect, provided that the sockets are connected to different ports on that IMS
Connect.
You are executing an interaction with a clientID that is the same as that used by another
interaction that ended as a result of a socket timeout. If this new interaction is received by
IMS Connect while IMS Connect is still waiting for a response from IMS for the original
interaction that received the socket timeout, a duplicate clientID error might occur.
This can happen if you set the socket timeout to a value that is less than the timeout set by
the IRM_TIMER (or ExecutionTimeout in the case of IMS Connector for Java) or the IMS
Connect default timeout set in the HWSCFGxx member if that is the timeout being used
for the original interaction. IMS Connect is not aware that the original socket has been
disconnected as a result of the socket timeout until it does a subsequent read on that
socket, so it would consider the original socket still active, even though that socket has
already been disconnected from the client end. Figure 15-2 on page 304 shows the
sequence of events that lead to this problem. After you get to this situation, you will receive
DUPECLNT errors until:
– The IRM_TIMER expires on the IMS Connect side.
– You issue a STOPCLNT command to kill the client on the IMS Connect side. A
DELETE PORT command also kills the client, but we do not recommend this, because
it disables that port for all clients.
Example 15-7 shows the message IMS Connect writes in the system log when a
DUPECLNT occurs.
Example 15-7 IMS Connect JES2 DUPECLNT error message
HWSS0742W MESSAGE FAILED, ORIGIN=7003 _CLIENT01 TO DESTID=IMSG ; R=8, S=DUPECLNT,
M=SRE4