From 83faaee9b421f2ae0d6cb809c8a583ec765ac88d Mon Sep 17 00:00:00 2001 From: LZX <37354838+lzxddz@users.noreply.github.com> Date: Wed, 29 Oct 2025 18:56:08 +0800 Subject: [PATCH 1/5] convert tx ng configs to dss_config (#249) --- src/redis_service.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/redis_service.cpp b/src/redis_service.cpp index 7d0df170..1caa628b 100644 --- a/src/redis_service.cpp +++ b/src/redis_service.cpp @@ -1017,9 +1017,19 @@ bool RedisServiceImpl::Init(brpc::Server &brpc_server) std::filesystem::create_directories(eloq_dss_data_path); } - std::string dss_config_file_path = - eloq_dss_data_path + "/dss_config.ini"; + std::string dss_config_file_path = ""; + EloqDS::DataStoreServiceClusterManager ds_config; + uint32_t dss_leader_id = UINT32_MAX; + if (FLAGS_bootstrap || is_single_node) + { + dss_leader_id = node_id; + } + EloqDS::DataStoreServiceClient::TxConfigsToDssClusterConfig( + node_id, native_ng_id, ng_configs, dss_leader_id, ds_config); + // std::string dss_config_file_path = + // eloq_dss_data_path + "/dss_config.ini"; + /* EloqDS::DataStoreServiceClusterManager ds_config; if (std::filesystem::exists(dss_config_file_path)) { @@ -1071,6 +1081,7 @@ bool RedisServiceImpl::Init(brpc::Server &brpc_server) return false; } } + */ #if defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_S3) || \ defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_GCS) From a228f1e25e473ee3459ae0556b4ff09304043f75 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Sun, 2 Nov 2025 21:57:25 +0800 Subject: [PATCH 2/5] Introduce UNKNOWN_DSS_LEADER_NODE_ID --- src/redis_service.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/redis_service.cpp b/src/redis_service.cpp index 1caa628b..ffed6ce8 100644 --- a/src/redis_service.cpp +++ b/src/redis_service.cpp @@ -1019,13 +1019,17 @@ bool RedisServiceImpl::Init(brpc::Server &brpc_server) std::string dss_config_file_path = ""; EloqDS::DataStoreServiceClusterManager ds_config; - uint32_t dss_leader_id = UINT32_MAX; + uint32_t dss_leader_id = EloqDS::UNKNOWN_DSS_LEADER_NODE_ID; + + // use tx node id as the dss node id + // since they are deployed together + uint32_t dss_node_id = node_id; if (FLAGS_bootstrap || is_single_node) { dss_leader_id = node_id; } EloqDS::DataStoreServiceClient::TxConfigsToDssClusterConfig( - node_id, native_ng_id, ng_configs, dss_leader_id, ds_config); + dss_node_id, native_ng_id, ng_configs, dss_leader_id, ds_config); // std::string dss_config_file_path = // eloq_dss_data_path + "/dss_config.ini"; @@ -1115,7 +1119,7 @@ bool RedisServiceImpl::Init(brpc::Server &brpc_server) // Start data store service. (Also create datastore in StartService() if // needed) bool ret = data_store_service_->StartService( - (FLAGS_bootstrap || is_single_node)); + (FLAGS_bootstrap || is_single_node), dss_leader_id, dss_node_id); if (!ret) { LOG(ERROR) << "Failed to start data store service"; @@ -1132,7 +1136,9 @@ bool RedisServiceImpl::Init(brpc::Server &brpc_server) store_hd_->AppendPreBuiltTable(table_name); } - if (!store_hd_->Connect()) + // do connect only when this is bootstrap or single node + // otherwise, connect when become leader or follower + if ((FLAGS_bootstrap || is_single_node) && !store_hd_->Connect()) { LOG(ERROR) << "!!!!!!!! Failed to connect to kvstore, startup is " "terminated !!!!!!!!"; From 8c2679c97dd64881d6d3871904089bb9ab7d5848 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Mon, 3 Nov 2025 17:32:49 +0800 Subject: [PATCH 3/5] Update store_handler --- store_handler | 2 +- tx_service | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/store_handler b/store_handler index 62e17d3b..e8d20880 160000 --- a/store_handler +++ b/store_handler @@ -1 +1 @@ -Subproject commit 62e17d3b8c8c4095d094b66351fdd7dec3a4f4d4 +Subproject commit e8d20880a16152f7cf9332d4d572d169ac7eca33 diff --git a/tx_service b/tx_service index f3f89e6e..4889d95c 160000 --- a/tx_service +++ b/tx_service @@ -1 +1 @@ -Subproject commit f3f89e6e6d9a4c8dca6ceed4b6058848ab256597 +Subproject commit 4889d95c481ea63e68b6d56163fdac047cdd9eab From 49de4ff6d655ab7b533bb4155216a2d9cffbb224 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Mon, 3 Nov 2025 19:06:23 +0800 Subject: [PATCH 4/5] Fix bug if eloq_dss_peer_node is not empty --- src/redis_service.cpp | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/redis_service.cpp b/src/redis_service.cpp index ffed6ce8..ba670868 100644 --- a/src/redis_service.cpp +++ b/src/redis_service.cpp @@ -1028,8 +1028,30 @@ bool RedisServiceImpl::Init(brpc::Server &brpc_server) { dss_leader_id = node_id; } - EloqDS::DataStoreServiceClient::TxConfigsToDssClusterConfig( - dss_node_id, native_ng_id, ng_configs, dss_leader_id, ds_config); + + if (!eloq_dss_peer_node.empty()) + { + ds_config.SetThisNode( + local_ip, + EloqDS::DataStoreServiceClient::TxPort2DssPort(local_tx_port)); + // Fetch ds topology from peer node + if (!EloqDS::DataStoreService::FetchConfigFromPeer( + eloq_dss_peer_node, ds_config)) + { + LOG(ERROR) << "Failed to fetch config from peer node: " + << eloq_dss_peer_node; + return false; + } + } + else + { + EloqDS::DataStoreServiceClient::TxConfigsToDssClusterConfig( + dss_node_id, + native_ng_id, + ng_configs, + dss_leader_id, + ds_config); + } // std::string dss_config_file_path = // eloq_dss_data_path + "/dss_config.ini"; From 167fd89c5b2101a48847b28fa2135a7e7b450499 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Tue, 4 Nov 2025 13:22:49 +0800 Subject: [PATCH 5/5] Update store_handler and tx_service --- store_handler | 2 +- tx_service | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/store_handler b/store_handler index e8d20880..1a8e912f 160000 --- a/store_handler +++ b/store_handler @@ -1 +1 @@ -Subproject commit e8d20880a16152f7cf9332d4d572d169ac7eca33 +Subproject commit 1a8e912fdc943d46b181f1449839bd7785ea4ccd diff --git a/tx_service b/tx_service index 4889d95c..07caff38 160000 --- a/tx_service +++ b/tx_service @@ -1 +1 @@ -Subproject commit 4889d95c481ea63e68b6d56163fdac047cdd9eab +Subproject commit 07caff38833bfaba7fd52fc12537e102207b9cc3