This is an automated email from the ASF dual-hosted git repository.

arshad pushed a commit to branch branch-3.6
in repository https://gitbox.apache.org/repos/asf/zookeeper.git


The following commit(s) were added to refs/heads/branch-3.6 by this push:
     new a51b222  ZOOKEEPER-3877: JMX Bean RemotePeerBean should enclose IPV6 
host in square bracket same as LocalPeerBean
a51b222 is described below

commit a51b222de42fd0d0591dd8eda39a9045324a11fc
Author: Mohammad Arshad <[email protected]>
AuthorDate: Tue Mar 2 11:37:47 2021 +0530

    ZOOKEEPER-3877: JMX Bean RemotePeerBean should enclose IPV6 host in square 
bracket same as LocalPeerBean
    
    …quare bracket same as LocalPeerBean
    
    Author: Mohammad Arshad <[email protected]>
    
    Reviewers: Enrico Olivelli <[email protected]>
    
    Closes #1493 from arshadmohammad/ZOOKEEPER-3877-master
    
    (cherry picked from commit 425ee189dcf952fd7a2a38df375ec245dcdfbfc6)
    Signed-off-by: Mohammad Arshad <[email protected]>
---
 .../apache/zookeeper/server/quorum/RemotePeerBean.java   | 14 +++++++-------
 .../zookeeper/server/quorum/RemotePeerBeanTest.java      | 16 ++++++++++++++++
 2 files changed, 23 insertions(+), 7 deletions(-)

diff --git 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/RemotePeerBean.java
 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/RemotePeerBean.java
index 2d9d7d3..522ba3a 100644
--- 
a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/RemotePeerBean.java
+++ 
b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/RemotePeerBean.java
@@ -18,7 +18,9 @@
 
 package org.apache.zookeeper.server.quorum;
 
+import static org.apache.zookeeper.common.NetUtils.formatInetAddr;
 import java.util.stream.Collectors;
+import org.apache.zookeeper.common.NetUtils;
 import org.apache.zookeeper.jmx.ZKMBeanInfo;
 
 /**
@@ -47,22 +49,20 @@ public class RemotePeerBean implements RemotePeerMXBean, 
ZKMBeanInfo {
     }
 
     public String getQuorumAddress() {
-        return peer.addr.getAllAddresses().stream()
-                .map(address -> String.format("%s:%d", 
address.getHostString(), address.getPort()))
-                .collect(Collectors.joining("|"));
+        return 
peer.addr.getAllAddresses().stream().map(NetUtils::formatInetAddr)
+            .collect(Collectors.joining("|"));
     }
 
     public String getElectionAddress() {
-        return peer.electionAddr.getAllAddresses().stream()
-                .map(address -> String.format("%s:%d", 
address.getHostString(), address.getPort()))
-                .collect(Collectors.joining("|"));
+        return 
peer.electionAddr.getAllAddresses().stream().map(NetUtils::formatInetAddr)
+            .collect(Collectors.joining("|"));
     }
 
     public String getClientAddress() {
         if (null == peer.clientAddr) {
             return "";
         }
-        return peer.clientAddr.getHostString() + ":" + 
peer.clientAddr.getPort();
+        return formatInetAddr(peer.clientAddr);
     }
 
     public String getLearnerType() {
diff --git 
a/zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/RemotePeerBeanTest.java
 
b/zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/RemotePeerBeanTest.java
index 97aa763..57b164f 100644
--- 
a/zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/RemotePeerBeanTest.java
+++ 
b/zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/RemotePeerBeanTest.java
@@ -59,4 +59,20 @@ public class RemotePeerBeanTest {
         assertFalse(remotePeerBean.isLeader());
     }
 
+    @Test
+    public void testHostPortReturnedWhenIPIsIPV6() {
+        QuorumPeer.QuorumServer quorumServerMock = 
mock(QuorumPeer.QuorumServer.class);
+        InetSocketAddress address = new InetSocketAddress("127::1", 2181);
+        MultipleAddresses multipleAddresses = new MultipleAddresses(address);
+        quorumServerMock.clientAddr = address;
+        quorumServerMock.electionAddr = multipleAddresses;
+        quorumServerMock.addr = multipleAddresses;
+        QuorumPeer peerMock = mock(QuorumPeer.class);
+        RemotePeerBean remotePeerBean = new RemotePeerBean(peerMock, 
quorumServerMock);
+        String expectedHostPort = "[127:0:0:0:0:0:0:1]:2181";
+        assertEquals(expectedHostPort, remotePeerBean.getClientAddress());
+        assertEquals(expectedHostPort, remotePeerBean.getElectionAddress());
+        assertEquals(expectedHostPort, remotePeerBean.getQuorumAddress());
+    }
+
 }

Reply via email to