From 5005b7beb6e30229c787abecab962ce12dff58c0 Mon Sep 17 00:00:00 2001 From: Wenjun Si Date: Tue, 26 Jan 2021 22:23:46 +0800 Subject: [PATCH] Create a new TcpSocket when connection failed (#3840) --- src/network/linkers_socket.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/network/linkers_socket.cpp b/src/network/linkers_socket.cpp index fff933b57246..4e9c374316cf 100644 --- a/src/network/linkers_socket.cpp +++ b/src/network/linkers_socket.cpp @@ -197,20 +197,21 @@ void Linkers::Construct() { int out_rank = it->first; // let smaller rank connect to larger rank if (out_rank > rank_) { - TcpSocket cur_socket; int connect_fail_delay_time = connect_fail_retry_first_delay_interval; for (int i = 0; i < connect_fail_retry_cnt; ++i) { + TcpSocket cur_socket; if (cur_socket.Connect(client_ips_[out_rank].c_str(), client_ports_[out_rank])) { + // send local rank + cur_socket.Send(reinterpret_cast(&rank_), sizeof(rank_)); + SetLinker(out_rank, cur_socket); break; } else { Log::Warning("Connecting to rank %d failed, waiting for %d milliseconds", out_rank, connect_fail_delay_time); + cur_socket.Close(); std::this_thread::sleep_for(std::chrono::milliseconds(connect_fail_delay_time)); connect_fail_delay_time = static_cast(connect_fail_delay_time * connect_fail_retry_delay_factor); } } - // send local rank - cur_socket.Send(reinterpret_cast(&rank_), sizeof(rank_)); - SetLinker(out_rank, cur_socket); } } // wait for listener