|
|
-
Re: Question on Zab's Synchronization phase designBenjamin Reed 2012-02-23, 16:03
the formal proof of zab is at
http://research.yahoo.com/files/YL-2010-007.pdf and it does reference this atomic action a lot. (it is invariant 24.) note, the protocol is restated in terms used in the code in: https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zab1.0 as far as the implementation goes, we write the history and the epoch to disk in the same step, but we do require the function to be atomic to preserve the atomicity. the function is Follower.syncWithLeader when the NEWLEADER message is processed. we would need to use some simple logging if we wanted to remove the atomicity assumption of syncWithLeader. ben On Thu, Feb 23, 2012 at 5:21 AM, de Souza Medeiros Andre <[EMAIL PROTECTED]> wrote: > Hi all, > > I hope this list is appropriate to place my question regarding one of the most recent papers on ZooKeeper's Zab protocol: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5958223&tag=1 > > When Phase II (Synchronization) of the protocol is described, in step f.2.1 there are two actions performed "atomically": setting f.a to e' and accepting every transaction in the initial history given by the leader. My question is: what precisely does "atomically" mean? Does it mean that either none or both are executed? Then, do the core properties depend on the atomic execution of those actions? I've read the proofs in that paper and apparently the atomic execution of those actions is not mentioned. How does this relate to Zab protocol in the code? I haven't yet found a synchronization code that sets f.a (currentEpoch in the code) "atomically" together with the history (through TRUNC, DIFF, or SNAP messages). > > Thanks for the attention, > Andre Medeiros |