You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@zookeeper.apache.org by de Souza Medeiros Andre <an...@aalto.fi> on 2012/02/23 14:21:20 UTC
Question on Zab's Synchronization phase design
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
RE: Question on Zab's Synchronization phase design
Posted by de Souza Medeiros Andre <an...@aalto.fi>.
Thank you Ben,
Apparently that technical report is a good resource regarding proofs and this atomic action.
-- Andre Medeiros
________________________________________
From: Benjamin Reed [breed@apache.org]
Sent: Thursday, February 23, 2012 18:03
To: user@zookeeper.apache.org
Subject: Re: Question on Zab's Synchronization phase design
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
<an...@aalto.fi> 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
Re: Question on Zab's Synchronization phase design
Posted by Benjamin Reed <br...@apache.org>.
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
<an...@aalto.fi> 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