Figure 1(A) shows the state transition diagram for individual components of a client replica for a pessimistic replication model that supports modifying full-fidelity component versions and overwriting partial-fidelity component versions. In our state diagrams, we represent new partial-fidelity states by gray ovals and the new transitions in and out of these states by dotted arrows. In contrast, we represent the states present in traditional replication models by clear ovals and their transitions by full arrows. The state diagram for the primary replica (not shown) stays the same as without support for adaptation-aware editing. This diagram contains two states, Empty and Clean, with the obvious meanings.
In the client replica state transition diagram, a component can be in one of four states: Empty, Partial-Clean, Clean, and Dirty. A component is in Empty when it is being edited by some other client replica or when the client chooses not to read it. A component transitions into Partial-Clean when the client replica reads a partial-fidelity version. This version can be further refined by reading higher-fidelity partial-fidelity versions (i.e., Read-Partial) or the component can transition into Clean by reading a full-fidelity version. The component transitions into Dirty when the client replica either modifies a full-fidelity version (i.e., component in Clean state) or overwrites an unloaded component or a partial-fidelity version (i.e., component in Empty or Partial-Clean). The component transitions back to Clean when the client replica propagates a full-fidelity version to the primary replica. Finally, a component transitions back to Empty when the client replica no longer wishes to read the component. Transitions to Empty depend on the specific mechanisms used to guarantee mutual exclusion, and can occur, for example, when the client replica releases a lock or receives an invalidation.