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
