[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13141538#comment-13141538 ]
Camille Fournier commented on ZOOKEEPER-1192: --------------------------------------------- Can this issue be closed? > Leader.waitForEpochAck() checks waitingForNewEpoch instead of checking > electionFinished > --------------------------------------------------------------------------------------- > > Key: ZOOKEEPER-1192 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1192 > Project: ZooKeeper > Issue Type: Bug > Components: server > Reporter: Alexander Shraer > Assignee: Alexander Shraer > Priority: Critical > Fix For: 3.5.0 > > Attachments: ZOOKEEPER-1192.patch, zookeeper-1192-ver1.patch, > zookeeper-1192.patch > > > A follower/leader should block in Leader.waitForEpochAck() until either > electingFollowers contains a quorum and electionFinished=true or until a > timeout occurs. A timeout means that a quorum of followers didn't ack the > epoch on time, which is an error. > But the check in Leader.waitForEpochAck() is "if (waitingForNewEpoch) > throw..." and this will never be triggered, even if the wait statement just > timed out, because Leader.getEpochToPropose() completes and sets > waitingForNewEpoch to false before Leader.waitForEpochAck() is invoked. > Instead of "if (waitingForNewEpoch) throw" the condition in > Leader.waitForEpochAck() should be "if (!electionFinished) throw". > The guarded block introduced in ZK-1191 should be checking !electionFinished. -- 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