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

yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new ba3a0922eb [fix](ipv6)Support IPV6 (#22219)
ba3a0922eb is described below

commit ba3a0922ebb605f345dcf4dc35608d0ef0e64d14
Author: zhangdong <[email protected]>
AuthorDate: Wed Jul 26 08:40:32 2023 +0800

    [fix](ipv6)Support IPV6 (#22219)
    
    fe:Remove restrictions from IPv4
    be: thrift server Specify binding address
    be: Restore changed code of “be/src/olap/task/engine_clone_task.cpp”
---
 be/src/olap/task/engine_clone_task.cpp                |  4 ++--
 be/src/service/backend_options.cpp                    |  7 +++++++
 be/src/service/backend_options.h                      |  1 +
 be/src/util/thrift_server.cpp                         |  7 +++++--
 .../org/apache/doris/service/FrontendOptions.java     | 19 ++++++++-----------
 5 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/be/src/olap/task/engine_clone_task.cpp 
b/be/src/olap/task/engine_clone_task.cpp
index 5e9f02755c..1f1c04ec70 100644
--- a/be/src/olap/task/engine_clone_task.cpp
+++ b/be/src/olap/task/engine_clone_task.cpp
@@ -302,11 +302,11 @@ Status 
EngineCloneTask::_make_and_download_snapshots(DataDir& data_dir,
             // concat tablet_id and schema hash here.
             std::stringstream ss;
             if (snapshot_path->back() == '/') {
-                ss << "http://"; << src.host << ":" << src.http_port << 
HTTP_REQUEST_PREFIX
+                ss << "http://"; << get_host_port(src.host, src.http_port) << 
HTTP_REQUEST_PREFIX
                    << HTTP_REQUEST_TOKEN_PARAM << token << 
HTTP_REQUEST_FILE_PARAM << *snapshot_path
                    << _clone_req.tablet_id << "/" << _clone_req.schema_hash << 
"/";
             } else {
-                ss << "http://"; << src.host << ":" << src.http_port << 
HTTP_REQUEST_PREFIX
+                ss << "http://"; << get_host_port(src.host, src.http_port) << 
HTTP_REQUEST_PREFIX
                    << HTTP_REQUEST_TOKEN_PARAM << token << 
HTTP_REQUEST_FILE_PARAM << *snapshot_path
                    << "/" << _clone_req.tablet_id << "/" << 
_clone_req.schema_hash << "/";
             }
diff --git a/be/src/service/backend_options.cpp 
b/be/src/service/backend_options.cpp
index 45e34b5af2..20f4e68c76 100644
--- a/be/src/service/backend_options.cpp
+++ b/be/src/service/backend_options.cpp
@@ -111,6 +111,13 @@ const char* BackendOptions::get_service_bind_address() {
     return _service_bind_address;
 }
 
+const char* BackendOptions::get_service_bind_address_without_bracket() {
+    if (_bind_ipv6) {
+        return "::0";
+    }
+    return _service_bind_address;
+}
+
 bool BackendOptions::analyze_priority_cidrs() {
     if (config::priority_networks == "") {
         return true;
diff --git a/be/src/service/backend_options.h b/be/src/service/backend_options.h
index 3e52c69e40..3aff934036 100644
--- a/be/src/service/backend_options.h
+++ b/be/src/service/backend_options.h
@@ -36,6 +36,7 @@ public:
     static void set_localhost(const std::string& host);
     static bool is_bind_ipv6();
     static const char* get_service_bind_address();
+    static const char* get_service_bind_address_without_bracket();
 
 private:
     static bool analyze_priority_cidrs();
diff --git a/be/src/util/thrift_server.cpp b/be/src/util/thrift_server.cpp
index 335a44a367..88e71d16c7 100644
--- a/be/src/util/thrift_server.cpp
+++ b/be/src/util/thrift_server.cpp
@@ -38,6 +38,7 @@
 #include <sstream>
 #include <thread>
 
+#include "service/backend_options.h"
 #include "util/doris_metrics.h"
 
 namespace apache {
@@ -332,7 +333,8 @@ Status ThriftServer::start() {
         break;
 
     case THREAD_POOL:
-        fe_server_transport.reset(new 
apache::thrift::transport::TServerSocket(_port));
+        fe_server_transport.reset(new apache::thrift::transport::TServerSocket(
+                BackendOptions::get_service_bind_address_without_bracket(), 
_port));
 
         if (transport_factory.get() == nullptr) {
             transport_factory.reset(new 
apache::thrift::transport::TBufferedTransportFactory());
@@ -343,7 +345,8 @@ Status ThriftServer::start() {
         break;
 
     case THREADED:
-        server_socket = new apache::thrift::transport::TServerSocket(_port);
+        server_socket = new apache::thrift::transport::TServerSocket(
+                BackendOptions::get_service_bind_address_without_bracket(), 
_port);
         //      server_socket->setAcceptTimeout(500);
         fe_server_transport.reset(server_socket);
 
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 ac715a707f..bad90822f6 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,7 +27,6 @@ import com.google.common.net.InetAddresses;
 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;
@@ -67,19 +66,17 @@ public class FrontendOptions {
         boolean hasMatchedIp = false;
         for (InetAddress addr : hosts) {
             LOG.debug("check ip address: {}", addr);
-            if (addr instanceof Inet4Address) {
-                if (addr.isLoopbackAddress()) {
-                    loopBack = addr;
-                } else if (!priorityCidrs.isEmpty()) {
-                    if (isInPriorNetwork(addr.getHostAddress())) {
-                        localAddr = addr;
-                        hasMatchedIp = true;
-                        break;
-                    }
-                } else {
+            if (addr.isLoopbackAddress()) {
+                loopBack = addr;
+            } else if (!priorityCidrs.isEmpty()) {
+                if (isInPriorNetwork(addr.getHostAddress())) {
                     localAddr = addr;
+                    hasMatchedIp = true;
                     break;
                 }
+            } else {
+                localAddr = addr;
+                break;
             }
         }
         //if all ips not match the priority_networks then print the warning log


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to