CONTENTS Title Page Copyright Page Preface 1 RTR Concepts 1.1 The Purpose of RTR 1.2 Requester and Server processes 1.3 The Three Layer Model 1.4 The Partitioned Data Model 1.5 Transaction Integrity 1.6 Broadcasts 1.7 Reliability features 1.7.1 Standby servers 1.7.2 Shadow servers 1.7.3 Router failover 1.7.4 Cooperative Transaction Recovery 1.7.5 Backend restart recovery 1.7.6 Transaction message replay 1.7.7 Link failure recovery 1.8 Concurrent Servers 1.8.1 Server Types 1.9 Flexibility and Growth 1.10 Failure scenarios 1.10.1 Loss of a backend CPU 1.10.2 Loss of a Router 1.10.3 Loss of a Communications Link 1.10.4 Loss of a Frontend 1.11 RTR Facilities 1.12 Call-out servers 1.13 RTR Application Programming Interface 2 RTR Applications 2.1 Requester Processes 2.1.1 Structure of a simple requester 2.1.2 Receiving messages from the server 2.1.3 An example of a simple requester 2.2 Server processes 2.2.1 Structure of a simple server 2.2.2 Server design rules 2.2.3 An example of a simple server 3 The System Services Interface 3.1 Synchronization 3.2 Return status 3.3 Committing Transactions and Voting 3.4 Aborted transactions 3.5 Partitioned Data Model 3.6 RTR Facilities 3.7 Call formats $ABORT_TX $ABORT_TXW $COMMIT_TX $COMMIT_TXW $DCL_TX_PRC $DCL_TX_PRCW $DEQ_TX $DEQ_TXW $ENQ_TX $ENQ_TXW $GET_TXI $GET_TXIW $START_TX $VOTE_TX $VOTE_TXW 3.8 System Service Return Codes EXAMPLES 2-1 Simple PASCAL requester 2-2 Simple PASCAL server FIGURES 1-1 Requesters and servers 1-2 The three layer model 1-3 Partitioned data-model 1-4 Standby servers 1-5 Shadow servers TABLES 3-1 Abort codes returned in RTR$L_TXSB_RSNSTS 3-2 RTR$_DCL_FLAGS 3-3 RTR$_TXSB 3-4 RTR$_ACCESS 3-5 RTR$_DATPAR_ELEM 3-6 Routing Key Data-types 3-7 RTR$_EVT 3-8 RTR$_EVTMSK 3-9 Event Numbers 3-10 RTR$_ENQ_FLAGS 3-11 RTR$_VOTE_FLAGS