[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-1282?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13143692#comment-13143692
 ] 

Benjamin Reed commented on ZOOKEEPER-1282:
------------------------------------------

there is a test and a fix for this in ZOOKEEPER-1264
                
> Learner.java not following Zab 1.0 protocol - setCurrentEpoch should be done 
> upon receipt of NEWLEADER (before acking it) and not upon receipt of UPTODATE
> ----------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-1282
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1282
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.4.0
>            Reporter: Alexander Shraer
>
> according to https://cwiki.apache.org/confluence/display/ZOOKEEPER/Zab1.0
> phase 2 part 2, "Once it receives NEWLEADER(e) it atomically applies
> the new state and sets f.currentEpoch =e. "
> In Learner.java self.setCurrentEpoch(newEpoch) is done after receiving
> UPTODATE and not before acking the NEWLEADER message as should be.
>                 case Leader.UPTODATE:
>                     if (!snapshotTaken) {
>                         zk.takeSnapshot();
>                     }
>                     self.cnxnFactory.setZooKeeperServer(zk);
>                     break outerLoop;
>                 case Leader.NEWLEADER: // it will be NEWLEADER in v1.0
>                     zk.takeSnapshot();
>                     snapshotTaken = true;
>                     writePacket(new QuorumPacket(Leader.ACK,
> newLeaderZxid, null, null), true);
>                     break;
>                 }
>             }
>         }
>         long newEpoch = ZxidUtils.getEpochFromZxid(newLeaderZxid);
>         self.setCurrentEpoch(newEpoch);

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to