TS/MP 2.5 Pathsend and Server Programming Manual

Transaction Deadlocks
An application that uses the TMF subsystem might hold more record locks and hold them longer
than it would without the TMF subsystem because:
Implicit locks are held on the keys of deleted records.
Implicit locks are held for inserted records.
Locks are held until the transaction is either committed or aborted and backed out.
The increased locking could cause new possibilities for transaction deadlock. If transaction deadlock
might become a problem, consider implementing the methods for coping with deadlock discussed
in the Guardian Programmer’s Guide.
Considerations for Debugging Pathway Servers
When you are running a Pathway server in debug mode (that is, with the server-class configured
with DEBUG ON) or when the server falls into debug mode because of an error, some situations
might cause errors to be returned to the requestor communicating with that server, and in some
cases also might cause errors to be returned to other requestors. Those situations are described in
these subsections.
ACS Subsystem Process Timeouts
The ACS subsystem processes and the TCP have a built-in ten-minute timeout for process opens
and I/O operations such as get-link requests. During normal operation, such operations are
generally completed in less than ten minutes unless there is a problem. However, if the server
process is in debug mode, the server can be stopped (for example, at a breakpoint) for longer
than ten minutes. In certain cases, this can cause a process open or I/O operation from an ACS
subsystem ROUT and PB process or TCP to time out. The effects of the timeout depends on the type
of the operation time out.
If an I/O operation to the PATHMON process times out, the ACS subsystem PB process or the TCP
behaves as if there was a problem with the PATHMON process: that is, it shuts down communication
with the PATHMON process, relinquishing all links granted by that PATHMON process.
In this situation, if the requestor that sent the request that timed out was a Pathsend requestor, this
request (as well as all other server-class send requests queued under that PATHMON process) fails
with Pathsend error 902, FEScPathmonConnect, with file-system error 40 (timeout error). Subsequent
send requests to server-classes under that PATHMON process fail with Pathsend error 915,
FEScPathmonShutDown.
If the timed-out request came from a SCREEN COBOL requestor, this request (as well as all other
server-class send requests queued under that PATHMON process) fails with a SEND error having
a TERMINATION-STATUS value of 18 (PATHMON I/O error) and a TERMINATION-SUBSTATUS
value of 40. Subsequent send requests to server-classes under that PATHMON process fails with
a SEND error having a TERMINATIONSTATUS value of 18 (PATHMON I/O error) and a
TERMINATION-SUBSTATUS value of 40.
If a timeout occurs on the server process open, the ACS subsystem ROUT process or the TCP returns
the link to the PATHMON process. If other links to the server-class exist, no send requests fail as
a result of the open failure. If no other links exist, the send request (as well as all other server-class
send requests queued for that ACS subsystem ROUT process or TCP) fails. A Pathsend requestor
receives Pathsend error 904, FEScServerLinkConnect, with file-system error 40 (timeout error). A
SCREEN COBOL requestor receives a SEND error with a TERMINATION-STATUS value of 12 (I/O
error) and a TERMINATIONSUBSTATUS value of 40 (timeout error).
Note also that if the server-class is configured so that it can be opened more than once (that is,
with MAXLINKS greater than 1), the ACS subsystem ROUT process or TCP can attempt to open a
server process in that server-class at any time. This open attempt can time out if the server process
is being debugged.
68 Writing Pathway Servers