Once an agreement about how to handle the transaction has been reached, it must be executed to completion according to the plan— node failure and related problems cannot cause the transaction to abort. If a node fails, it can recover from a replica that had been executing the same plan in parallel, or alternatively, it can replay the history of planned activity for that node. Both parallel plan execution and replay of plan history require activity plans to be deterministic—otherwise replicas might diverge or history might be repeated incorrectly. To support this determinism guarantee whi le maximizing con- currency in transaction execution, Calvin uses a deterministic lock- ing protocol based on.