[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”
This commit is contained in:
zhangdong
2023-07-26 08:40:32 +08:00
committed by GitHub
parent e8f4323e0f
commit ba3a0922eb
5 changed files with 23 additions and 15 deletions

View File

@ -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 << "/";
}

View File

@ -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;

View File

@ -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();

View File

@ -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);

View File

@ -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