From ba9f089580915054c840bb3804aac7be40b554e3 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Fri, 6 Mar 2026 15:32:18 +0800 Subject: [PATCH 01/33] Initial commit --- core/src/storage_init.cpp | 1 + .../eloq_store_config.h | 6 ++ .../eloq_store_data_store.cpp | 99 ++++++++++++++----- .../eloq_store_data_store.h | 7 +- .../eloq_data_store_service/main.cpp | 1 + 5 files changed, 91 insertions(+), 23 deletions(-) diff --git a/core/src/storage_init.cpp b/core/src/storage_init.cpp index 965bbc8e..4ba72adc 100644 --- a/core/src/storage_init.cpp +++ b/core/src/storage_init.cpp @@ -293,6 +293,7 @@ bool DataSubstrate::InitializeStorageHandler(const INIReader &config_reader) eloq_dss_data_path, core_config_.node_memory_limit_mb, core_config_.core_num); + eloq_store_config.branch_name_ = FLAGS_eloq_dss_branch_name; auto ds_factory = std::make_unique( std::move(eloq_store_config)); #endif diff --git a/store_handler/eloq_data_store_service/eloq_store_config.h b/store_handler/eloq_data_store_service/eloq_store_config.h index ae14769e..0e01a64c 100644 --- a/store_handler/eloq_data_store_service/eloq_store_config.h +++ b/store_handler/eloq_data_store_service/eloq_store_config.h @@ -44,5 +44,11 @@ struct EloqStoreConfig std::vector &storage_path_vector); ::eloqstore::KvOptions eloqstore_configs_{}; + + // Branch name passed to EloqStore::Start(). Populated from + // FLAGS_eloq_dss_branch_name by the caller before the factory is + // constructed. Defaults to "main" so that code paths that never set this + // field (e.g. unit tests) still work. + std::string branch_name_{"main"}; }; } // namespace EloqDS diff --git a/store_handler/eloq_data_store_service/eloq_store_data_store.cpp b/store_handler/eloq_data_store_service/eloq_store_data_store.cpp index 77bc17a0..d1cc2508 100644 --- a/store_handler/eloq_data_store_service/eloq_store_data_store.cpp +++ b/store_handler/eloq_data_store_service/eloq_store_data_store.cpp @@ -19,14 +19,18 @@ * . * */ -#include "eloq_store_data_store.h" - #include #include #include #include +#include +#include +#include + +#include "common.h" +#include "eloq_store_data_store.h" #include "eloq_store_data_store_factory.h" #include "internal_request.h" @@ -91,6 +95,7 @@ EloqStoreDataStore::EloqStoreDataStore(uint32_t shard_id, assert(factory != nullptr); ::eloqstore::KvOptions opts = factory->eloq_store_configs_.eloqstore_configs_; + branch_name_ = factory->eloq_store_configs_.branch_name_; DLOG(INFO) << "Create EloqStore storage with workers: " << opts.num_threads << ", store path: " << opts.store_path.front() << ", open files limit: " << opts.fd_limit @@ -589,30 +594,80 @@ void EloqStoreDataStore::CreateSnapshotForBackup( { PoolableGuard req_guard(req); - ::eloqstore::GlobalArchiveRequest global_archive_req; - global_archive_req.SetSnapshotTimestamp(req->GetBackupTs()); - eloq_store_service_->ExecSync(&global_archive_req); + std::string_view backup_name = req->GetBackupName(); - ::EloqDS::remote::DataStoreError ds_error; - std::string error_msg; - switch (global_archive_req.Error()) + if (backup_name.empty() || backup_name == eloq_store_service_->Branch()) { - case ::eloqstore::KvError::NoError: - ds_error = ::EloqDS::remote::DataStoreError::NO_ERROR; - break; - case ::eloqstore::KvError::NotRunning: - ds_error = ::EloqDS::remote::DataStoreError::DB_NOT_OPEN; - error_msg = "EloqStore not running"; - break; - default: - ds_error = ::EloqDS::remote::DataStoreError::CREATE_SNAPSHOT_ERROR; - error_msg = - "Snapshot failed with error code: " + - std::to_string(static_cast(global_archive_req.Error())); - break; + // If backup_name is empty or matches the current branch, create + // snapshot for current branch. + assert(req->GetBackupTs() != 0); + ::eloqstore::GlobalArchiveRequest global_archive_req; + global_archive_req.SetSnapshotTimestamp(req->GetBackupTs()); + eloq_store_service_->ExecSync(&global_archive_req); + + ::EloqDS::remote::DataStoreError ds_error; + std::string error_msg; + switch (global_archive_req.Error()) + { + case ::eloqstore::KvError::NoError: + ds_error = ::EloqDS::remote::DataStoreError::NO_ERROR; + req->AddBackupFile(::eloqstore::BranchArchiveName( + eloq_store_service_->Branch(), + eloq_store_service_->Term(), + req->GetBackupTs())); + break; + case ::eloqstore::KvError::NotRunning: + ds_error = ::EloqDS::remote::DataStoreError::DB_NOT_OPEN; + error_msg = "EloqStore not running"; + break; + default: + ds_error = ::EloqDS::remote::DataStoreError::CREATE_SNAPSHOT_ERROR; + error_msg = + "Snapshot failed with error code: " + + std::to_string(static_cast(global_archive_req.Error())); + break; + } + + req->SetFinish(ds_error, error_msg); } + else + { + // backup_name differs from the current branch — create a new branch + // forked from the current branch. Use backup_ts as the salt so the + // internal filename is deterministic and correlated with the backup + // timestamp. + assert(req->GetBackupTs() != 0); + ::eloqstore::GlobalCreateBranchRequest create_branch_req; + create_branch_req.SetArgs(std::string(backup_name), + std::string(eloq_store_service_->Branch())); + create_branch_req.SetSaltTimestamp(req->GetBackupTs()); + eloq_store_service_->ExecSync(&create_branch_req); + + ::EloqDS::remote::DataStoreError ds_error; + std::string error_msg; + switch (create_branch_req.Error()) + { + case ::eloqstore::KvError::NoError: + ds_error = ::EloqDS::remote::DataStoreError::NO_ERROR; + break; + case ::eloqstore::KvError::NotRunning: + ds_error = ::EloqDS::remote::DataStoreError::DB_NOT_OPEN; + error_msg = "EloqStore not running"; + break; + case ::eloqstore::KvError::InvalidArgs: + ds_error = ::EloqDS::remote::DataStoreError::CREATE_SNAPSHOT_ERROR; + error_msg = "Invalid branch name: " + std::string(backup_name); + break; + default: + ds_error = ::EloqDS::remote::DataStoreError::CREATE_SNAPSHOT_ERROR; + error_msg = + "Create branch failed with error code: " + + std::to_string(static_cast(create_branch_req.Error())); + break; + } - req->SetFinish(ds_error, error_msg); + req->SetFinish(ds_error, error_msg); + } } void EloqStoreDataStore::ScanDelete(DeleteRangeRequest *delete_range_req) diff --git a/store_handler/eloq_data_store_service/eloq_store_data_store.h b/store_handler/eloq_data_store_service/eloq_store_data_store.h index 6dcd23b3..8f0bd300 100644 --- a/store_handler/eloq_data_store_service/eloq_store_data_store.h +++ b/store_handler/eloq_data_store_service/eloq_store_data_store.h @@ -173,7 +173,8 @@ class EloqStoreDataStore : public DataStore bool StartDB(int64_t term) override { - ::eloqstore::KvError res = eloq_store_service_->Start(term); + ::eloqstore::KvError res = + eloq_store_service_->Start(branch_name_, term); if (res != ::eloqstore::KvError::NoError) { LOG(ERROR) << "EloqStore start failed with error code: " @@ -270,5 +271,9 @@ class EloqStoreDataStore : public DataStore void Floor(ScanRequest *scan_req); std::unique_ptr<::eloqstore::EloqStore> eloq_store_service_{nullptr}; + + // Branch name passed to EloqStore::Start(). Populated from the factory + // config in the EloqStoreDataStore constructor. + std::string branch_name_{"main"}; }; } // namespace EloqDS diff --git a/store_handler/eloq_data_store_service/main.cpp b/store_handler/eloq_data_store_service/main.cpp index 3123e7fb..2eaafe9d 100644 --- a/store_handler/eloq_data_store_service/main.cpp +++ b/store_handler/eloq_data_store_service/main.cpp @@ -327,6 +327,7 @@ int main(int argc, char *argv[]) uint32_t unused_core_number = 0; EloqDS::EloqStoreConfig eloq_store_config( config_reader, data_path, mem_mib, unused_core_number, true); + eloq_store_config.branch_name_ = FLAGS_eloq_dss_branch_name; #ifdef ELOQ_MODULE_ENABLED GFLAGS_NAMESPACE::SetCommandLineOption( From f2af152915f2c73f5ddf43f7a2b4e8dcc4f04ec2 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Sun, 8 Mar 2026 15:52:29 +0800 Subject: [PATCH 02/33] fix: remove assert(!dest_path.empty()) in CreateBackup for cloud mode In cloud/shared-storage mode CreateClusterBackup does not supply a dest_path because the snapshot is written directly to object storage (no rsync transfer is needed). The assertion fired for every cloud backup request, causing a SIGABRT crash. Replace with a comment explaining the expected behaviour. --- tx_service/src/remote/cc_node_service.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tx_service/src/remote/cc_node_service.cpp b/tx_service/src/remote/cc_node_service.cpp index 123cd440..0eeacb76 100644 --- a/tx_service/src/remote/cc_node_service.cpp +++ b/tx_service/src/remote/cc_node_service.cpp @@ -1910,7 +1910,8 @@ void CcNodeService::CreateBackup( assert(store_hd != nullptr); if (store_hd && !request->backup_name().empty()) { - assert(!request->dest_path().empty()); + // dest_path may be empty for cloud/shared-storage mode where the + // snapshot is written directly to cloud (no rsync transfer needed). auto st = store::SnapshotManager::Instance().CreateBackup(request); response->set_status(st); if (st == BackupTaskStatus::Finished) From 995cbbf48ea67f619042cfcaaa2afef80d712ba6 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Sun, 8 Mar 2026 15:52:39 +0800 Subject: [PATCH 03/33] chore: change default eloq_dss_branch_name from "development" to "main" "main" is the canonical production branch name in eloqstore; using "development" as the default was misleading. --- core/src/storage_init.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/storage_init.cpp b/core/src/storage_init.cpp index 4ba72adc..ec7f0c97 100644 --- a/core/src/storage_init.cpp +++ b/core/src/storage_init.cpp @@ -84,7 +84,7 @@ DEFINE_string(eloq_dss_peer_node, "EloqDataStoreService peer node address. Used to fetch eloq-dss " "topology from a working eloq-dss server."); DEFINE_string(eloq_dss_branch_name, - "development", + "main", "Branch name of EloqDataStore"); DEFINE_string(eloq_dss_config_file_path, "", From 85391a28e37ebe153a8abd1ba9f08829f76968a2 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Sun, 8 Mar 2026 21:56:04 +0800 Subject: [PATCH 04/33] feat: read eloq_dss_branch_name from ini config file Add INIReader support for eloq_dss_branch_name so it can be set in the [store] section of the config file, consistent with other store flags. Command-line flag still takes precedence over the config file value. --- core/src/storage_init.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/src/storage_init.cpp b/core/src/storage_init.cpp index ec7f0c97..ba2e7357 100644 --- a/core/src/storage_init.cpp +++ b/core/src/storage_init.cpp @@ -277,7 +277,11 @@ bool DataSubstrate::InitializeStorageHandler(const INIReader &config_reader) defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_GCS) EloqDS::RocksDBConfig rocksdb_config(config_reader, eloq_dss_data_path); EloqDS::RocksDBCloudConfig rocksdb_cloud_config(config_reader); - rocksdb_cloud_config.branch_name_ = FLAGS_eloq_dss_branch_name; + rocksdb_cloud_config.branch_name_ = + !CheckCommandLineFlagIsDefault("eloq_dss_branch_name") + ? FLAGS_eloq_dss_branch_name + : config_reader.GetString( + "store", "eloq_dss_branch_name", FLAGS_eloq_dss_branch_name); auto ds_factory = std::make_unique( rocksdb_config, rocksdb_cloud_config, @@ -293,7 +297,11 @@ bool DataSubstrate::InitializeStorageHandler(const INIReader &config_reader) eloq_dss_data_path, core_config_.node_memory_limit_mb, core_config_.core_num); - eloq_store_config.branch_name_ = FLAGS_eloq_dss_branch_name; + eloq_store_config.branch_name_ = + !CheckCommandLineFlagIsDefault("eloq_dss_branch_name") + ? FLAGS_eloq_dss_branch_name + : config_reader.GetString( + "store", "eloq_dss_branch_name", FLAGS_eloq_dss_branch_name); auto ds_factory = std::make_unique( std::move(eloq_store_config)); #endif From cdbf2be97d24d77af6a5eadeaa8dd5517c4668bc Mon Sep 17 00:00:00 2001 From: githubzilla Date: Sun, 8 Mar 2026 22:32:01 +0800 Subject: [PATCH 05/33] feat: read eloq_dss_branch_name from ini config file in eloq_dss main Apply the same CheckCommandLineFlagIsDefault + INIReader pattern as storage_init.cpp so eloq_dss_branch_name can be set via the [local] section of the DSS config file. Command-line flag still takes precedence. --- store_handler/eloq_data_store_service/main.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/store_handler/eloq_data_store_service/main.cpp b/store_handler/eloq_data_store_service/main.cpp index 2eaafe9d..3c5d8315 100644 --- a/store_handler/eloq_data_store_service/main.cpp +++ b/store_handler/eloq_data_store_service/main.cpp @@ -303,7 +303,11 @@ int main(int argc, char *argv[]) // INIReader config_reader(nullptr, 0); EloqDS::RocksDBConfig rocksdb_config(config_reader, data_path); EloqDS::RocksDBCloudConfig rocksdb_cloud_config(config_reader); - rocksdb_cloud_config.branch_name_ = FLAGS_eloq_dss_branch_name; + rocksdb_cloud_config.branch_name_ = + !CheckCommandLineFlagIsDefault("eloq_dss_branch_name") + ? FLAGS_eloq_dss_branch_name + : config_reader.GetString( + "local", "eloq_dss_branch_name", FLAGS_eloq_dss_branch_name); auto ds_factory = std::make_unique( rocksdb_config, rocksdb_cloud_config, enable_cache_replacement_); @@ -327,7 +331,11 @@ int main(int argc, char *argv[]) uint32_t unused_core_number = 0; EloqDS::EloqStoreConfig eloq_store_config( config_reader, data_path, mem_mib, unused_core_number, true); - eloq_store_config.branch_name_ = FLAGS_eloq_dss_branch_name; + eloq_store_config.branch_name_ = + !CheckCommandLineFlagIsDefault("eloq_dss_branch_name") + ? FLAGS_eloq_dss_branch_name + : config_reader.GetString( + "local", "eloq_dss_branch_name", FLAGS_eloq_dss_branch_name); #ifdef ELOQ_MODULE_ENABLED GFLAGS_NAMESPACE::SetCommandLineOption( From c11fd936ba6755aa9e9086063f16352fb73f9d54 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Mon, 9 Mar 2026 10:48:34 +0800 Subject: [PATCH 06/33] fix: support idempotency in CreateBackup by returning Finished for existing completed backups --- tx_service/src/store/snapshot_manager.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tx_service/src/store/snapshot_manager.cpp b/tx_service/src/store/snapshot_manager.cpp index 179d915c..ecf12d7b 100644 --- a/tx_service/src/store/snapshot_manager.cpp +++ b/tx_service/src/store/snapshot_manager.cpp @@ -675,7 +675,15 @@ txservice::remote::BackupTaskStatus SnapshotManager::CreateBackup( auto backup_it = ng_it->second.find(backup_name); if (backup_it != ng_it->second.end()) { - assert(false); + // Idempotency: if the backup already exists and is finished, + // return success. This allows retrying CreateBackup after a + // previous successful completion. + if (backup_it->second.status() == + txservice::remote::BackupTaskStatus::Finished) + { + return txservice::remote::BackupTaskStatus::Finished; + } + // If backup exists but is not finished, it's an error return txservice::remote::BackupTaskStatus::Failed; } } From 7e0c7127c96a8ab9f176d6f59b31b256816c305d Mon Sep 17 00:00:00 2001 From: githubzilla Date: Mon, 9 Mar 2026 20:12:17 +0800 Subject: [PATCH 07/33] Add backup ts assert --- .../eloq_data_store_service/eloq_store_data_store.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/store_handler/eloq_data_store_service/eloq_store_data_store.cpp b/store_handler/eloq_data_store_service/eloq_store_data_store.cpp index d1cc2508..1e5a54be 100644 --- a/store_handler/eloq_data_store_service/eloq_store_data_store.cpp +++ b/store_handler/eloq_data_store_service/eloq_store_data_store.cpp @@ -595,12 +595,12 @@ void EloqStoreDataStore::CreateSnapshotForBackup( PoolableGuard req_guard(req); std::string_view backup_name = req->GetBackupName(); + assert(req->GetBackupTs() != 0); if (backup_name.empty() || backup_name == eloq_store_service_->Branch()) { // If backup_name is empty or matches the current branch, create // snapshot for current branch. - assert(req->GetBackupTs() != 0); ::eloqstore::GlobalArchiveRequest global_archive_req; global_archive_req.SetSnapshotTimestamp(req->GetBackupTs()); eloq_store_service_->ExecSync(&global_archive_req); @@ -636,7 +636,6 @@ void EloqStoreDataStore::CreateSnapshotForBackup( // forked from the current branch. Use backup_ts as the salt so the // internal filename is deterministic and correlated with the backup // timestamp. - assert(req->GetBackupTs() != 0); ::eloqstore::GlobalCreateBranchRequest create_branch_req; create_branch_req.SetArgs(std::string(backup_name), std::string(eloq_store_service_->Branch())); @@ -649,6 +648,7 @@ void EloqStoreDataStore::CreateSnapshotForBackup( { case ::eloqstore::KvError::NoError: ds_error = ::EloqDS::remote::DataStoreError::NO_ERROR; + req->AddBackupFile(create_branch_req.result_branch); break; case ::eloqstore::KvError::NotRunning: ds_error = ::EloqDS::remote::DataStoreError::DB_NOT_OPEN; From 81fa368ef31c62fde112ad48aecc903ad081d4ee Mon Sep 17 00:00:00 2001 From: githubzilla Date: Mon, 9 Mar 2026 20:12:42 +0800 Subject: [PATCH 08/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 695b094d..721e2220 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 695b094d6f02148f30589e658efa3536ede0c3c3 +Subproject commit 721e2220a0ff032809ef697a358c2e57046d2e42 From dcadd7b1cf5d975492aa8de03eea17799e1a83f4 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Tue, 10 Mar 2026 16:02:44 +0800 Subject: [PATCH 09/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 721e2220..5e0fc8d8 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 721e2220a0ff032809ef697a358c2e57046d2e42 +Subproject commit 5e0fc8d88578e199f2bf793357a8990782c94d0a From 7095efd115334343479b1aedcad3b58a3f9af32f Mon Sep 17 00:00:00 2001 From: githubzilla Date: Wed, 11 Mar 2026 12:24:59 +0800 Subject: [PATCH 10/33] Change default branch from development to main --- store_handler/eloq_data_store_service/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/main.cpp b/store_handler/eloq_data_store_service/main.cpp index 3c5d8315..8485b022 100644 --- a/store_handler/eloq_data_store_service/main.cpp +++ b/store_handler/eloq_data_store_service/main.cpp @@ -70,7 +70,7 @@ DEFINE_string(eloq_dss_peer_node, "Data store peer node address. Used to get cluster topology if " "data_store_config_file is not provided."); -DEFINE_string(eloq_dss_branch_name, "development", "Data store branch name."); +DEFINE_string(eloq_dss_branch_name, "main", "Data store branch name."); DEFINE_string(ip, "127.0.0.1", "Server IP"); DEFINE_int32(port, 9100, "Server Port"); From 7d765d653bb19369ba6ed383bf10353111e7fae0 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Wed, 11 Mar 2026 20:55:57 +0800 Subject: [PATCH 11/33] Update eloqstore submodule Fix manifest deletion bug in file_gc --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 5e0fc8d8..3e0fd123 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 5e0fc8d88578e199f2bf793357a8990782c94d0a +Subproject commit 3e0fd12350eefbffef12dae28d4ea056859a1551 From e286474e724ccfa1374bea0297722c10cd427f97 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Wed, 11 Mar 2026 20:57:10 +0800 Subject: [PATCH 12/33] temp change the data file size --- store_handler/eloq_data_store_service/eloq_store_config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloq_store_config.cpp b/store_handler/eloq_data_store_service/eloq_store_config.cpp index 803b8b6f..b54b57f4 100644 --- a/store_handler/eloq_data_store_service/eloq_store_config.cpp +++ b/store_handler/eloq_data_store_service/eloq_store_config.cpp @@ -131,7 +131,7 @@ DEFINE_bool(eloq_store_reuse_local_files, "EloqStore reuse local files in cloud mode"); DEFINE_uint32(eloq_store_data_page_size, 1 << 12, "EloqStore data page size."); DEFINE_uint32(eloq_store_pages_per_file_shift, - 11, + 2, "EloqStore pages per file shift."); DEFINE_uint32(eloq_store_overflow_pointers, 16, "EloqStore overflow pointers."); DEFINE_bool(eloq_store_data_append_mode, true, "EloqStore data append mode."); From f0f4c3ae2460fff5f8e4b691435e7611f4648f3f Mon Sep 17 00:00:00 2001 From: githubzilla Date: Thu, 12 Mar 2026 19:24:15 +0800 Subject: [PATCH 13/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 3e0fd123..791301e9 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 3e0fd12350eefbffef12dae28d4ea056859a1551 +Subproject commit 791301e97f93c612ecc0f08d5c45275de88b74a2 From cfd615714c6c4edfc29e11ca7c5809dc4c031162 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Fri, 13 Mar 2026 15:29:04 +0800 Subject: [PATCH 14/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 791301e9..c95834bd 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 791301e97f93c612ecc0f08d5c45275de88b74a2 +Subproject commit c95834bd6257a422c3752b7004d52cd0a6b6a3aa From e748ade923bf794eba4a833bd64a0128696d02e7 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Fri, 13 Mar 2026 16:58:09 +0800 Subject: [PATCH 15/33] Restore default eloq_store_pages_per_file_shift --- store_handler/eloq_data_store_service/eloq_store_config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloq_store_config.cpp b/store_handler/eloq_data_store_service/eloq_store_config.cpp index b54b57f4..803b8b6f 100644 --- a/store_handler/eloq_data_store_service/eloq_store_config.cpp +++ b/store_handler/eloq_data_store_service/eloq_store_config.cpp @@ -131,7 +131,7 @@ DEFINE_bool(eloq_store_reuse_local_files, "EloqStore reuse local files in cloud mode"); DEFINE_uint32(eloq_store_data_page_size, 1 << 12, "EloqStore data page size."); DEFINE_uint32(eloq_store_pages_per_file_shift, - 2, + 11, "EloqStore pages per file shift."); DEFINE_uint32(eloq_store_overflow_pointers, 16, "EloqStore overflow pointers."); DEFINE_bool(eloq_store_data_append_mode, true, "EloqStore data append mode."); From 8233cb5b92bb1cd9ef29d48d65523100dea4fca8 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Fri, 13 Mar 2026 18:45:50 +0800 Subject: [PATCH 16/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index c95834bd..710795af 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit c95834bd6257a422c3752b7004d52cd0a6b6a3aa +Subproject commit 710795af7d9d191261f7b8d41c407819391465b6 From 84cd90600c633af5646ffe5ec2ac808eaad470eb Mon Sep 17 00:00:00 2001 From: githubzilla Date: Fri, 13 Mar 2026 20:20:18 +0800 Subject: [PATCH 17/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 710795af..87162461 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 710795af7d9d191261f7b8d41c407819391465b6 +Subproject commit 87162461c5c809afe8da0405f529ff90aae1f523 From cca09f22bd617c3555b64965f2dc64191bbb2203 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Sat, 14 Mar 2026 15:41:10 +0800 Subject: [PATCH 18/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 87162461..c57ddd6b 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 87162461c5c809afe8da0405f529ff90aae1f523 +Subproject commit c57ddd6b28174f32c80eb81f0a6f823c1ef2642a From b245ef7f28dacaac45df134d277fac9e2d70dcc6 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Sat, 14 Mar 2026 23:02:16 +0800 Subject: [PATCH 19/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index c57ddd6b..07497ba0 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit c57ddd6b28174f32c80eb81f0a6f823c1ef2642a +Subproject commit 07497ba00e612b0757725d79fb47b5b3242875c4 From 0b3210bba04cc4837a1f9a4ca3e73d20f3dac841 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Sun, 15 Mar 2026 11:56:32 +0800 Subject: [PATCH 20/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 07497ba0..48deb9f1 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 07497ba00e612b0757725d79fb47b5b3242875c4 +Subproject commit 48deb9f187a28318d8c3bc69e6e169efdeadc65e From 74b382a3e5d1beded8824b8a51c940d238c806e3 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Sun, 15 Mar 2026 12:25:40 +0800 Subject: [PATCH 21/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 48deb9f1..439874c7 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 48deb9f187a28318d8c3bc69e6e169efdeadc65e +Subproject commit 439874c7d32067a6e4d35b129a86b342ce4a3452 From 5c5d5ac7f87af39cc52fb3d74543bfb7d8a8c08f Mon Sep 17 00:00:00 2001 From: githubzilla Date: Tue, 17 Mar 2026 13:30:59 +0800 Subject: [PATCH 22/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 439874c7..90e9d27d 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 439874c7d32067a6e4d35b129a86b342ce4a3452 +Subproject commit 90e9d27d5e8e71c421ed504cc90ea6d75ffdb94a From 44bc45787c19935b0ae0bd422385d8008b04789b Mon Sep 17 00:00:00 2001 From: githubzilla Date: Tue, 17 Mar 2026 13:32:11 +0800 Subject: [PATCH 23/33] Refine logs in RocksDBCloudDataStore --- .../rocksdb_cloud_data_store.cpp | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/store_handler/eloq_data_store_service/rocksdb_cloud_data_store.cpp b/store_handler/eloq_data_store_service/rocksdb_cloud_data_store.cpp index 90cd4622..a5f2ca62 100644 --- a/store_handler/eloq_data_store_service/rocksdb_cloud_data_store.cpp +++ b/store_handler/eloq_data_store_service/rocksdb_cloud_data_store.cpp @@ -19,8 +19,6 @@ * . * */ -#include "rocksdb_cloud_data_store.h" - #include #include #include @@ -50,6 +48,7 @@ #include "purger_event_listener.h" #include "rocksdb/cloud/cloud_file_system_impl.h" #include "rocksdb/cloud/cloud_storage_provider.h" +#include "rocksdb_cloud_data_store.h" #define LONG_STR_SIZE 21 @@ -674,6 +673,17 @@ bool RocksDBCloudDataStore::OpenCloudDB( // Disable auto compactions before blocking purger options.disable_auto_compactions = true; + LOG(INFO) << "Open RocksDB Cloud with options create_if_missing: " + << create_db_if_missing_ << ", db_path: " << db_path_ + << ", bucket_name: " << cfs_options_.src_bucket.GetBucketName() + << ", bucket_prefix: " + << cfs_options_.src_bucket.GetBucketPrefix() + << ", object_path: " << cfs_options_.src_bucket.GetObjectPath() + << ", endpoint: " + << (cloud_config_.s3_endpoint_url_.empty() + ? "default" + : cloud_config_.s3_endpoint_url_); + auto start = std::chrono::steady_clock::now(); std::unique_lock db_lk(db_mux_); rocksdb::Status status; @@ -694,6 +704,14 @@ bool RocksDBCloudDataStore::OpenCloudDB( bthread_usleep(retry_num * 200000); } + if (!status.ok()) + { + LOG(ERROR) << "Unable to open db at path " << storage_path_ + << " with bucket " << cfs_options.src_bucket.GetBucketName() + << " with error: " << status.ToString(); + return false; + } + auto end = std::chrono::steady_clock::now(); auto duration = std::chrono::duration_cast(end - start); From 082da9adcbb5a8edf4949764845c9e52ff50dc7c Mon Sep 17 00:00:00 2001 From: githubzilla Date: Tue, 17 Mar 2026 15:08:22 +0800 Subject: [PATCH 24/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 90e9d27d..cb846202 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 90e9d27d5e8e71c421ed504cc90ea6d75ffdb94a +Subproject commit cb846202cd38ea5da714c99eb855ba222a493b06 From 9fe7fcb7238bd4fe831e0786d9c60cf00e8bd5db Mon Sep 17 00:00:00 2001 From: githubzilla Date: Tue, 17 Mar 2026 16:50:59 +0800 Subject: [PATCH 25/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index cb846202..e64418be 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit cb846202cd38ea5da714c99eb855ba222a493b06 +Subproject commit e64418be3d60dad5e447994b9fcccd600a9fefb4 From d18ca0d545d1006b59101fb7a96999f8dafa2712 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Tue, 17 Mar 2026 17:19:56 +0800 Subject: [PATCH 26/33] Update eloqstore: remove unused parent_branch_ from GlobalCreateBranchRequest Update call site in eloq_store_data_store.cpp to match the simplified SetArgs signature and bump the eloqstore submodule pointer. --- .../eloq_data_store_service/eloq_store_data_store.cpp | 3 +-- store_handler/eloq_data_store_service/eloqstore | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/store_handler/eloq_data_store_service/eloq_store_data_store.cpp b/store_handler/eloq_data_store_service/eloq_store_data_store.cpp index 1e5a54be..f2ae1a43 100644 --- a/store_handler/eloq_data_store_service/eloq_store_data_store.cpp +++ b/store_handler/eloq_data_store_service/eloq_store_data_store.cpp @@ -637,8 +637,7 @@ void EloqStoreDataStore::CreateSnapshotForBackup( // internal filename is deterministic and correlated with the backup // timestamp. ::eloqstore::GlobalCreateBranchRequest create_branch_req; - create_branch_req.SetArgs(std::string(backup_name), - std::string(eloq_store_service_->Branch())); + create_branch_req.SetArgs(std::string(backup_name)); create_branch_req.SetSaltTimestamp(req->GetBackupTs()); eloq_store_service_->ExecSync(&create_branch_req); diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index e64418be..1216ba58 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit e64418be3d60dad5e447994b9fcccd600a9fefb4 +Subproject commit 1216ba587f851caf3a848bb366e0aeb7df75edf9 From 495ce1d8820e52c8ea7e225e728edb6c9b7bf5ae Mon Sep 17 00:00:00 2001 From: githubzilla Date: Tue, 17 Mar 2026 18:38:48 +0800 Subject: [PATCH 27/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 1216ba58..d2d85e78 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 1216ba587f851caf3a848bb366e0aeb7df75edf9 +Subproject commit d2d85e78a653d0f6841acfc15b6495430a463276 From aea167bfbe0fb2b703ce11e86dc1e002fe56105b Mon Sep 17 00:00:00 2001 From: githubzilla Date: Tue, 17 Mar 2026 18:44:17 +0800 Subject: [PATCH 28/33] Fix clang-format --- core/src/storage_init.cpp | 4 +--- .../eloq_store_data_store.cpp | 13 ++++++------- .../rocksdb_cloud_data_store.cpp | 3 ++- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/core/src/storage_init.cpp b/core/src/storage_init.cpp index ba2e7357..4ea5d6d4 100644 --- a/core/src/storage_init.cpp +++ b/core/src/storage_init.cpp @@ -83,9 +83,7 @@ DEFINE_string(eloq_dss_peer_node, "", "EloqDataStoreService peer node address. Used to fetch eloq-dss " "topology from a working eloq-dss server."); -DEFINE_string(eloq_dss_branch_name, - "main", - "Branch name of EloqDataStore"); +DEFINE_string(eloq_dss_branch_name, "main", "Branch name of EloqDataStore"); DEFINE_string(eloq_dss_config_file_path, "", "EloqDataStoreService config file path. Used to load eloq-dss " diff --git a/store_handler/eloq_data_store_service/eloq_store_data_store.cpp b/store_handler/eloq_data_store_service/eloq_store_data_store.cpp index f2ae1a43..8f9affdc 100644 --- a/store_handler/eloq_data_store_service/eloq_store_data_store.cpp +++ b/store_handler/eloq_data_store_service/eloq_store_data_store.cpp @@ -19,18 +19,17 @@ * . * */ +#include "eloq_store_data_store.h" + #include #include #include -#include - #include #include #include #include "common.h" -#include "eloq_store_data_store.h" #include "eloq_store_data_store_factory.h" #include "internal_request.h" @@ -611,10 +610,10 @@ void EloqStoreDataStore::CreateSnapshotForBackup( { case ::eloqstore::KvError::NoError: ds_error = ::EloqDS::remote::DataStoreError::NO_ERROR; - req->AddBackupFile(::eloqstore::BranchArchiveName( - eloq_store_service_->Branch(), - eloq_store_service_->Term(), - req->GetBackupTs())); + req->AddBackupFile( + ::eloqstore::BranchArchiveName(eloq_store_service_->Branch(), + eloq_store_service_->Term(), + req->GetBackupTs())); break; case ::eloqstore::KvError::NotRunning: ds_error = ::EloqDS::remote::DataStoreError::DB_NOT_OPEN; diff --git a/store_handler/eloq_data_store_service/rocksdb_cloud_data_store.cpp b/store_handler/eloq_data_store_service/rocksdb_cloud_data_store.cpp index a5f2ca62..bb16622a 100644 --- a/store_handler/eloq_data_store_service/rocksdb_cloud_data_store.cpp +++ b/store_handler/eloq_data_store_service/rocksdb_cloud_data_store.cpp @@ -19,6 +19,8 @@ * . * */ +#include "rocksdb_cloud_data_store.h" + #include #include #include @@ -48,7 +50,6 @@ #include "purger_event_listener.h" #include "rocksdb/cloud/cloud_file_system_impl.h" #include "rocksdb/cloud/cloud_storage_provider.h" -#include "rocksdb_cloud_data_store.h" #define LONG_STR_SIZE 21 From 30bc00facb1ba3de936701c529e4332005068e88 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Wed, 18 Mar 2026 10:43:38 +0800 Subject: [PATCH 29/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index d2d85e78..769ef8e0 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit d2d85e78a653d0f6841acfc15b6495430a463276 +Subproject commit 769ef8e0f40d8ed8f9fbaeee0a704995463fcf87 From 0828906f543e231533e318af68af1036e90930cc Mon Sep 17 00:00:00 2001 From: githubzilla Date: Wed, 18 Mar 2026 13:04:19 +0800 Subject: [PATCH 30/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 769ef8e0..8eb6088f 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 769ef8e0f40d8ed8f9fbaeee0a704995463fcf87 +Subproject commit 8eb6088f7ab2452b59fc251f1968b87e245e8afd From eede0dee0eacf3f5efa8352ca1313e4dc74401fc Mon Sep 17 00:00:00 2001 From: githubzilla Date: Wed, 18 Mar 2026 14:25:26 +0800 Subject: [PATCH 31/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index 8eb6088f..fcc78497 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit 8eb6088f7ab2452b59fc251f1968b87e245e8afd +Subproject commit fcc784979b43fa83928c48743ad15511c9377463 From b08d1ff5ce1635934a71b6cc1260c192c0a77531 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Wed, 18 Mar 2026 15:08:41 +0800 Subject: [PATCH 32/33] Fix config section for eloq_dss_branch_name to use 'store' instead of 'local' The branch_name config lookup in main.cpp used the 'local' INI section, while storage_init.cpp uses the 'store' section. This mismatch caused silent misconfiguration when users set eloq_dss_branch_name under the [store] section. Updated both occurrences (rocksdb_cloud_config and eloq_store_config) to use 'store' for consistency. --- store_handler/eloq_data_store_service/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/store_handler/eloq_data_store_service/main.cpp b/store_handler/eloq_data_store_service/main.cpp index 8485b022..53848f18 100644 --- a/store_handler/eloq_data_store_service/main.cpp +++ b/store_handler/eloq_data_store_service/main.cpp @@ -307,7 +307,7 @@ int main(int argc, char *argv[]) !CheckCommandLineFlagIsDefault("eloq_dss_branch_name") ? FLAGS_eloq_dss_branch_name : config_reader.GetString( - "local", "eloq_dss_branch_name", FLAGS_eloq_dss_branch_name); + "store", "eloq_dss_branch_name", FLAGS_eloq_dss_branch_name); auto ds_factory = std::make_unique( rocksdb_config, rocksdb_cloud_config, enable_cache_replacement_); @@ -335,7 +335,7 @@ int main(int argc, char *argv[]) !CheckCommandLineFlagIsDefault("eloq_dss_branch_name") ? FLAGS_eloq_dss_branch_name : config_reader.GetString( - "local", "eloq_dss_branch_name", FLAGS_eloq_dss_branch_name); + "store", "eloq_dss_branch_name", FLAGS_eloq_dss_branch_name); #ifdef ELOQ_MODULE_ENABLED GFLAGS_NAMESPACE::SetCommandLineOption( From 5499b81813f9371dd64e402d0af1db516e8a7b22 Mon Sep 17 00:00:00 2001 From: githubzilla Date: Wed, 18 Mar 2026 19:17:47 +0800 Subject: [PATCH 33/33] Update eloqstore --- store_handler/eloq_data_store_service/eloqstore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store_handler/eloq_data_store_service/eloqstore b/store_handler/eloq_data_store_service/eloqstore index fcc78497..337846cb 160000 --- a/store_handler/eloq_data_store_service/eloqstore +++ b/store_handler/eloq_data_store_service/eloqstore @@ -1 +1 @@ -Subproject commit fcc784979b43fa83928c48743ad15511c9377463 +Subproject commit 337846cb61b7d9a46e57268ca548355c2eab3eaf