Skip to content

Commit bf7ed4c

Browse files
authored
HDFS-17834. Fix invalid HTTP links for DataNodes in IPv6 environment (#8097). Contributed by sunhui.
Signed-off-by: Shilun Fan <[email protected]> Signed-off-by: Ayush Saxena <[email protected]> Signed-off-by: He Xiaoqiao <[email protected]>
1 parent 2fcbc69 commit bf7ed4c

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,9 +278,27 @@
278278
for (var i = 0, e = nodes.length; i < e; ++i) {
279279
var n = nodes[i];
280280
n.usedPercentage = Math.round((n.used + n.nonDfsUsedSpace) * 1.0 / n.capacity * 100);
281-
var port = n.infoAddr.split(":")[1];
282-
var securePort = n.infoSecureAddr.split(":")[1];
281+
282+
var infoAddrParts = n.infoAddr.split("]:");
283283
var dnHost = n.name.split(":")[0];
284+
var port;
285+
if (infoAddrParts.length > 1) {
286+
// IPv6 url [xxxx:xxxx:...]:port
287+
port = infoAddrParts[1];
288+
} else {
289+
// IPv4 url host:port
290+
port = n.infoAddr.split(":")[1];
291+
}
292+
293+
var securePort = "0";
294+
if (n.infoSecureAddr) {
295+
var secureAddrParts = n.infoSecureAddr.split("]:");
296+
if (secureAddrParts.length > 1) {
297+
securePort = secureAddrParts[1];
298+
} else {
299+
securePort = n.infoSecureAddr.split(":")[1];
300+
}
301+
}
284302
n.dnWebAddress = "http://" + dnHost + ":" + port;
285303
if (securePort != 0) {
286304
n.dnWebAddress = "https://" + dnHost + ":" + securePort;

hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/dfshealth.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,9 +227,26 @@
227227
var n = nodes[i];
228228
n.usedPercentage = Math.round((n.used + n.nonDfsUsedSpace) * 1.0 / n.capacity * 100);
229229

230-
var port = n.infoAddr.split(":")[1];
231-
var securePort = n.infoSecureAddr.split(":")[1];
230+
var infoAddrParts = n.infoAddr.split("]:");
232231
var dnHost = n.name.split(":")[0];
232+
var port;
233+
if (infoAddrParts.length > 1) {
234+
// IPv6 url [xxxx:xxxx:...]:port
235+
port = infoAddrParts[1];
236+
} else {
237+
// IPv4 url host:port
238+
port = n.infoAddr.split(":")[1];
239+
}
240+
241+
var securePort = "0";
242+
if (n.infoSecureAddr) {
243+
var secureAddrParts = n.infoSecureAddr.split("]:");
244+
if (secureAddrParts.length > 1) {
245+
securePort = secureAddrParts[1];
246+
} else {
247+
securePort = n.infoSecureAddr.split(":")[1];
248+
}
249+
}
233250
n.dnWebAddress = "http://" + dnHost + ":" + port;
234251
if (securePort != 0) {
235252
n.dnWebAddress = "https://" + dnHost + ":" + securePort;

0 commit comments

Comments
 (0)