Repository: zookeeper
Updated Branches:
  refs/heads/master fdde8b006 -> a8cf62678


ZOOKEEPER-2847: Cannot bind to client port when reconfig based on old static 
config

PR No.2: Prevent removing client info from static config file to fix 
ReconfigLegacyTest

Author: Yisong Yue <yisong...@fb.com>

Reviewers: Allan Lyu <fang...@apache.org>, Michael Han <h...@apache.org>

Closes #649 from yisong-yue/ZOOKEEPER-2847


Project: http://git-wip-us.apache.org/repos/asf/zookeeper/repo
Commit: http://git-wip-us.apache.org/repos/asf/zookeeper/commit/a8cf6267
Tree: http://git-wip-us.apache.org/repos/asf/zookeeper/tree/a8cf6267
Diff: http://git-wip-us.apache.org/repos/asf/zookeeper/diff/a8cf6267

Branch: refs/heads/master
Commit: a8cf62678131626b778d0572290d582f70a2cbfc
Parents: fdde8b0
Author: Yisong Yue <yisong...@fb.com>
Authored: Sun Sep 30 21:11:18 2018 -0700
Committer: Michael Han <h...@apache.org>
Committed: Sun Sep 30 21:11:18 2018 -0700

----------------------------------------------------------------------
 .../main/org/apache/zookeeper/server/quorum/QuorumPeer.java    | 6 ++++--
 .../org/apache/zookeeper/server/quorum/QuorumPeerConfig.java   | 5 ++++-
 2 files changed, 8 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zookeeper/blob/a8cf6267/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java
----------------------------------------------------------------------
diff --git a/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java 
b/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java
index 2b68a1c..cbf643e 100644
--- a/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java
+++ b/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeer.java
@@ -137,6 +137,8 @@ public class QuorumPeer extends ZooKeeperThread implements 
QuorumStats.Provider
         public String hostname;
         
         public LearnerType type = LearnerType.PARTICIPANT;
+
+        public boolean isClientAddrFromStatic = false;
         
         private List<InetSocketAddress> myAddrs;
 
@@ -306,7 +308,7 @@ public class QuorumPeer extends ZooKeeperThread implements 
QuorumStats.Provider
             }           
             if (type == LearnerType.OBSERVER) sw.append(":observer");
             else if (type == LearnerType.PARTICIPANT) 
sw.append(":participant");            
-            if (clientAddr!=null){
+            if (clientAddr!=null && !isClientAddrFromStatic){
                 sw.append(";");
                 sw.append(delimitedHostString(clientAddr));
                 sw.append(":");
@@ -1602,7 +1604,7 @@ public class QuorumPeer extends ZooKeeperThread 
implements QuorumStats.Provider
 
     private boolean needEraseClientInfoFromStaticConfig() {
         QuorumServer server = quorumVerifier.getAllMembers().get(getId());
-        return (server != null && server.clientAddr != null);
+        return (server != null && server.clientAddr != null && 
!server.isClientAddrFromStatic);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/zookeeper/blob/a8cf6267/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java
----------------------------------------------------------------------
diff --git 
a/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java 
b/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java
index 6aaf172..f4e8a5f 100644
--- a/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java
+++ b/src/java/main/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java
@@ -712,7 +712,10 @@ public class QuorumPeerConfig {
                         " is different from client address found in dynamic 
file: " + qs.clientAddr);
         }
         if (qs != null && qs.clientAddr != null) clientPortAddress = 
qs.clientAddr;
-        if (qs != null && qs.clientAddr == null) qs.clientAddr = 
clientPortAddress;
+        if (qs != null && qs.clientAddr == null) {
+            qs.clientAddr = clientPortAddress;
+            qs.isClientAddrFromStatic = true;
+        }
     }
 
     private void setupPeerType() {

Reply via email to