This is an automated email from the ASF dual-hosted git repository. doleyzi pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/inlong.git
The following commit(s) were added to refs/heads/master by this push: new 29612cd81a [INLONG-10799][SDK] Support fork child process for DataProxy CPP SDK (#10800) 29612cd81a is described below commit 29612cd81a0d3ed0ac9633a0ede74d730db39bfc Author: doleyzi <43397300+dole...@users.noreply.github.com> AuthorDate: Fri Aug 16 13:18:34 2024 +0800 [INLONG-10799][SDK] Support fork child process for DataProxy CPP SDK (#10800) --- .../dataproxy-sdk-cpp/src/config/sdk_conf.cc | 6 ++++-- .../dataproxy-sdk-cpp/src/config/sdk_conf.h | 4 +--- .../dataproxy-sdk-cpp/src/manager/proxy_manager.cc | 10 +++++----- .../dataproxy-sdk-cpp/src/manager/proxy_manager.h | 6 ++++-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/config/sdk_conf.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/config/sdk_conf.cc index 68cc122c4c..edbc075a67 100644 --- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/config/sdk_conf.cc +++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/config/sdk_conf.cc @@ -28,8 +28,10 @@ #include "../utils/utils.h" namespace inlong { -SdkConfig *SdkConfig::instance_ = new SdkConfig(); -SdkConfig *SdkConfig::getInstance() { return SdkConfig::instance_; } +SdkConfig *SdkConfig::getInstance() { + static SdkConfig instance; + return &instance; +} bool SdkConfig::ParseConfig(const std::string &config_path) { // Ensure the data consistency of each sdk instance diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/config/sdk_conf.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/config/sdk_conf.h index f8581a1198..3f46b1a0f4 100644 --- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/config/sdk_conf.h +++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/config/sdk_conf.h @@ -29,7 +29,6 @@ namespace inlong { class SdkConfig { private: - static SdkConfig *instance_; std::string config_path_; std::mutex mutex_; void InitThreadParam(const rapidjson::Value &doc); @@ -41,6 +40,7 @@ private: void InitAuthParm(const rapidjson::Value &doc); void OthersParam(const rapidjson::Value &doc); bool GetLocalIPV4Address(std::string& err_info, std::string& localhost); + SdkConfig() { defaultInit(); }; public: // cache parameter @@ -116,8 +116,6 @@ private: void defaultInit(); static SdkConfig *getInstance(); - SdkConfig() { defaultInit(); } - bool ParseConfig(const std::string &config_path); void ShowClientConfig(); diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/manager/proxy_manager.cc b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/manager/proxy_manager.cc index e3771db99e..e4aef239e4 100644 --- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/manager/proxy_manager.cc +++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/manager/proxy_manager.cc @@ -28,17 +28,17 @@ namespace inlong { const uint64_t MINUTE = 60000; -ProxyManager *ProxyManager::instance_ = new ProxyManager(); ProxyManager::~ProxyManager() { - if (update_conf_thread_.joinable()) { - update_conf_thread_.join(); - } - + LOG_INFO("~ProxyManager"); exit_flag_ = true; std::unique_lock<std::mutex> con_lck(cond_mutex_); update_flag_ = true; con_lck.unlock(); cond_.notify_one(); + + if (update_conf_thread_.joinable()) { + update_conf_thread_.join(); + } } void ProxyManager::Init() { timeout_ = SdkConfig::getInstance()->manager_url_timeout_; diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/manager/proxy_manager.h b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/manager/proxy_manager.h index f07333c989..3cd3e5491f 100644 --- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/manager/proxy_manager.h +++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/manager/proxy_manager.h @@ -29,7 +29,6 @@ namespace inlong { class ProxyManager { private: - static ProxyManager *instance_; uint32_t timeout_; read_write_mutex groupid_2_cluster_id_rwmutex_; read_write_mutex groupid_2_proxy_map_rwmutex_; @@ -59,7 +58,10 @@ private: public: ProxyManager(){}; ~ProxyManager(); - static ProxyManager *GetInstance() { return instance_; } + static ProxyManager *GetInstance() { + static ProxyManager instance; + return &instance; + } int32_t CheckBidConf(const std::string &inlong_group_id, bool is_inited); void Update(); void DoUpdate();