You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Alexander Shraer (JIRA)" <ji...@apache.org> on 2011/09/19 04:02:09 UTC
[jira] [Created] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
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.4.0
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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Resolved] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Mahadev konar (Resolved) (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mahadev konar resolved ZOOKEEPER-1192.
--------------------------------------
Resolution: Fixed
Fix Version/s: 3.4.0
Just merged this into 3.4 branch. Thanks Alex.
> 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.4.0, 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
[jira] [Updated] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Benjamin Reed (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benjamin Reed updated ZOOKEEPER-1192:
-------------------------------------
Fix Version/s: (was: 3.4.0)
> 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Alexander Shraer (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13108151#comment-13108151 ]
Alexander Shraer commented on ZOOKEEPER-1192:
---------------------------------------------
the new test is Zab1_0Test.testAbandonBeforeACKEpoch(). It fails without the patch and passes with the patch.
> 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.4.0
>
> Attachments: 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Camille Fournier (Commented) (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13144571#comment-13144571 ]
Camille Fournier commented on ZOOKEEPER-1192:
---------------------------------------------
Why wasn't this committed to 3.4? This seems like something that is definitely needed for future patches to work. Specifically, I'm having quite a time with 1264 and I suspect we'll have issues with 1270/1194. We really need to get some coherence here, bugs in election logic should absolutely be going into the 3.4 branch, not just trunk.
> 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
[jira] [Updated] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Alexander Shraer (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexander Shraer updated ZOOKEEPER-1192:
----------------------------------------
Attachment: zookeeper-1192-ver1.patch
Includes a test that makes sure that leader doesn't adopt a new epoch that it proposed if it didn't get a quorum of followers to ack this epoch.
> 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.4.0
>
> Attachments: 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Hadoop QA (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13107592#comment-13107592 ]
Hadoop QA commented on ZOOKEEPER-1192:
--------------------------------------
-1 overall. Here are the results of testing the latest attachment
http://issues.apache.org/jira/secure/attachment/12495007/zookeeper-1192.patch
against trunk revision 1172406.
+1 @author. The patch does not contain any @author tags.
-1 tests included. The patch doesn't appear to include any new or modified tests.
Please justify why no new tests are needed for this patch.
Also please list what manual steps were performed to verify this patch.
+1 javadoc. The javadoc tool did not generate any warning messages.
+1 javac. The applied patch does not increase the total number of javac compiler warnings.
+1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings.
+1 release audit. The applied patch does not increase the total number of release audit warnings.
+1 core tests. The patch passed core unit tests.
+1 contrib tests. The patch passed contrib unit tests.
Test results: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/558//testReport/
Findbugs warnings: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/558//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
Console output: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/558//console
This message is automatically generated.
> 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.4.0
>
> Attachments: 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Hadoop QA (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13112350#comment-13112350 ]
Hadoop QA commented on ZOOKEEPER-1192:
--------------------------------------
+1 overall. Here are the results of testing the latest attachment
http://issues.apache.org/jira/secure/attachment/12496069/ZOOKEEPER-1192.patch
against trunk revision 1172406.
+1 @author. The patch does not contain any @author tags.
+1 tests included. The patch appears to include 3 new or modified tests.
+1 javadoc. The javadoc tool did not generate any warning messages.
+1 javac. The applied patch does not increase the total number of javac compiler warnings.
+1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings.
+1 release audit. The applied patch does not increase the total number of release audit warnings.
+1 core tests. The patch passed core unit tests.
+1 contrib tests. The patch passed contrib unit tests.
Test results: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/577//testReport/
Findbugs warnings: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/577//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
Console output: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/577//console
This message is automatically generated.
> 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.4.0, 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Reopened] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Camille Fournier (Reopened) (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Camille Fournier reopened ZOOKEEPER-1192:
-----------------------------------------
Please make sure this is put in 3.4 as well.
> 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
[jira] [Updated] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Patrick Hunt (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Patrick Hunt updated ZOOKEEPER-1192:
------------------------------------
Fix Version/s: 3.5.0
> 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.4.0, 3.5.0
>
> Attachments: 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Benjamin Reed (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13109887#comment-13109887 ]
Benjamin Reed commented on ZOOKEEPER-1192:
------------------------------------------
+1 looks great alex. i think it is ready to commit. do you want it committed to the 3.4 branch mahadev?
> 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.4.0
>
> Attachments: 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Camille Fournier (Commented) (JIRA)" <ji...@apache.org>.
[ 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
[jira] [Commented] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Patrick Hunt (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13107949#comment-13107949 ]
Patrick Hunt commented on ZOOKEEPER-1192:
-----------------------------------------
It would be good to have a test for this.
> 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.4.0
>
> Attachments: 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Benjamin Reed (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benjamin Reed updated ZOOKEEPER-1192:
-------------------------------------
Attachment: ZOOKEEPER-1192.patch
the patch with the tabs and ^Ms fixed
> 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.4.0, 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Alexander Shraer (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexander Shraer updated ZOOKEEPER-1192:
----------------------------------------
Attachment: zookeeper-1192.patch
> 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.4.0
>
> Attachments: 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Hudson (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13112515#comment-13112515 ]
Hudson commented on ZOOKEEPER-1192:
-----------------------------------
Integrated in ZooKeeper-trunk #1311 (See [https://builds.apache.org/job/ZooKeeper-trunk/1311/])
ZOOKEEPER-1191. Synchronization issue - wait not in guarded block
ZOOKEEPER-1192. Leader.waitForEpochAck() checks waitingForNewEpoch instead of checking electionFinished
breed : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1173949
Files :
* /zookeeper/trunk/CHANGES.txt
* /zookeeper/trunk/src/java/main/org/apache/zookeeper/server/quorum/Leader.java
* /zookeeper/trunk/src/java/test/org/apache/zookeeper/server/quorum/Zab1_0Test.java
> 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.4.0, 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1192) Leader.waitForEpochAck() checks
waitingForNewEpoch instead of checking electionFinished
Posted by "Hadoop QA (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13108173#comment-13108173 ]
Hadoop QA commented on ZOOKEEPER-1192:
--------------------------------------
+1 overall. Here are the results of testing the latest attachment
http://issues.apache.org/jira/secure/attachment/12495146/zookeeper-1192-ver1.patch
against trunk revision 1172406.
+1 @author. The patch does not contain any @author tags.
+1 tests included. The patch appears to include 3 new or modified tests.
+1 javadoc. The javadoc tool did not generate any warning messages.
+1 javac. The applied patch does not increase the total number of javac compiler warnings.
+1 findbugs. The patch does not introduce any new Findbugs (version 1.3.9) warnings.
+1 release audit. The applied patch does not increase the total number of release audit warnings.
+1 core tests. The patch passed core unit tests.
+1 contrib tests. The patch passed contrib unit tests.
Test results: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/564//testReport/
Findbugs warnings: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/564//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
Console output: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/564//console
This message is automatically generated.
> 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.4.0
>
> Attachments: 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.
For more information on JIRA, see: http://www.atlassian.com/software/jira