You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tubemq.apache.org by do...@apache.org on 2020/09/16 03:02:43 UTC
[incubator-tubemq] branch master updated: [TUBEMQ-354]Found a dns
translate bug in C/C++ sdk (#267)
This is an automated email from the ASF dual-hosted git repository.
dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-tubemq.git
The following commit(s) were added to refs/heads/master by this push:
new c04065a [TUBEMQ-354]Found a dns translate bug in C/C++ sdk (#267)
c04065a is described below
commit c04065ae4164bce5ffa66787fe0d21ec42301d75
Author: gosonzhang <46...@qq.com>
AuthorDate: Wed Sep 16 11:02:34 2020 +0800
[TUBEMQ-354]Found a dns translate bug in C/C++ sdk (#267)
Co-authored-by: gosonzhang <go...@tencent.com>
---
.../tubemq-client-cpp/src/client_service.cc | 29 ++++++++++------------
.../tubemq-client-cpp/src/tubemq_config.cc | 2 +-
2 files changed, 14 insertions(+), 17 deletions(-)
diff --git a/tubemq-client-twins/tubemq-client-cpp/src/client_service.cc b/tubemq-client-twins/tubemq-client-cpp/src/client_service.cc
index c6e0aaa..18c21bb 100644
--- a/tubemq-client-twins/tubemq-client-cpp/src/client_service.cc
+++ b/tubemq-client-twins/tubemq-client-cpp/src/client_service.cc
@@ -207,21 +207,22 @@ void TubeMQService::shutDownClinets() const {
bool TubeMQService::AddMasterAddress(string& err_info, const string& master_info) {
map<string, int32_t>::iterator it;
map<string, int32_t> tmp_addr_map;
+ map<string, int32_t> new_addr_map;
Utils::Split(master_info, tmp_addr_map, delimiter::kDelimiterComma, delimiter::kDelimiterColon);
if (tmp_addr_map.empty()) {
err_info = "Illegal parameter: master_info is blank!";
return false;
}
- for (it = tmp_addr_map.begin(); it != tmp_addr_map.end();) {
- if (!Utils::NeedDnsXfs(it->first)) {
- tmp_addr_map.erase(it++);
+ for (it = tmp_addr_map.begin(); it != tmp_addr_map.end(); ++it) {
+ if (Utils::NeedDnsXfs(it->first)) {
+ new_addr_map[it->first] = it->second;
}
}
- if (tmp_addr_map.empty()) {
+ if (new_addr_map.empty()) {
err_info = "Ok";
return true;
}
- if (addNeedDnsXfsAddr(tmp_addr_map)) {
+ if (addNeedDnsXfsAddr(new_addr_map)) {
updMasterAddrByDns();
}
err_info = "Ok";
@@ -230,7 +231,7 @@ bool TubeMQService::AddMasterAddress(string& err_info, const string& master_info
void TubeMQService::GetXfsMasterAddress(const string& source, string& target) {
target = source;
- lock_guard<mutex> lck(mutex_);
+ lock_guard<mutex> lck(dns_mutex_);
if (master_source_.find(source) != master_source_.end()) {
target = master_target_[source];
}
@@ -252,7 +253,7 @@ void TubeMQService::thread_task_dnsxfs(int dns_xfs_period_ms) {
}
bool TubeMQService::hasXfsTask(map<string, int32_t>& src_addr_map) {
- lock_guard<mutex> lck(mutex_);
+ lock_guard<mutex> lck(dns_mutex_);
if (!master_source_.empty()) {
src_addr_map = master_source_;
return true;
@@ -264,7 +265,7 @@ bool TubeMQService::addNeedDnsXfsAddr(map<string, int32_t>& src_addr_map) {
bool added = false;
map<string, int32_t>::iterator it;
if (!src_addr_map.empty()) {
- lock_guard<mutex> lck(mutex_);
+ lock_guard<mutex> lck(dns_mutex_);
for (it = src_addr_map.begin(); it != src_addr_map.end(); it++) {
if (master_source_.find(it->first) == master_source_.end()) {
added = true;
@@ -278,18 +279,14 @@ bool TubeMQService::addNeedDnsXfsAddr(map<string, int32_t>& src_addr_map) {
void TubeMQService::updMasterAddrByDns() {
map<string, int32_t> tmp_src_addr_map;
map<string, string> tmp_tgt_addr_map;
- map<string, int32_t>::iterator it;
+ map<string, string>::iterator it;
if (!hasXfsTask(tmp_src_addr_map)) {
return;
}
Utils::XfsAddrByDns(tmp_src_addr_map, tmp_tgt_addr_map);
- lock_guard<mutex> lck(mutex_);
- if (tmp_tgt_addr_map.empty()) {
- for (it = tmp_src_addr_map.begin(); it != tmp_src_addr_map.end(); it++) {
- master_target_[it->first] = it->first;
- }
- } else {
- master_target_ = tmp_tgt_addr_map;
+ lock_guard<mutex> lck(dns_mutex_);
+ for (it = tmp_tgt_addr_map.begin(); it != tmp_tgt_addr_map.end(); it++) {
+ master_target_[it->first] = it->second;
}
}
diff --git a/tubemq-client-twins/tubemq-client-cpp/src/tubemq_config.cc b/tubemq-client-twins/tubemq-client-cpp/src/tubemq_config.cc
index a2534ff..fac11b8 100644
--- a/tubemq-client-twins/tubemq-client-cpp/src/tubemq_config.cc
+++ b/tubemq-client-twins/tubemq-client-cpp/src/tubemq_config.cc
@@ -88,7 +88,7 @@ bool BaseConfig::SetMasterAddrInfo(string& err_info, const string& master_addrin
Utils::Split(master_addrinfo, tgt_address_map, delimiter::kDelimiterComma,
delimiter::kDelimiterColon);
if (tgt_address_map.empty()) {
- err_info = "Illegal parameter: master_addrinfo is blank!";
+ err_info = "Illegal parameter: unrecognized master_addrinfo address information!";
return false;
}
master_addrinfo_ = trimed_master_addr_info;