title: How the chances of getting "read-your-writes" consistency are increased in Dynamo?
body: <p>In Section 5 of <a href="http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf" rel="nofollow">Dynamo paper</a>, there is the following content:</p>
  
  <blockquote>
    <p>In particular, since each write usually follows a read operation, the 
    coordinator for a write is chosen to be the node that replied fastest to the 
    previous read operation which is stored in the context information of the 
    request. This optimization enables us to pick the node that has the data that 
    was read by the preceding read operation thereby increasing the chances of 
    getting "read-your-writes" consistency.</p>
  </blockquote>
  
  <p>How the chances of getting "read-your-writes" consistency are increased?</p>
  
  <p>"read-your-writes" means that a read following a write gets the value set by the 
  write. The read and the write are performed by two different clients for this 
  context. The reason is that the choice of the write coordinator does not impact 
  on the chances of getting "read-your-writes" by the same client.</p>
  
  <p>But the above text is talking about a write following a read. Here is my guess. 
  The read coordinator will try to do syntactic reconciliation if it is possible. 
  If syntactic reconciliation is impossible because of divergent versions, the 
  client need to do semantic reconciliation before doing a write. Either way, the 
  versions on all the nodes involved in the read operation is an ancestor of the 
  reconciled version. So the following write can be sent to any of them to get 
  applied. The earliest time for a write to be seen by a read is after the 
  following steps are finished:</p>
  
  <ul>
  <li>Client contact the write coordinator.</li>
  <li>The write coordinator generates the version clock for the new version.</li>
  <li>The write coordinator writes the new version locally.</li>
  </ul>
  
  <p>The shorter the time to perform the above steps, the more likely another 
  following read sees the new version. Since it is very possible that the node 
  which replied fastest to the previous read can perform the following steps in a 
  shorter time. Such a node is chosen as the write coordinator. </p>