From 61d4cccb0b137422f8cc8e2a294700753c5a6247 Mon Sep 17 00:00:00 2001 From: Jermy Li Date: Mon, 25 Apr 2022 15:14:33 +0800 Subject: [PATCH] Fix URISyntaxException in nodetool with updated Java Patch by Jermy Li; reviewed by bereng and brandonwilliams for CASSANDRA-17581 --- CHANGES.txt | 1 + src/java/org/apache/cassandra/tools/NodeProbe.java | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index e74b2cba35..df06fa3a95 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.27 + * Fix URISyntaxException in nodetool with updated Java (CASSANDRA-17581) * Schema mutations may not be completed on drain (CASSANDRA-17524) * Fix data corruption in AbstractCompositeType due to static boolean byte buffers (CASSANDRA-14752) * Add procps dependency to RPM/Debian packages (CASSANDRA-17516) diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java b/src/java/org/apache/cassandra/tools/NodeProbe.java index 224b676b44..b2273eedb3 100644 --- a/src/java/org/apache/cassandra/tools/NodeProbe.java +++ b/src/java/org/apache/cassandra/tools/NodeProbe.java @@ -96,7 +96,7 @@ import com.google.common.util.concurrent.Uninterruptibles; */ public class NodeProbe implements AutoCloseable { - private static final String fmtUrl = "service:jmx:rmi:///jndi/rmi://[%s]:%d/jmxrmi"; + private static final String fmtUrl = "service:jmx:rmi:///jndi/rmi://%s:%d/jmxrmi"; private static final String ssObjName = "org.apache.cassandra.db:type=StorageService"; private static final int defaultPort = 7199; final String host; @@ -186,6 +186,12 @@ public class NodeProbe implements AutoCloseable */ protected void connect() throws IOException { + String host = this.host; + if (host.contains(":")) + { + // Use square brackets to surround IPv6 addresses to fix CASSANDRA-7669 and CASSANDRA-17581 + host = "[" + host + "]"; + } JMXServiceURL jmxUrl = new JMXServiceURL(String.format(fmtUrl, host, port)); Map env = new HashMap(); if (username != null)