Consider the following scenario. A transaction is initiated from a PC to make reservations for a vacation. The initiator communicates directly with a travel agency and a rental car company. The travel agency communicates with a travel wholesaler, which books two of the necessary flights (or flight legs) on the servers of the corresponding airlines, and also with two other airlines to book the rest of the necessary flights. All these steps belong to one distributed transaction, and all involved participants are able and willing to commit the transaction. The communication structure of this transaction is illustrated in Figure 19.12.
(a) Give the message flow and log entries for the hierarchical 2PC protocol for this scenario. Indicate which log entries need to be immediately forced to the stable log.
(b) Which of the various optimizations that we discussed in this chapter are applicable and promising for the given scenario? What are the implications for the protocol’s message and logging costs?
(c) How does the protocol and its execution cost change if the coordinator role is transferred to the server of the travel agency (at the time the initiator issues its commit request)?
(d) Give the message flow and log entries for the case that the server of airline 3 is unable to commit and votes no in the hierarchical 2PC protocol.
(e) Apply the presumed-abort protocol to the case where the server of airline 3 votes no. Give the resulting message flow and log entries.