Hi Shay, Thanks for your reply. It seems the PDF version has a typo on that part. Thank you for your clarifications.
Eric On Sun, Oct 27, 2019 at 4:40 PM shay shimony <[email protected]> wrote: > > Hi Eric, > > I checked the Leader Elections section in the ZooKeeper book of Junqueira and > Reed, and found that you have a mistake in the rules that you quoted - the > '>' sign should be '<': > > 1. If (voteZxid < myZxid) or (voteZxid = myZxid and voteId < mySid), > keep the current vote. > 2. Otherwise, change my vote by assigning myZxid to voteZxid and mySid to > vote zxid. > > When z3 compares votes from z1(1, 6) and its current vote (3, 5), it changes > its vote to (1, 6). > Next, z3 compares (2, 5) and its current vote (1, 6), and keeps its current > vote (1, 6). > > After these 2 iterations z3 will send again its vote to z1 and z2 - this time > (1, 6). > Next, z3 and z1 form a quorum of 2, with z1 as leader and z3 as its follower. > > Hopefully z2 will be on the same page, similarly will join the quorum, and > set itself as follower of z1 as well (normally it will). > > Hope it helps, > Shay > > On Sun, Oct 27, 2019 at 8:11 AM Lee Eric <[email protected]> wrote: >> >> Hi, >> >> I have a dumb question about the way how zookeeper does leader election. >> >> There is a quorum zk1(1,6), zk2(2,5) and zk3(3,5). The number in >> parentheses is sid and latest zxid. So my question is, when each >> server sends out the vote to other 2, say, zk1 and zk2 send the votes >> to zk3. So zk3 has 2 votes (1,6) and (2,5). Now, based on the rules: >> >> 1. If (voteZxid > myZxid) or (voteZxid = myZxid and voteId > mySid), >> keep the current vote. >> 2. Otherwise, change my vote by assigning myZxid to voteZxid and mySid to >> vote >> Zxid. >> >> So what zk3 vote would be? I'm confused because to compare zk1 and >> zk3, the vote on zk3 is (1,6); but to compare zk2 and zk3, zk3 should >> keep its vote. >> >> So in this case, how the vote should be settled? >> >> Thanks. >> >> Eric
