From 3111927046411fe168bec1dda24d5697a2ae37c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E8=BE=8910329192?= Date: Wed, 12 Nov 2025 11:36:45 +0800 Subject: [PATCH] HDFS-17834. Fix invalid HTTP links for DataNodes in IPv6 environment --- .../main/webapps/router/federationhealth.js | 22 +++++++++++++++++-- .../src/main/webapps/hdfs/dfshealth.js | 21 ++++++++++++++++-- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.js b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.js index 6220ca14a8cbb..9e94cf71e9d35 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.js +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.js @@ -278,9 +278,27 @@ for (var i = 0, e = nodes.length; i < e; ++i) { var n = nodes[i]; n.usedPercentage = Math.round((n.used + n.nonDfsUsedSpace) * 1.0 / n.capacity * 100); - var port = n.infoAddr.split(":")[1]; - var securePort = n.infoSecureAddr.split(":")[1]; + + var infoAddrParts = n.infoAddr.split("]:"); var dnHost = n.name.split(":")[0]; + var port; + if (infoAddrParts.length > 1) { + // IPv6 url [xxxx:xxxx:...]:port + port = infoAddrParts[1]; + } else { + // IPv4 url host:port + port = n.infoAddr.split(":")[1]; + } + + var securePort = "0"; + if (n.infoSecureAddr) { + var secureAddrParts = n.infoSecureAddr.split("]:"); + if (secureAddrParts.length > 1) { + securePort = secureAddrParts[1]; + } else { + securePort = n.infoSecureAddr.split(":")[1]; + } + } n.dnWebAddress = "http://" + dnHost + ":" + port; if (securePort != 0) { n.dnWebAddress = "https://" + dnHost + ":" + securePort; diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/dfshealth.js b/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/dfshealth.js index 8074755bfee24..ef6df830f28b8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/dfshealth.js +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/dfshealth.js @@ -227,9 +227,26 @@ var n = nodes[i]; n.usedPercentage = Math.round((n.used + n.nonDfsUsedSpace) * 1.0 / n.capacity * 100); - var port = n.infoAddr.split(":")[1]; - var securePort = n.infoSecureAddr.split(":")[1]; + var infoAddrParts = n.infoAddr.split("]:"); var dnHost = n.name.split(":")[0]; + var port; + if (infoAddrParts.length > 1) { + // IPv6 url [xxxx:xxxx:...]:port + port = infoAddrParts[1]; + } else { + // IPv4 url host:port + port = n.infoAddr.split(":")[1]; + } + + var securePort = "0"; + if (n.infoSecureAddr) { + var secureAddrParts = n.infoSecureAddr.split("]:"); + if (secureAddrParts.length > 1) { + securePort = secureAddrParts[1]; + } else { + securePort = n.infoSecureAddr.split(":")[1]; + } + } n.dnWebAddress = "http://" + dnHost + ":" + port; if (securePort != 0) { n.dnWebAddress = "https://" + dnHost + ":" + securePort;