From 02779b761f385ac26fb88170502a22c84e5f64b7 Mon Sep 17 00:00:00 2001 From: zhangdong <493738387@qq.com> Date: Sat, 2 Sep 2023 14:00:38 +0800 Subject: [PATCH 1/2] p_r --- .../main/java/org/apache/doris/service/FrontendOptions.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendOptions.java b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendOptions.java index bad90822f6a827..a6f4a1b0d0c7f5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendOptions.java +++ b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendOptions.java @@ -27,6 +27,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; import java.net.UnknownHostException; @@ -74,14 +75,15 @@ static void initAddrUseIp(List hosts) { hasMatchedIp = true; break; } - } else { + } else if (addr instanceof Inet4Address) { localAddr = addr; break; } } //if all ips not match the priority_networks then print the warning log if (!priorityCidrs.isEmpty() && !hasMatchedIp) { - LOG.warn("ip address range configured for priority_networks does not include the current IP address"); + LOG.error("ip address range configured for priority_networks does not include the current IP address"); + System.exit(-1); } // nothing found, use loopback addr if (localAddr == null) { From 68f68ab70b8371de01753231b849e29d80b3c461 Mon Sep 17 00:00:00 2001 From: zhangdong <493738387@qq.com> Date: Sat, 2 Sep 2023 15:25:09 +0800 Subject: [PATCH 2/2] p_r --- .../apache/doris/service/FrontendOptions.java | 47 +++++++++++-------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendOptions.java b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendOptions.java index a6f4a1b0d0c7f5..f94e0907094b8b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/service/FrontendOptions.java +++ b/fe/fe-core/src/main/java/org/apache/doris/service/FrontendOptions.java @@ -58,36 +58,43 @@ public static void init() throws UnknownHostException { } } - + // 1. If priority_networks is configured . Obtain the IP that complies with the rules, + // and stop the process if it is not obtained + // 2. If the priority_networks is not configured, priority should be given to obtaining non loopback IPv4 addresses. + // If not, use loopback static void initAddrUseIp(List hosts) { useFqdn = false; analyzePriorityCidrs(); - // if not set frontend_address, get a non-loopback ip - InetAddress loopBack = null; boolean hasMatchedIp = false; - for (InetAddress addr : hosts) { - LOG.debug("check ip address: {}", addr); - if (addr.isLoopbackAddress()) { - loopBack = addr; - } else if (!priorityCidrs.isEmpty()) { + if (!priorityCidrs.isEmpty()) { + for (InetAddress addr : hosts) { + LOG.debug("check ip address: {}", addr); if (isInPriorNetwork(addr.getHostAddress())) { localAddr = addr; hasMatchedIp = true; break; } - } else if (addr instanceof Inet4Address) { - localAddr = addr; - break; } - } - //if all ips not match the priority_networks then print the warning log - if (!priorityCidrs.isEmpty() && !hasMatchedIp) { - LOG.error("ip address range configured for priority_networks does not include the current IP address"); - System.exit(-1); - } - // nothing found, use loopback addr - if (localAddr == null) { - localAddr = loopBack; + //if all ips not match the priority_networks then print the err log and exit + if (!hasMatchedIp) { + LOG.error("ip address range configured for priority_networks does not include the current IP address"); + System.exit(-1); + } + } else { + // if not set frontend_address, get a non-loopback ip + InetAddress loopBack = null; + for (InetAddress addr : hosts) { + if (addr.isLoopbackAddress()) { + loopBack = addr; + } else if (addr instanceof Inet4Address) { + localAddr = addr; + break; + } + } + // nothing found, use loopback addr + if (localAddr == null) { + localAddr = loopBack; + } } LOG.info("local address: {}.", localAddr); }