This is an automated email from the ASF dual-hosted git repository. ddiederen pushed a commit to branch branch-3.7.0 in repository https://gitbox.apache.org/repos/asf/zookeeper.git
commit 76269d6d49dd0914f13df6ba069f7445bf44e6f5 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 de145ea..cc2321c 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()); + } + }
