This is an automated email from the ASF dual-hosted git repository.

zhangduo pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 46165dc9ba4 HBASE-27660 Ignore invalid hostname when 
getNetworkInterfaces (#5052)
46165dc9ba4 is described below

commit 46165dc9ba4674769194de8e48511c16b1534b2a
Author: tianhang <[email protected]>
AuthorDate: Mon Feb 27 20:11:42 2023 +0800

    HBASE-27660 Ignore invalid hostname when getNetworkInterfaces (#5052)
    
    Signed-off-by: Duo Zhang <[email protected]>
    (cherry picked from commit 4bee21e96b45422cf3e485d3cf12a0935cd8d6e9)
---
 .../regionserver/TestRegionServerHostname.java     | 23 +++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.java
index 4ec4a359846..3e4269a6d27 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertTrue;
 
 import java.net.InetAddress;
 import java.net.NetworkInterface;
+import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Locale;
@@ -90,9 +91,7 @@ public class TestRegionServerHostname {
 
   @Test
   public void testRegionServerHostname() throws Exception {
-    Enumeration<NetworkInterface> netInterfaceList = 
NetworkInterface.getNetworkInterfaces();
-    while (netInterfaceList.hasMoreElements()) {
-      NetworkInterface ni = netInterfaceList.nextElement();
+    for (NetworkInterface ni : getValidNetworkInterfaces()) {
       Enumeration<InetAddress> addrList = ni.getInetAddresses();
       // iterate through host addresses and use each as hostname
       while (addrList.hasMoreElements()) {
@@ -209,4 +208,22 @@ public class TestRegionServerHostname {
       assertEquals(expectedRS, servers.size());
     }
   }
+
+  private boolean ignoreNetworkInterface(NetworkInterface networkInterface) 
throws Exception {
+    return networkInterface == null || networkInterface.isLoopback() || 
networkInterface.isVirtual()
+      || !networkInterface.isUp();
+  }
+
+  private List<NetworkInterface> getValidNetworkInterfaces() throws Exception {
+    List<NetworkInterface> validNetworkInterfaces = new ArrayList<>();
+    Enumeration<NetworkInterface> interfaces = 
NetworkInterface.getNetworkInterfaces();
+    while (interfaces.hasMoreElements()) {
+      NetworkInterface networkInterface = interfaces.nextElement();
+      if (ignoreNetworkInterface(networkInterface)) {
+        continue;
+      }
+      validNetworkInterfaces.add(networkInterface);
+    }
+    return validNetworkInterfaces;
+  }
 }

Reply via email to