A computer-implemented method for committing transactions on remote servers, performed on a server having at least one processor and memory storing at least one program for execution by the at least one processor to perform the method, comprising: issuing commit requests to remote servers in a set of remote servers to request that the remote servers in the set of remote servers agree to commit a transaction at a first designated future time; wherein when responses from the remote servers in the set of remote servers are received before a first abort time and indicate that all remote servers in the set of remote servers have agreed to commit the transaction at the first designated future time, issuing commit commands to the remote servers in the set of remote servers to instruct the remote servers to perform the transaction at the first designated future time; wherein when the responses from the remote servers in the set of remote servers are received before the first abort time and indicate that a remote server in the set of remote servers does not agree to committing the transaction at the first designated future time, identifying a second designated future time included in a response from the remote server, wherein the second designated future time is a time later than the first designated future time and repeating the foregoing operations using the second designated future time in place of the first designated future time, wherein when the responses from the remote servers in the set of remote servers are not received before the first abort time, issuing an abort command to the remote servers in the set of remote servers to instruct the remote servers to abort the transaction, selecting a third designated future time at which the transaction is to be committed by the remote servers in the set of remote servers, wherein the third designated future time is a time later than the first designated future time, and repeating the foregoing operations using the third designated future time in place of the first designated future time. issuing commit requests to remote servers in a set of remote servers to request that the remote servers in the set of remote servers agree to commit a transaction at a first designated future time; wherein when responses from the remote servers in the set of remote servers are received before a first abort time and indicate that all remote servers in the set of remote servers have agreed to commit the transaction at the first designated future time, issuing commit commands to the remote servers in the set of remote servers to instruct the remote servers to perform the transaction at the first designated future time; wherein when the responses from the remote servers in the set of remote servers are received before the first abort time and indicate that a remote server in the set of remote servers does not agree to committing the transaction at the first designated future time, identifying a second designated future time included in a response from the remote server, wherein the second designated future time is a time later than the first designated future time and repeating the foregoing operations using the second designated future time in place of the first designated future time, wherein when the responses from the remote servers in the set of remote servers are not received before the first abort time, issuing an abort command to the remote servers in the set of remote servers to instruct the remote servers to abort the transaction, selecting a third designated future time at which the transaction is to be committed by the remote servers in the set of remote servers, wherein the third designated future time is a time later than the first designated future time, and repeating the foregoing operations using the third designated future time in place of the first designated future time.