Thanks Alex, that helped a lot.
On Thu, Dec 13, 2012 at 10:56 AM, Alexander Shraer <[EMAIL PROTECTED]>wrote:
> Hi Kishore,
> Here's more or less what happens.
> Basically, if an operation is uncommitted but reached a quorum, it is
> guaranteed to survive. If it reached less than a quorum it may survive
> but may get lost depending on whether the server that has it
> participates in a timely manner in leader election phases.
> First, FastLeaderElection tries to optimistically choose a leader
> candidate that has the most up to date log - a quorum must say that it
> does. This phase is an optimization to avoid having the leader fetch
> the latest state (this way the leader already has it).
> Then, servers connect to the candidate leader (LearnerHandler). If
> during this phase the leader discovers someone that is more up-to-date
> than itself, it gives up and we go back to the preliminary phase
> above. Otherwise, once it has a quorum of followers connected to it,
> it basically tries to commit its own log (NEWLEADER is like a propose
> and UPTODATE is like a commit of the log).
> The NEWLEADER message has a zxid which is higher than any zxid existed
> It is possible that a minority of the servers didn't participate in
> this process, but once NEWLEADER reaches a quorum, servers in this
> quorum will be "more up-to-date" than anyone that didn't participate.
> So any servers that were lagging behind do not stand a chance becoming
> leader unless they get updated from a server that did participate. Any
> uncommitted op known to these slow servers will be lost forever.
> Later, if such a server connects to the new leader, the uncommitted
> ops will be truncated from the log.
> Hope this helps.
> On Wed, Dec 12, 2012 at 10:31 PM, kishore g <[EMAIL PROTECTED]> wrote:
> > Hi,
> > I read the docs and presentations online
> > https://cwiki.apache.org/ZOOKEEPER/zookeeperpresentations.html about the
> > internals of zab. I am confused about what happens to uncommitted
> > when new leader is elected after current leader fails. To be precise,
> > are the scenarios i am thinking
> > a) new leader has got a proposal that no other follower has seen, will it
> > commit this proposal or let it go
> > b) new leader has got a proposal that majority of nodes have it, will it
> > commit this or let it go. What happens to other followers, will new
> > ask followers to commit or rollback based on what it does.
> > c)new leader does not have proposal but one of the followers has it, is
> > this possible?
> > From what i understood the new leader simply commits all proposals that
> > has seen irrespective of what other followers have seen.
> > Can some one explain what exactly happens, i am more interested in what
> > happens in the code
> > thanks,
> > Kishore G