An arbitration process ensures changes made by more than one node to the
same data are propagated to each node holding the shared entity and
applied in the same order on each node. An arbitration cycle for a
particular entity is begun on a node ("instigator") when the node
broadcasts a proposal message or when the node ("observer") receives such
a proposal message. Multiple nodes can be instigators during a single
arbitration cycle. Each node that receives a proposal message sends a
response message to the corresponding instigator. After each instigator
node receives all the proposals in the arbitration cycle, it determines
whether it is the winner of the arbitration cycle and broadcasts a
closure message if it is. Each node determines an order in which to apply
the changes when it has received all the proposals. Arbitration cycles
associated with different items can be running concurrently.