TS/MP Pathsend and Server Programming Manual (G06.24+, H06.03+)
Writing Pathway Servers
NonStop TS/MP Pathsend and Server Programming Manual–132500
4-10
Servers as Process Pairs
Servers as Process Pairs
When you are using the TMF subsystem, you should not write your server processes as
fault-tolerant process pairs. The additional programming and functional overhead
required to do so is unnecessary. If your servers are already coded as process pairs,
however, it is not usually necessary to change them back to ordinary servers. For such
servers, note that if the primary server process fails, the backup process (on takeover)
does not have a current-transaction identifier. This means that the server process receives
error 75: NO CURRENT-TRANSACTION IDENTIFIER on the first I/O request to an
audited file. You should insert code into such a server either to recognize this error and
report it as a failure to the requester, or to terminate when it receives this error.
Because the COBOL85 run-time library recognizes the PARAM named NONSTOP, you
can prevent a COBOL85 server from running as a process pair by having a PARAM
NONSTOP OFF in effect when the server is started. For Pathway servers, you can
accomplish this task by including PARAM NONSTOP OFF with the parameters in the
definition of the server class during PATHMON configuration. When PARAM
NONSTOP OFF is in effect when the server is started, the COBOL85 run-time library
ignores the STARTBACKUP and CHECKPOINT verbs and stores the successful
completion code in the PROGRAM-STATUS special register.
There is no comparable mechanism to indicate that a server process coded in TAL,
pTAL, or FORTRAN should not run as a process pair. If you have server processes in
these languages that are coded as process pairs, you can either implement a custom
PARAM or recode your server.
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.