TS/MP Pathsend and Server Programming Manual (H06.05+, J06.03+)
call, described in these subsections, the TIMEOUT attribute does not include waiting for the server
link; the TIMEOUT attribute applies only to the I/O to the server.
Server timeout returns Pathsend error 904 (FEScServerLinkConnect) and file-system error 40
(FETimedOut).
If a server process is delayed in its request processing (for example: when it is stuck behind a lock,
is blocked by a higher priority process, or due to any performance pitfall), TS/MP may time out
the request using the timeout value from either the SET SERVER TIMEOUT configuration parameter
or the timeout argument of a SERVERCLASS_SEND_ call, SERVERCLASS_DIALOG_BEGIN_call, or
SERVERCLASS_DIALOG_SEND_call.
Despite being timed out, the server may continue to process the request or continue to be "stuck".
Read-only type processing is especially vulnerable to these conditions. When insert, update, or
delete operations are being performed within a TMF transaction and a timeout occurs, the TMF
transaction will be aborted. Subsequent I/O operations may then complete with file-system error
FEINVTRANSID, thereby terminating processing. Read-only processing cannot know that the server
request was canceled, unless the server is multithreaded and monitors $RECEIVE for incoming
messages and cancellations while processing its current request(s).
If MAXLINKS > 1, any requests queued on $RECEIVE will continue to queue there, possibly up to
the point of timing out themselves. Configuring MAXLINKS 1 for a serverclass minimizes these
additional effects.
Therefore, a single-threaded server is incapable of processing $RECEIVE “message cancellation”
system messages in a timely fashion.
Server-Class Send Timeout
Pathsend allows you to specify a timeout value on calls to SERVERCLASS_SEND_,
SERVERCLASS_DIALOG_BEGIN_, and SERVERCLASS_DIALOG_SEND_. You can specify a different
timeout value for each call. For example, if you perform SERVERCLASS_SEND_ calls to local and
remote systems, you can specify a shorter timeout value for the local sends and a longer value for
the remote send operations. Within a dialog, if flags.<14> was set to 0 in the call to
SERVERCLASS_DIALOG_BEGIN_ and a timeout occurs, both the dialog and the transaction (if
any) are automatically aborted.
If a waited SERVERCLASS_SEND_, SERVERCLASS_DIALOG_BEGIN_, or
SERVERCLASS_DIALOG_SEND_ request is not completed before the specified timeout value expires,
it is completed with return error 233 (FEScError), and a subsequent call to
SERVERCLASS_SEND_INFO_ returns Pathsend error 918 (FeScSendOperationAborted) and
file-system error 40 (FETimedOut). If there is an outstanding I/O operation to a server process
when a SERVERCLASS_SEND_, SERVERCLASS_DIALOG_BEGIN_, or
SERVERCLASS_DIALOG_SEND_ operation times out, that I/O operation is canceled and the
transaction, if any, is automatically aborted.
Nowait server-class send operations are completed with a call to AWAITIOX. The timeout
considerations for nowait operations are more complex, because a time-limit parameter can also
be set in the AWAITIOX call. The error returned by AWAITIOX depends on which time limit was
reached:
• If a timeout value is specified in a nowait call to SERVERCLASS_SEND_,
SERVERCLASS_DIALOG_BEGIN_, or SERVERCLASS_DIALOG_SEND_ and the request is not
completed within the specified time, the AWAITIOX call returns error 233, and a subsequent
call to SERVERCLASS_SEND_INFO_ returns Pathsend error 918 (FeScSendOperationAborted)
and file-system error 40 (FETimedOut).
• If a time-limit value is specified in the call to AWAITIOX and this time limit is reached, the
AWAITIOX call returns file-system error 40 (FETimedOut).
If you use a time-limit value on AWAITIOX to wait on I/O operations other than the Pathsend calls
SERVERCLASS_SEND_, SERVERCLASS_DIALOG_BEGIN_, and SERVERCLASS_DIALOG_SEND_
Usage Considerations for Pathsend Procedures 107










