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 #include +#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