Skip to content

Commit 4bee21e

Browse files
authored
HBASE-27660 Ignore invalid hostname when getNetworkInterfaces (#5052)
Signed-off-by: Duo Zhang <[email protected]>
1 parent 10037df commit 4bee21e

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import java.net.InetAddress;
2626
import java.net.NetworkInterface;
27+
import java.util.ArrayList;
2728
import java.util.Enumeration;
2829
import java.util.List;
2930
import java.util.Locale;
@@ -89,9 +90,7 @@ public void testInvalidRegionServerHostnameAbortsServer() throws Exception {
8990

9091
@Test
9192
public void testRegionServerHostname() throws Exception {
92-
Enumeration<NetworkInterface> netInterfaceList = NetworkInterface.getNetworkInterfaces();
93-
while (netInterfaceList.hasMoreElements()) {
94-
NetworkInterface ni = netInterfaceList.nextElement();
93+
for (NetworkInterface ni : getValidNetworkInterfaces()) {
9594
Enumeration<InetAddress> addrList = ni.getInetAddresses();
9695
// iterate through host addresses and use each as hostname
9796
while (addrList.hasMoreElements()) {
@@ -205,4 +204,22 @@ public void testRegionServerHostnameReportedToMaster() throws Exception {
205204
assertEquals(expectedRS, servers.size());
206205
}
207206
}
207+
208+
private boolean ignoreNetworkInterface(NetworkInterface networkInterface) throws Exception {
209+
return networkInterface == null || networkInterface.isLoopback() || networkInterface.isVirtual()
210+
|| !networkInterface.isUp();
211+
}
212+
213+
private List<NetworkInterface> getValidNetworkInterfaces() throws Exception {
214+
List<NetworkInterface> validNetworkInterfaces = new ArrayList<>();
215+
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
216+
while (interfaces.hasMoreElements()) {
217+
NetworkInterface networkInterface = interfaces.nextElement();
218+
if (ignoreNetworkInterface(networkInterface)) {
219+
continue;
220+
}
221+
validNetworkInterfaces.add(networkInterface);
222+
}
223+
return validNetworkInterfaces;
224+
}
208225
}

0 commit comments

Comments
 (0)