Browse Source

ZOOKEEPER-1701. When new and old config have the same version, no need to write new config to disk or create new connections (Alexander Shraer via michim)

git-svn-id: https://svn.apache.org/repos/asf/zookeeper/trunk@1583509 13f79535-47bb-0310-9956-ffa450edef68
Michi Mutsuzaki 11 years ago
parent
commit
d12eaac21d
2 changed files with 12 additions and 2 deletions
  1. 4 0
      CHANGES.txt
  2. 8 2
      src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java

+ 4 - 0
CHANGES.txt

@@ -829,6 +829,10 @@ IMPROVEMENTS:
   ZOOKEEPER-1728. Better error message when reconfig invoked in standalone mode
   (Alexander Shraer via michim)
 
+  ZOOKEEPER-1701. When new and old config have the same version, no need to
+  write new config to disk or create new connections (Alexander Shraer via
+  michim)
+
 headers
 
 Release 3.4.0 - 

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

@@ -1267,11 +1267,17 @@ public class QuorumPeer extends ZooKeeperThread implements QuorumStats.Provider
     }
     
     public synchronized void setLastSeenQuorumVerifier(QuorumVerifier qv, boolean writeToDisk){
-        if (lastSeenQuorumVerifier!=null && lastSeenQuorumVerifier.getVersion() >= qv.getVersion()) {
-           LOG.warn("setLastSeenQuorumVerifier called with stale config " + qv.getVersion() + 
+        if (lastSeenQuorumVerifier!=null && lastSeenQuorumVerifier.getVersion() > qv.getVersion()) {
+           LOG.error("setLastSeenQuorumVerifier called with stale config " + qv.getVersion() + 
                    ". Current version: " + quorumVerifier.getVersion());
           
         }
+        // assuming that a version uniquely identifies a configuration, so if
+        // version is the same, nothing to do here.
+        if (lastSeenQuorumVerifier != null &&
+            lastSeenQuorumVerifier.getVersion() == qv.getVersion()) {
+            return;
+        }
         lastSeenQuorumVerifier = qv;
         connectNewPeers();
         if (writeToDisk) {