TS/MP Pathsend and Server Programming Manual (G06.24+, H06.03+)
Writing Pathway Servers
NonStop TS/MP Pathsend and Server Programming Manual–132500
4-6
Writing a Server to Use the TMF Subsystem
information about use of the Enscribe locking facilities, refer to the Enscribe
Programmer’s Guide.
Servers do not reply to request messages until all work for the request has been
completed. The contents of the reply message indicate the outcome of the request, which
is one of the following:
•
All the work for the request was completed successfully.
•
None of the work for the request was completed.
•
The work for the request was only partially completed.
In the first case, the requester can commit the transaction. In the second case, the
requester can commit the transaction and then retry it. In both of these cases, the
information in the server’s reply is sufficient to ensure the integrity of the transaction.
However, if the transaction work was only partially completed, as in the third case, the
server needs to ensure that the transaction is not committed so that the incomplete work
can be backed out. To ensure transaction backout, the server should call the
ABORTTRANSACTION procedure after reading the server’s request and before
sending its reply. A call to ABORTTRANSACTION by the server does not end the
transaction—only the requester can end it—but such a call imposes the requirement that
the requester also call ABORTTRANSACTION, rather than ENDTRANSACTION,
after the requester’s reply.
Writing a Server to Use the TMF Subsystem
If, for some reason, your application does not follow the structure described in
Recommended Structure for Applications, earlier in this section, you should consult the
checklist that follows.
Writing a Pathway server to use the TMF subsystem requires that you do the following:
1. Decide which files in the database should be audited.
2. Determine any modifications that are necessary to convert the application to follow
the TMF subsystem locking rules.
3. Decide how to group sequences of the application operations into TMF transactions
(that is, units of recovery).
4. Ensure that any fault-tolerant servers respond correctly to file-system error 75:
REQUESTING PROCESS HAS NO CURRENT-TRANSACTION IDENTIFIER.
A backup server that takes over in mid-transaction does not have a current-
transaction identifier to send to the disk process; therefore, the disk process returns
error 75 to the server, which passes the error to the requester. If the requester aborts
and retries the transaction, the new request has a current-transaction identifier. The
preferred solution is to change the servers so they are not fault-tolerant servers.
5. Determine whether any new transaction deadlock situations are introduced as a
result of TMF implicit record locking and modify the application to avoid the
deadlock. (Transaction deadlock is a situation in which two transactions cannot