A transaction server may be regarded as an extension or a variation of a file service that provides atomic operations on some or all of its files. The problem of synchronizing assess to shared objects while allowing a high degree of concurrency in our system is resolved by using a two-phase locking protocol. In distributed systems, one transaction may invoke more than one transaction server that reside at different sites. Therefore, it is necessary to coordinate the network-wide commitment of all cohorts participating in a transaction. Our system uses a two-phase commit protocol to commit the distributed transactions. To extend the two-phase commit protocol to deal with failures, a timeout protocol and a restart protocol is also proposed and implemented in our system.
The main motivation of this implementation is to design a highly portable distributed transaction processing system. Portability can allow users to install the system very easily and avoid reconstructing the underlying operating system.