summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Arshad <arshad@apache.org>2021-03-02 11:37:47 +0530
committerMate Szalay-Beko <mszalay@cloudera.com>2022-05-17 10:24:21 +0200
commit90322afd4301af461175ef2f0fb1539593fb2f77 (patch)
tree5d59fc1b2a026d07d33210f437e295cc4f7b464b
parentfd9219c4f5d4a0e9423cc2fd3d03c86a2edfa6d6 (diff)
downloadzookeeper-90322afd4301af461175ef2f0fb1539593fb2f77.tar.gz
ZOOKEEPER-3877: JMX Bean RemotePeerBean should enclose IPV6 host in square bracket same as LocalPeerBean
…quare bracket same as LocalPeerBean Author: Mohammad Arshad <arshad@apache.org> Reviewers: Enrico Olivelli <eolivelli@apache.org> Closes #1493 from arshadmohammad/ZOOKEEPER-3877-master (cherry picked from commit 425ee189dcf952fd7a2a38df375ec245dcdfbfc6) Signed-off-by: Mohammad Arshad <arshad@apache.org> (cherry picked from commit a51b222de42fd0d0591dd8eda39a9045324a11fc)
-rw-r--r--zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/RemotePeerBean.java12
-rw-r--r--zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/RemotePeerBeanTest.java15
2 files changed, 21 insertions, 6 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 285f11a85..573859eb3 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,11 +18,12 @@
package org.apache.zookeeper.server.quorum;
+import static org.apache.zookeeper.common.NetUtils.formatInetAddr;
import org.apache.zookeeper.jmx.ZKMBeanInfo;
/**
* A remote peer bean only provides limited information about the remote peer,
- * and the peer cannot be managed remotely.
+ * and the peer cannot be managed remotely.
*/
public class RemotePeerBean implements RemotePeerMXBean,ZKMBeanInfo {
private QuorumPeer.QuorumServer peer;
@@ -45,19 +46,18 @@ public class RemotePeerBean implements RemotePeerMXBean,ZKMBeanInfo {
}
public String getQuorumAddress() {
- return peer.addr.getHostString()+":"+peer.addr.getPort();
+ return formatInetAddr(peer.addr);
}
public String getElectionAddress() {
- return peer.electionAddr.getHostString() + ":" + peer.electionAddr.getPort();
+ return formatInetAddr(peer.electionAddr);
}
public String getClientAddress() {
if (null == peer.clientAddr) {
return "";
}
- return peer.clientAddr.getHostString() + ":"
- + peer.clientAddr.getPort();
+ return formatInetAddr(peer.clientAddr);
}
public String getLearnerType() {
@@ -68,5 +68,5 @@ public class RemotePeerBean implements RemotePeerMXBean,ZKMBeanInfo {
public boolean isLeader() {
return localPeer.isLeader(peer.getId());
}
-
+
}
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 08dff63fb..f4457a762 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
@@ -61,4 +61,19 @@ public class RemotePeerBeanTest {
assertFalse(remotePeerBean.isLeader());
}
+ @Test
+ public void testHostPortReturnedWhenIPIsIPV6() {
+ QuorumPeer.QuorumServer quorumServerMock = mock(QuorumPeer.QuorumServer.class);
+ InetSocketAddress address = new InetSocketAddress("127::1", 2181);
+ quorumServerMock.clientAddr = address;
+ quorumServerMock.electionAddr = address;
+ quorumServerMock.addr = address;
+ 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());
+ }
+
}