TS/MP Pathsend and Server Programming Manual (H06.05+, J06.03+)

The LINKMON process’s open of the server process is shared among all the Pathsend requester
processes running in the same processor as that of the LINKMON process or the ACS subsystem
processes. Therefore, a close does not necessarily occur when the communication with a particular
requester process is finished.
Server Stop Protocol
A Pathway server must stop itself when the LINKMON process, the ACS subsystem processes, or
the TCP closes it on behalf of the last requester that has a link to it. Otherwise, the PATHMON
process considers the server process to be in the PENDING state.
Handling of Messages from $RECEIVE
COBOL85 servers always perform all the I/O for the request message most recently read from
$RECEIVE and always reply to that message before reading another message. For simplicity, this
is the protocol servers should follow in most cases.
If you do need to write a multithreaded server or a context-sensitive server that performs queuing
of messages from $RECEIVE, you must write this portion of your server program in a language
other than COBOL85.
Pathsend Requester Failures
A Pathsend requester process can fail for reasons that include these: the requester process calls
ABEND, a processor fails, or someone stops the process.
When a Pathsend requester process fails with outstanding I/O operations, the effect is similar to
that of a failure of any Guardian process with outstanding I/O; that is, all outstanding I/O
operations are canceled, including those for outstanding server-class send operations. As a result,
the target server process might get cancellation messages related to the outstanding calls to
SERVERCLASS_SEND_, SERVERCLASS_DIALOG_BEGIN_, or SERVERCLASS_DIALOG_SEND_.
However, the target server process does not get a close message, as it would have from a Guardian
file-system open. Except in the case of a processor failure, the links that the LINKMON process or
the ACS subsystem processes established with server processes on behalf of the Pathsend requester
are maintained, because these links are shared. Therefore, servers must monitor cancel messages,
rather than close messages, to determine when a pending reply is no longer needed.
When a requester fails, all transactions initiated by that requester but not yet completed at the time
of the failure are automatically aborted.
LINKMON Process Failures
If a halt occurs in the processor where a LINKMON process or the ACS subsystem processes are
running, all the Pathsend requesters in that processor fail. (See the previous subsection for details
about requester failures.) The links that the LINKMON process or the ACS subsystem processes
established with the server processes are relinquished.
ACS Subsystem Failures
If the ACS core processes fail or are stopped on a processor, the links that the ROUT process
established with the server processes are relinquished.
Linkage Space Considerations
If the server allocates too little space for $RECEIVE messages, system performance can be adversely
affected, and the requester can get errors at peak workload times. To avoid this problem, the
number of links specified by the server (for example, in the COBOL85 RECEIVE-TABLE OCCURS
clause) should be greater than the value specified in the SET SERVER MAXLINKS parameter in
PATHCOM. The server’s specified number of links should be large enough for all openers, including
Basic Pathway Server Programming 63