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();

Reply via email to