[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-3481?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andor Molnar reassigned ZOOKEEPER-3481:
---------------------------------------

    Assignee:     (was: Andor Molnar)

> The problem of AcceptedEpoch
> ----------------------------
>
>                 Key: ZOOKEEPER-3481
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3481
>             Project: ZooKeeper
>          Issue Type: Improvement
>          Components: quorum
>    Affects Versions: 3.5.5
>            Reporter: tom.long
>            Priority: Major
>             Fix For: 3.5.6
>
>
> If the leader has been elected when the voting participant joins the cluster, 
> then it can only act as followers. When getepochtoveto is called, it does not 
> participate in the voting. However, if the AcceptedEpoch is larger than the 
> leader, it will never work properly.The status is as follows:LOOKING -> 
> FOLLOWING -> exception -> LOOKING.
> code as follows(Learner.registerWithLeader(int pktType)):
> {code:java}
> if (newEpoch > self.getAcceptedEpoch()){
>    wrappedEpochBytes.putInt((int)self.getCurrentEpoch());
>    self.setAcceptedEpoch(newEpoch); 
> }else if (newEpoch == self.getAcceptedEpoch()){
>    // since we have already acked an epoch equal to the leaders, we cannot 
> ack 
>    // again, but we still need to send our lastZxid to the leader so that we 
> can 
>    // sync with it if it does assume leadership of the epoch. 
>    // the -1 indicates that this reply should not count as an ack for the new 
> epoch 
>    wrappedEpochBytes.putInt(-1); 
> }else{ 
>    throw new IOException("Leaders epoch, " + newEpoch + " is less than 
> accepted epoch, " + self.getAcceptedEpoch()); 
> }
> {code}
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to