瀏覽代碼

ZOOKEEPER-1144: ZooKeeperServer not starting on leader due to a race condition (Vishal K via camille)

git-svn-id: https://svn.apache.org/repos/asf/zookeeper/trunk@1156649 13f79535-47bb-0310-9956-ffa450edef68
Camille Fournier 13 年之前
父節點
當前提交
41a2f0ac9d
共有 2 個文件被更改,包括 3 次插入1 次删除
  1. 2 0
      CHANGES.txt
  2. 1 1
      src/java/main/org/apache/zookeeper/server/quorum/Leader.java

+ 2 - 0
CHANGES.txt

@@ -273,6 +273,8 @@ BUGFIXES:
   ZOOKEEPER-1139. jenkins is reporting two warnings, fix these (phunt via mahadev)
 
   ZOOKEEPER-1142. incorrect stat output (phunt via mahadev)
+  
+  ZOOKEEPER-1144. ZooKeeperServer not starting on leader due to a race condition (Vishal K via camille)
 
 IMPROVEMENTS:
   ZOOKEEPER-724. Improve junit test integration - log harness information 

+ 1 - 1
src/java/main/org/apache/zookeeper/server/quorum/Leader.java

@@ -326,6 +326,7 @@ public class Leader {
                         + Long.toHexString(newLeaderProposal.packet.getZxid()));
             }
             outstandingProposals.put(newLeaderProposal.packet.getZxid(), newLeaderProposal);
+            newLeaderProposal.ackSet.add(self.getId());
             
             readyToStart = true;
             waitForEpochAck(self.getId(), leaderStateSummary);
@@ -334,7 +335,6 @@ public class Leader {
             // We have to get at least a majority of servers in sync with
             // us. We do this by waiting for the NEWLEADER packet to get
             // acknowledged
-            newLeaderProposal.ackSet.add(self.getId());
             while (!self.getQuorumVerifier().containsQuorum(newLeaderProposal.ackSet)){
             //while (newLeaderProposal.ackCount <= self.quorumPeers.size() / 2) {
                 if (self.tick > self.initLimit) {