From bfb924853274ebdf9b1c490a2dfc09d2bf530c07 Mon Sep 17 00:00:00 2001 From: fangfengbin <869218239a@zju.edu.cn> Date: Tue, 31 Mar 2020 13:57:55 +0800 Subject: [PATCH] fix gcs server resolver error (#7822) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 灵洵 --- src/ray/gcs/gcs_server/gcs_server.cc | 29 ++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/ray/gcs/gcs_server/gcs_server.cc b/src/ray/gcs/gcs_server/gcs_server.cc index 499bba6d2..c455024f7 100644 --- a/src/ray/gcs/gcs_server/gcs_server.cc +++ b/src/ray/gcs/gcs_server/gcs_server.cc @@ -145,18 +145,27 @@ std::unique_ptr GcsServer::InitObjectInfoHandler() { void GcsServer::StoreGcsServerAddressInRedis() { boost::asio::ip::detail::endpoint primary_endpoint; boost::asio::ip::tcp::resolver resolver(main_service_); - boost::asio::ip::tcp::resolver::query query(boost::asio::ip::host_name(), ""); - boost::asio::ip::tcp::resolver::iterator iter = resolver.resolve(query); + boost::asio::ip::tcp::resolver::query query( + boost::asio::ip::host_name(), "", + boost::asio::ip::resolver_query_base::flags::v4_mapped); + boost::system::error_code error_code; + boost::asio::ip::tcp::resolver::iterator iter = resolver.resolve(query, error_code); boost::asio::ip::tcp::resolver::iterator end; // End marker. - while (iter != end) { - boost::asio::ip::tcp::endpoint ep = *iter; - if (ep.address().is_v4() && !ep.address().is_loopback() && - !ep.address().is_multicast()) { - primary_endpoint.address(ep.address()); - primary_endpoint.port(ep.port()); - break; + if (!error_code) { + while (iter != end) { + boost::asio::ip::tcp::endpoint ep = *iter; + if (ep.address().is_v4() && !ep.address().is_loopback() && + !ep.address().is_multicast()) { + primary_endpoint.address(ep.address()); + primary_endpoint.port(ep.port()); + break; + } + iter++; } - iter++; + } else { + RAY_LOG(WARNING) << "Failed to resolve ip address, error = " + << strerror(error_code.value()); + iter = end; } std::string address;