Skip to content

Commit 26624b8

Browse files
refine
1 parent b3e060e commit 26624b8

2 files changed

Lines changed: 12 additions & 25 deletions

File tree

include/pingcap/kv/Rpc.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ struct RpcClient
5151
std::chrono::minutes scan_interval = rpc_conn_check_interval;
5252
std::atomic<bool> stopped = false;
5353
std::condition_variable scan_cv;
54-
std::vector<std::string> invalid_conns;
5554

5655
RpcClient() = default;
5756

@@ -66,22 +65,19 @@ struct RpcClient
6665

6766
void update(const ClusterConfig & config_)
6867
{
69-
std::lock_guard<std::mutex> lk(mutex);
68+
std::unique_lock lk(mutex);
7069
config = config_;
7170
conns.clear();
72-
invalid_conns.clear();
7371
}
7472

7573
void run();
7674

7775
void stop();
7876

79-
void scanConns();
77+
void scanAndRemoveInvalidConns();
8078

8179
void removeConn(const std::string & addr);
8280

83-
void removeInvalidConns();
84-
8581
ConnArrayPtr getConnArray(const std::string & addr);
8682

8783
ConnArrayPtr createConnArray(const std::string & addr);

src/kv/Rpc.cc

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,7 @@ void RpcClient::run()
7070

7171
try
7272
{
73-
scanConns();
74-
removeInvalidConns();
73+
scanAndRemoveInvalidConns();
7574
}
7675
catch (...)
7776
{
@@ -86,7 +85,7 @@ void RpcClient::stop()
8685
scan_cv.notify_all();
8786
}
8887

89-
void RpcClient::scanConns()
88+
void RpcClient::scanAndRemoveInvalidConns()
9089
{
9190
std::vector<std::string> conn_snapshot;
9291
{
@@ -100,35 +99,27 @@ void RpcClient::scanConns()
10099
return;
101100

102101
const auto store_addrs = getStoreAddresses(pd_client);
103-
104-
std::lock_guard<std::mutex> lock(mutex);
102+
std::vector<std::string> invalid_conns;
105103
for (const auto & addr : conn_snapshot)
106104
{
107105
if (store_addrs.find(addr) == store_addrs.end())
108106
invalid_conns.push_back(addr);
109107
}
110-
}
111-
112-
void RpcClient::removeConn(const std::string & addr)
113-
{
114-
std::lock_guard<std::mutex> lock(mutex);
115-
if (conns.erase(addr))
116-
log->information("delete invalid addr: " + addr);
117-
}
118108

119-
void RpcClient::removeInvalidConns()
120-
{
121-
std::lock_guard<std::mutex> lock(mutex);
122109
if (invalid_conns.empty())
123110
return;
124111

125112
for (const auto & addr : invalid_conns)
126113
{
127-
if (conns.erase(addr))
128-
log->information("delete invalid addr: " + addr);
114+
removeConn(addr);
129115
}
116+
}
130117

131-
invalid_conns.clear();
118+
void RpcClient::removeConn(const std::string & addr)
119+
{
120+
std::lock_guard<std::mutex> lock(mutex);
121+
if (conns.erase(addr))
122+
log->information("delete invalid addr: " + addr);
132123
}
133124

134125
ConnArrayPtr RpcClient::getConnArray(const std::string & addr)

0 commit comments

Comments
 (0)