BinyuHuang-nju edited a comment on pull request #1690:
URL: https://github.com/apache/zookeeper/pull/1690#issuecomment-850846721


   @Vanlightly @hanm Hi! I have read some code about zab. But I still cannot 
understand some details. I want to ask you about them.
   
   1. At line 630 in function 'syncWithLeader' In 
[Learner.java](https://github.com/apache/zookeeper/blob/master/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Learner.java),
 I see follower in phase SYNCHRONIZATION may receive PROPOSAL and COMMIT. But 
in paper, leader will add a new server into its 'forwardingFollowers'(Q in 
paper) only when receiving ack of NEWLEADER from it, so in paper this new 
server should not receive PROPOSAL or COMMIT because in phase SYNCHRONIZATION 
it has not sent ACK-NEWLEADER.
   So here, my question is in ZAB 1.0, when does leader add a newly joined 
server into its 'forwardingFollowers'?(I am sorry that I didn't find this in 
code)
   
   2. My understanding of question above is: in phase 2, leader syncs with each 
follower and ''sends'' NEWLEADER only to this corresponding follower that has 
completed sync, not ''broadcasts'' NEWLEADER. So when leader is in phase 3, 
there may exist some follower in phase 2, and has not completed sync with 
leader since it hasn't received NEWLEADER, but it is allowed to receive 
PROPOSAL and COMMIT.
   I am not sure whether my understanding is right. 
   
   3. At line 766 in function 'syncWithLeader' in 
[Learner.java](https://github.com/apache/zookeeper/blob/master/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Learner.java),
 I see when receiving NEWLEADER, the variable 'packetsNotCommitted' is set as 
empty, and when receiving UPTODATE, there is no action handling transactions 
left to commit them.
   Does that mean follower thinks all transactions committed upon receiving 
NEWLEADER not UPTODATE?(Actually in papaer and my spec of zab pre-1.0, follower 
thinks them committed upon receiving UPTODATE)
   
   4. In phase 1 in manual tha we mentioned above, there's one word: "Note, if 
a follower is connecting, but the leader is already established (in phase 3) 
the follower follows the phases, but the leader ignores any ACKs." 
   It seems like that leader in phase 3(BROADCAST) will ignre ACKEPOCH in 
phase1 and ACK of NEWLEADER in phase 2, then how dose this newly connecting 
follower receive UPTODATE to go to phase BROADCAST?
   
   Since these details are related to how to let follower sync with leader in 
my spec of ZAB 1.0, I want to have a further understanding of them. Thank you!
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to