This is an automated email from the ASF dual-hosted git repository.
guoyangze pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/master by this push:
new 1182d15ec0d [FLINK-33289] Fix the conversion of InetSocketAddress to
URL in Network utils to work with ipv6 address correctly
1182d15ec0d is described below
commit 1182d15ec0d1047375f007ead26c09e86425b02c
Author: 曹帝胄 <[email protected]>
AuthorDate: Tue Oct 17 21:46:11 2023 +0800
[FLINK-33289] Fix the conversion of InetSocketAddress to URL in Network
utils to work with ipv6 address correctly
---
.../src/main/java/org/apache/flink/util/NetUtils.java | 11 ++++++++++-
.../test/java/org/apache/flink/util/NetUtilsTest.java | 16 ++++++++++++++++
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/flink-core/src/main/java/org/apache/flink/util/NetUtils.java
b/flink-core/src/main/java/org/apache/flink/util/NetUtils.java
index 41d657c42c4..09f178ee736 100644
--- a/flink-core/src/main/java/org/apache/flink/util/NetUtils.java
+++ b/flink-core/src/main/java/org/apache/flink/util/NetUtils.java
@@ -135,7 +135,16 @@ public class NetUtils {
* @return a URL object representing the provided socket address with
"http://" schema
*/
public static URL socketToUrl(InetSocketAddress socketAddress) {
- String hostPort = socketAddress.getHostString() + ":" +
socketAddress.getPort();
+ String hostString = socketAddress.getHostString();
+ // If the hostString is an IPv6 address, it needs to be enclosed in
square brackets
+ // at the beginning and end.
+ if (socketAddress.getAddress() != null
+ && socketAddress.getAddress() instanceof Inet6Address
+ &&
hostString.equals(socketAddress.getAddress().getHostAddress())) {
+ hostString = "[" + hostString + "]";
+ }
+ String hostPort = hostString + ":" + socketAddress.getPort();
+
return validateHostPortString(hostPort);
}
diff --git a/flink-core/src/test/java/org/apache/flink/util/NetUtilsTest.java
b/flink-core/src/test/java/org/apache/flink/util/NetUtilsTest.java
index da186c2aea9..a21b6c9727e 100644
--- a/flink-core/src/test/java/org/apache/flink/util/NetUtilsTest.java
+++ b/flink-core/src/test/java/org/apache/flink/util/NetUtilsTest.java
@@ -396,4 +396,20 @@ public class NetUtilsTest extends TestLogger {
Assertions.assertThat(socketToUrl(socketAddress)).isEqualTo(expectedResult);
}
+
+ @Test
+ public void testIpv6SocketToUrl() throws MalformedURLException {
+ InetSocketAddress socketAddress = new
InetSocketAddress("[2001:1db8::ff00:42:8329]", 8080);
+ URL expectedResult = new URL("http://[2001:1db8::ff00:42:8329]:8080");
+
+
Assertions.assertThat(socketToUrl(socketAddress)).isEqualTo(expectedResult);
+ }
+
+ @Test
+ public void testIpv4SocketToUrl() throws MalformedURLException {
+ InetSocketAddress socketAddress = new InetSocketAddress("192.168.0.1",
8080);
+ URL expectedResult = new URL("http://192.168.0.1:8080");
+
+
Assertions.assertThat(socketToUrl(socketAddress)).isEqualTo(expectedResult);
+ }
}