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

kirs pushed a commit to branch 1.3.7-prepare-#5468
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit f4eb0d9752119d68308d2dc104eed8f53a129ec8
Author: CalvinKirs <[email protected]>
AuthorDate: Mon Jul 19 17:10:19 2021 +0800

    [1.3.7-prepare#5468][Improvement][Common] Fix obtaining IP is incorrect
    pr#5594
    issue #5468
---
 .../build/conf/dolphinscheduler/common.properties.tpl   |  6 ++++++
 .../org/apache/dolphinscheduler/common/Constants.java   |  6 +++---
 .../apache/dolphinscheduler/common/utils/NetUtils.java  | 17 +++++------------
 .../src/main/resources/common.properties                |  6 ++++++
 4 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/docker/build/conf/dolphinscheduler/common.properties.tpl 
b/docker/build/conf/dolphinscheduler/common.properties.tpl
index 83f7307..84a4496 100644
--- a/docker/build/conf/dolphinscheduler/common.properties.tpl
+++ b/docker/build/conf/dolphinscheduler/common.properties.tpl
@@ -66,5 +66,11 @@ 
yarn.application.status.address=${YARN_APPLICATION_STATUS_ADDRESS}
 # system env path
 #dolphinscheduler.env.path=env/dolphinscheduler_env.sh
 
+# network interface preferred like eth0, default: empty
+#dolphin.scheduler.network.interface.preferred=
+
+# network IP gets priority, default: inner outer
+#dolphin.scheduler.network.priority.strategy=default
+
 # development state
 development.state=false
diff --git 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
index fe83fa1..0094375 100644
--- 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
+++ 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
@@ -991,12 +991,12 @@ public final class Constants {
     /**
      * Network system properties
      */
-    public static final String DOLPHIN_SCHEDULER_PREFERRED_NETWORK_INTERFACE = 
"dolphin.scheduler.network.interface.preferred";
+    public static final String DOLPHIN_SCHEDULER_NETWORK_INTERFACE_PREFERRED = 
"dolphin.scheduler.network.interface.preferred";
 
     /**
-     * Network IP gets priority, default inner outer
+     * network IP gets priority, default inner outer
      */
-    public static final String NETWORK_PRIORITY_STRATEGY = 
"dolphin.scheduler.network.priority.strategy";
+    public static final String DOLPHIN_SCHEDULER_NETWORK_PRIORITY_STRATEGY = 
"dolphin.scheduler.network.priority.strategy";
 
 
     /**
diff --git 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/NetUtils.java
 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/NetUtils.java
index 4314089..397dc58 100644
--- 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/NetUtils.java
+++ 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/NetUtils.java
@@ -17,8 +17,6 @@
 
 package org.apache.dolphinscheduler.common.utils;
 
-import static 
org.apache.dolphinscheduler.common.Constants.DOLPHIN_SCHEDULER_PREFERRED_NETWORK_INTERFACE;
-
 import static java.util.Collections.emptyList;
 
 import org.apache.dolphinscheduler.common.Constants;
@@ -44,7 +42,6 @@ import org.slf4j.LoggerFactory;
  */
 public class NetUtils {
 
-    private static final Pattern STS_PATTERN = Pattern.compile("-\\d+$"); // 
StatefulSet pattern
     private static final Pattern IP_PATTERN = 
Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3,5}$");
     private static final String NETWORK_PRIORITY_DEFAULT = "default";
     private static final String NETWORK_PRIORITY_INNER = "inner";
@@ -81,13 +78,8 @@ public class NetUtils {
         if (inetAddress != null) {
             if (Constants.KUBERNETES_MODE) {
                 String canonicalHost = inetAddress.getCanonicalHostName();
-                if (!canonicalHost.contains(".") || 
IP_PATTERN.matcher(canonicalHost).matches()) {
-                    String host = inetAddress.getHostName();
-                    if (STS_PATTERN.matcher(host).find()) {
-                        return String.format("%s.%s", host, 
host.replaceFirst("\\d+$", "headless"));
-                    }
-                } else if (canonicalHost.contains(".")) {
                     String[] items = canonicalHost.split("\\.");
+                if (items.length == 6 && "svc".equals(items[3])) {
                     return String.format("%s.%s", items[0], items[1]);
                 }
                 return canonicalHost;
@@ -136,7 +128,7 @@ public class NetUtils {
                     Optional<InetAddress> addressOp = 
toValidAddress(addresses.nextElement());
                     if (addressOp.isPresent()) {
                         try {
-                            if (addressOp.get().isReachable(100)) {
+                            if (addressOp.get().isReachable(200)) {
                                 LOCAL_ADDRESS = addressOp.get();
                                 return LOCAL_ADDRESS;
                             }
@@ -266,7 +258,8 @@ public class NetUtils {
     }
 
     private static boolean isSpecifyNetworkInterface(NetworkInterface 
networkInterface) {
-        String preferredNetworkInterface = 
System.getProperty(DOLPHIN_SCHEDULER_PREFERRED_NETWORK_INTERFACE);
+        String preferredNetworkInterface = 
PropertyUtils.getString(Constants.DOLPHIN_SCHEDULER_NETWORK_INTERFACE_PREFERRED,
+                
System.getProperty(Constants.DOLPHIN_SCHEDULER_NETWORK_INTERFACE_PREFERRED));
         return Objects.equals(networkInterface.getDisplayName(), 
preferredNetworkInterface);
     }
 
@@ -274,7 +267,7 @@ public class NetUtils {
         if (validNetworkInterfaces.isEmpty()) {
             return null;
         }
-        String networkPriority = 
PropertyUtils.getString(Constants.NETWORK_PRIORITY_STRATEGY, 
NETWORK_PRIORITY_DEFAULT);
+        String networkPriority = 
PropertyUtils.getString(Constants.DOLPHIN_SCHEDULER_NETWORK_PRIORITY_STRATEGY, 
NETWORK_PRIORITY_DEFAULT);
         if (NETWORK_PRIORITY_DEFAULT.equalsIgnoreCase(networkPriority)) {
             return findAddressByDefaultPolicy(validNetworkInterfaces);
         } else if (NETWORK_PRIORITY_INNER.equalsIgnoreCase(networkPriority)) {
diff --git a/dolphinscheduler-common/src/main/resources/common.properties 
b/dolphinscheduler-common/src/main/resources/common.properties
index 5bb7c39..9cd7355 100644
--- a/dolphinscheduler-common/src/main/resources/common.properties
+++ b/dolphinscheduler-common/src/main/resources/common.properties
@@ -63,6 +63,12 @@ yarn.resourcemanager.ha.rm.ids=192.168.xx.xx,192.168.xx.xx
 # if resourcemanager HA is enabled or not use resourcemanager, please keep the 
default value; If resourcemanager is single, you only need to replace ds1 to 
actual resourcemanager hostname
 yarn.application.status.address=http://ds1:8088/ws/v1/cluster/apps/%s
 
+# network interface preferred like eth0, default: empty
+#dolphin.scheduler.network.interface.preferred=
+
+# network IP gets priority, default: inner outer
+#dolphin.scheduler.network.priority.strategy=default
+
 # system env path
 #dolphinscheduler.env.path=env/dolphinscheduler_env.sh
 

Reply via email to