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.
