Bläddra i källkod

ZOOKEEPER-1840. Server tries to connect to itself during dynamic reconfig (Alexander Shraer via michim)

git-svn-id: https://svn.apache.org/repos/asf/zookeeper/trunk@1587818 13f79535-47bb-0310-9956-ffa450edef68
Michi Mutsuzaki 11 år sedan
förälder
incheckning
dcffe61b80
2 ändrade filer med 4 tillägg och 1 borttagningar
  1. 3 0
      CHANGES.txt
  2. 1 1
      src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java

+ 3 - 0
CHANGES.txt

@@ -608,6 +608,9 @@ BUGFIXES:
   the same port for leader in two different tests. The second test periodically
   the same port for leader in two different tests. The second test periodically
   fails complaining that the port is still in use. (Alexander Shraer via michim)
   fails complaining that the port is still in use. (Alexander Shraer via michim)
 
 
+  ZOOKEEPER-1840. Server tries to connect to itself during dynamic reconfig
+  (Alexander Shraer via michim)
+
 IMPROVEMENTS:
 IMPROVEMENTS:
 
 
   ZOOKEEPER-1170. Fix compiler (eclipse) warnings: unused imports,
   ZOOKEEPER-1170. Fix compiler (eclipse) warnings: unused imports,

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

@@ -1252,7 +1252,7 @@ public class QuorumPeer extends ZooKeeperThread implements QuorumStats.Provider
        if (qcm!=null && getQuorumVerifier()!=null && getLastSeenQuorumVerifier()!=null) {
        if (qcm!=null && getQuorumVerifier()!=null && getLastSeenQuorumVerifier()!=null) {
            Map<Long, QuorumServer> committedView = getQuorumVerifier().getAllMembers();
            Map<Long, QuorumServer> committedView = getQuorumVerifier().getAllMembers();
            for (Entry<Long, QuorumServer> e: getLastSeenQuorumVerifier().getAllMembers().entrySet()){
            for (Entry<Long, QuorumServer> e: getLastSeenQuorumVerifier().getAllMembers().entrySet()){
-               if (!committedView.containsKey(e.getKey())) 
+               if (e.getKey() != getId() && !committedView.containsKey(e.getKey())) 
                    qcm.connectOne(e.getKey(), e.getValue().electionAddr);
                    qcm.connectOne(e.getKey(), e.getValue().electionAddr);
            }
            }
         }
         }