Hi, All
I have a question about the Sync Operation:
//Asynchronous sync. Flushes channel between process and leader.
public void sync(final String path, VoidCallback cb, Object ctx)


I don't quite understand the purpose of  this function. When I looked into the 
code, I found out that(tell me if I'm wrong):


When Client send a Sync request to the server. The server will create a sync 
request to the leader(if it is not the leader). 


Then the leader looks his outstandingProposals list, if the list is empty, then 
send back the sync to the follower immediately, and the the follower send back 
the sync response to the client.


If the  outstandingProposals is not empty, store the sync request with the 
proposal id it is waiting for.


When the proposal which the sync request waiting for is ready to commit, send 
commit to servers in the quorum, and then send back the sync to follower as 
described above.


Is there some mechanism that can ensure that the commit message are processed 
before the sync response send back to the client?


If there is, then all make sense, if not, after the sync call, the client still 
can't make sure the next read request to the server can get the newest data.

Reply via email to