Patent ID: 8001546

Claim:
A system for transaction processing, comprising: a plurality of servers that include resources, wherein the resources can be used in a transaction, said plurality of servers further comprising a first server that determines an initial state of the transaction, including an initial set of resources that are to take part in the transaction, and a chain of servers on which the initial set of resources exist; subsequently receives a request from a client to commit the transaction; performs a preprepare phase of the transaction, which includes calling resources that are registered locally, determining if any additional resources are required, and, if the additional resources are at additional servers which are not in the chain of servers, then adding the additional servers to the chain, updating the state of the transaction to reflect the additional servers in the chain and the additional resources thereon, when the preprepare phase is complete at the first server, communicates a preprepare request from the first server to a second server in the chain of servers, and wherein the second server receives the preprepare request and then also performs the preprepare phase, including adding additional servers to the chain of servers and additional resources as required, communicating preprepare requests from the second server to any subsequent server in the chain, and wherein when each server in the chain of servers completes its preprepare phase, that server communicates a preprepare request to a next server in the chain of servers until a last server in the chain of servers has received the preprepare request and completed the preprepare phase; and wherein the first server receives a preprepare reply from the last server in the chain of servers, prepares the resources identified in the transaction state as updated, and then commits each of the resources.