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

iluo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new 74a491b  improve NetUtils (#3953)
74a491b is described below

commit 74a491ba4304c5ea07bd0016ab6c135b80abd651
Author: xujingfeng <[email protected]>
AuthorDate: Sun May 5 15:00:40 2019 +0800

    improve NetUtils (#3953)
    
    * 1. filter network interface in NetUtils 2. remove the useless attribute 
in ApplicationConfig
    
    * add reachable check for ipv4
    
    * move the reachable check to outside
    
    * rename isValidV6Address to isPreferIPV6Address
---
 .../org/apache/dubbo/common/utils/NetUtils.java    | 26 +++++++++++++---------
 .../apache/dubbo/common/utils/NetUtilsTest.java    |  2 +-
 .../org/apache/dubbo/config/ApplicationConfig.java | 11 ---------
 .../apache/dubbo/demo/provider/Application.java    |  3 ++-
 4 files changed, 18 insertions(+), 24 deletions(-)

diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java 
b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java
index 3119e5c..e5b85ec 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java
@@ -128,28 +128,23 @@ public class NetUtils {
             return false;
         }
         String name = address.getHostAddress();
-        return (name != null
+        boolean result = (name != null
                 && IP_PATTERN.matcher(name).matches()
                 && !Constants.ANYHOST_VALUE.equals(name)
                 && !Constants.LOCALHOST_VALUE.equals(name));
+        return result;
     }
 
     /**
-     * Check if an ipv6 address is reachable.
+     * Check if an ipv6 address
      *
-     * @param address the given address
      * @return true if it is reachable
      */
-    static boolean isValidV6Address(Inet6Address address) {
+    static boolean isPreferIPV6Address() {
         boolean preferIpv6 = 
Boolean.getBoolean("java.net.preferIPv6Addresses");
         if (!preferIpv6) {
             return false;
         }
-        try {
-            return address.isReachable(100);
-        } catch (IOException e) {
-            // ignore
-        }
         return false;
     }
 
@@ -234,7 +229,7 @@ public class NetUtils {
     private static Optional<InetAddress> toValidAddress(InetAddress address) {
         if (address instanceof Inet6Address) {
             Inet6Address v6Address = (Inet6Address) address;
-            if (isValidV6Address(v6Address)) {
+            if (isPreferIPV6Address()) {
                 return Optional.ofNullable(normalizeV6Address(v6Address));
             }
         }
@@ -264,12 +259,21 @@ public class NetUtils {
             while (interfaces.hasMoreElements()) {
                 try {
                     NetworkInterface network = interfaces.nextElement();
+                    if (network.isLoopback() || network.isVirtual() || 
!network.isUp()) {
+                        continue;
+                    }
                     Enumeration<InetAddress> addresses = 
network.getInetAddresses();
                     while (addresses.hasMoreElements()) {
                         try {
                             Optional<InetAddress> addressOp = 
toValidAddress(addresses.nextElement());
                             if (addressOp.isPresent()) {
-                                return addressOp.get();
+                                try {
+                                    if(addressOp.get().isReachable(100)){
+                                        return addressOp.get();
+                                    }
+                                } catch (IOException e) {
+                                    // ignore
+                                }
                             }
                         } catch (Throwable e) {
                             logger.warn(e);
diff --git 
a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/NetUtilsTest.java 
b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/NetUtilsTest.java
index 797f2b4..5def6c7 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/NetUtilsTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/NetUtilsTest.java
@@ -191,7 +191,7 @@ public class NetUtilsTest {
         System.setProperty("java.net.preferIPv6Addresses", "true");
         InetAddress address = NetUtils.getLocalAddress();
         if (address instanceof Inet6Address) {
-            assertThat(NetUtils.isValidV6Address((Inet6Address) address), 
equalTo(true));
+            assertThat(NetUtils.isPreferIPV6Address(), equalTo(true));
         }
         System.setProperty("java.net.preferIPv6Addresses", saved);
     }
diff --git 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
index 984733f..2775d0d 100644
--- 
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
+++ 
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
@@ -123,10 +123,6 @@ public class ApplicationConfig extends AbstractConfig {
      */
     private String shutwait;
 
-
-    private Boolean preferPublicIp;
-
-
     public ApplicationConfig() {
     }
 
@@ -331,11 +327,4 @@ public class ApplicationConfig extends AbstractConfig {
         return !StringUtils.isEmpty(name);
     }
 
-    public Boolean getPreferPublicIp() {
-        return preferPublicIp;
-    }
-
-    public void setPreferPublicIp(Boolean preferPublicIp) {
-        this.preferPublicIp = preferPublicIp;
-    }
 }
\ No newline at end of file
diff --git 
a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
 
b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
index 857e03f..c453d1b 100644
--- 
a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
+++ 
b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
@@ -29,9 +29,10 @@ public class Application {
      * launch the application
      */
     public static void main(String[] args) throws Exception {
+        System.setProperty("DUBBO_IP_TO_REGISTRY", "4.3.2.1");
         ServiceConfig<DemoServiceImpl> service = new ServiceConfig<>();
         service.setApplication(new 
ApplicationConfig("dubbo-demo-api-provider"));
-        service.setRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));
+        service.setRegistry(new RegistryConfig("zookeeper://127.0.0.1:2181"));
         service.setInterface(DemoService.class);
         service.setRef(new DemoServiceImpl());
         service.export();

Reply via email to