From ff2033f14b99017a5c594a90b1d366fa6170714e Mon Sep 17 00:00:00 2001 From: yujingwei Date: Wed, 29 Nov 2023 20:41:41 +0800 Subject: [PATCH] feat(replica): parameterize-fileddatatype --- src/replica/replica.cpp | 2 +- src/replica/replica.h | 1 + src/replica/replica_disk_migrator.h | 1 + src/replica/replica_stub.cpp | 2 +- src/replica/replica_stub.h | 1 + src/replica/replication_app_base.cpp | 19 +++++++++---------- src/replica/replication_app_base.h | 13 +++++++------ 7 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/replica/replica.cpp b/src/replica/replica.cpp index 38cc478ad77..5d1b6c84372 100644 --- a/src/replica/replica.cpp +++ b/src/replica/replica.cpp @@ -592,7 +592,7 @@ error_code replica::store_app_info(app_info &info, const std::string &path) { replica_app_info new_info((app_info *)&info); const auto &info_path = path.empty() ? utils::filesystem::path_combine(_dir, kAppInfo) : path; - auto err = new_info.store(info_path); + auto err = new_info.store(info_path, utils::FileDataType::kSensitive); if (dsn_unlikely(err != ERR_OK)) { LOG_ERROR_PREFIX("failed to save app_info to {}, error = {}", info_path, err); } diff --git a/src/replica/replica.h b/src/replica/replica.h index 68965a7d8cd..fd57951117b 100644 --- a/src/replica/replica.h +++ b/src/replica/replica.h @@ -54,6 +54,7 @@ #include "runtime/task/task.h" #include "runtime/task/task_tracker.h" #include "utils/autoref_ptr.h" +#include "utils/env.h" #include "utils/error_code.h" #include "utils/flags.h" #include "utils/thread_access_checker.h" diff --git a/src/replica/replica_disk_migrator.h b/src/replica/replica_disk_migrator.h index a3c52fe503b..911cfaa6075 100644 --- a/src/replica/replica_disk_migrator.h +++ b/src/replica/replica_disk_migrator.h @@ -25,6 +25,7 @@ #include "replica/replica_stub.h" #include "replica_admin_types.h" #include "runtime/task/task.h" +#include "utils/env.h" namespace dsn { namespace replication { diff --git a/src/replica/replica_stub.cpp b/src/replica/replica_stub.cpp index e48a2e15ea5..4dd0361fb5f 100644 --- a/src/replica/replica_stub.cpp +++ b/src/replica/replica_stub.cpp @@ -2326,7 +2326,7 @@ replica *replica_stub::load_replica(dir_node *dn, const char *dir) dsn::app_info info; replica_app_info info2(&info); std::string path = utils::filesystem::path_combine(dir, replica::kAppInfo); - auto err = info2.load(path); + auto err = info2.load(path, dsn::utils::FileDataType::kSensitive); if (ERR_OK != err) { LOG_ERROR("load app-info from {} failed, err = {}", path, err); return nullptr; diff --git a/src/replica/replica_stub.h b/src/replica/replica_stub.h index 03a6333aa2e..891c7f9bd98 100644 --- a/src/replica/replica_stub.h +++ b/src/replica/replica_stub.h @@ -65,6 +65,7 @@ #include "runtime/task/task_code.h" #include "runtime/task/task_tracker.h" #include "utils/autoref_ptr.h" +#include "utils/env.h" #include "utils/error_code.h" #include "utils/flags.h" #include "utils/fmt_utils.h" diff --git a/src/replica/replication_app_base.cpp b/src/replica/replication_app_base.cpp index 2eb8b9aeabf..b08779dfaef 100644 --- a/src/replica/replication_app_base.cpp +++ b/src/replica/replication_app_base.cpp @@ -52,7 +52,6 @@ #include "utils/binary_writer.h" #include "utils/blob.h" #include "utils/defer.h" -#include "utils/env.h" #include "utils/factory_store.h" #include "utils/fail_point.h" #include "utils/filesystem.h" @@ -67,7 +66,7 @@ namespace replication { const std::string replica_init_info::kInitInfo = ".init-info"; namespace { -error_code write_blob_to_file(const std::string &fname, const blob &data, const dsn::utils::FileDataType fileDataType) +error_code write_blob_to_file(const std::string &fname, const blob &data, const utils::FileDataType &fileDataType) { // TODO(yingchun): consider not encrypt the meta files. std::string tmp_fname = fname + ".tmp"; @@ -89,7 +88,7 @@ error_code write_blob_to_file(const std::string &fname, const blob &data, const } } // namespace -error_code replica_init_info::load(const std::string &dir, const dsn::utils::FileDataType fileDataType) +error_code replica_init_info::load(const std::string &dir, const utils::FileDataType &fileDataType) { std::string info_path = utils::filesystem::path_combine(dir, kInitInfo); LOG_AND_RETURN_NOT_TRUE(ERROR, @@ -103,7 +102,7 @@ error_code replica_init_info::load(const std::string &dir, const dsn::utils::Fil return ERR_OK; } -error_code replica_init_info::store(const std::string &dir, const dsn::utils::FileDataType fileDataType) +error_code replica_init_info::store(const std::string &dir, const utils::FileDataType &fileDataType) { uint64_t start = dsn_now_ns(); std::string info_path = utils::filesystem::path_combine(dir, kInitInfo); @@ -119,7 +118,7 @@ error_code replica_init_info::store(const std::string &dir, const dsn::utils::Fi return ERR_OK; } -error_code replica_init_info::load_json(const std::string &fname, const dsn::utils::FileDataType fileDataType) +error_code replica_init_info::load_json(const std::string &fname, const utils::FileDataType &fileDataType) { std::string data; auto s = rocksdb::ReadFileToString( @@ -134,7 +133,7 @@ error_code replica_init_info::load_json(const std::string &fname, const dsn::uti return ERR_OK; } -error_code replica_init_info::store_json(const std::string &fname, const dsn::utils::FileDataType fileDataType) +error_code replica_init_info::store_json(const std::string &fname, const utils::FileDataType &fileDataType) { return write_blob_to_file(fname, json::json_forwarder::encode(*this), fileDataType); } @@ -149,7 +148,7 @@ std::string replica_init_info::to_string() return oss.str(); } -error_code replica_app_info::load(const std::string &fname, const dsn::utils::FileDataType fileDataType) +error_code replica_app_info::load(const std::string &fname, const utils::FileDataType &fileDataType) { std::string data; auto s = rocksdb::ReadFileToString( @@ -164,7 +163,7 @@ error_code replica_app_info::load(const std::string &fname, const dsn::utils::Fi return ERR_OK; } -error_code replica_app_info::store(const std::string &fname, const dsn::utils::FileDataType fileDataType) +error_code replica_app_info::store(const std::string &fname, const utils::FileDataType &fileDataType) { binary_writer writer; int magic = 0xdeadbeef; @@ -242,7 +241,7 @@ error_code replication_app_base::open_internal(replica *r) _last_committed_decree = last_durable_decree(); - auto err = _info.load(r->dir()); + auto err = _info.load(r->dir(), dsn::utils::FileDataType::kSensitive); LOG_AND_RETURN_NOT_OK(ERROR_PREFIX, err, "load replica_init_info failed"); LOG_AND_RETURN_NOT_TRUE(ERROR_PREFIX, @@ -459,7 +458,7 @@ error_code replication_app_base::update_init_info(replica *r, _info.init_offset_in_shared_log = shared_log_offset; _info.init_offset_in_private_log = private_log_offset; - LOG_AND_RETURN_NOT_OK(ERROR_PREFIX, _info.store(r->dir()), "store replica_init_info failed"); + LOG_AND_RETURN_NOT_OK(ERROR_PREFIX, _info.store(r->dir(), dsn::utils::FileDataType::kSensitive), "store replica_init_info failed"); return ERR_OK; } diff --git a/src/replica/replication_app_base.h b/src/replica/replication_app_base.h index ffe211a6883..af48044835a 100644 --- a/src/replica/replication_app_base.h +++ b/src/replica/replication_app_base.h @@ -38,6 +38,7 @@ #include "metadata_types.h" #include "replica/replica_base.h" #include "replica_admin_types.h" +#include "utils/env.h" #include "utils/error_code.h" #include "utils/fmt_utils.h" #include "utils/ports.h" @@ -71,13 +72,13 @@ class replica_init_info public: replica_init_info() { memset((void *)this, 0, sizeof(*this)); } - error_code load(const std::string &dir, const dsn::utils::FileDataType fileDataType) WARN_UNUSED_RESULT; - error_code store(const std::string &dir, const dsn::utils::FileDataType fileDataType); + error_code load(const std::string &dir, const utils::FileDataType &fileDataType) WARN_UNUSED_RESULT; + error_code store(const std::string &dir, const utils::FileDataType &fileDataType); std::string to_string(); private: - error_code load_json(const std::string &fname, const dsn::utils::FileDataType fileDataType); - error_code store_json(const std::string &fname, const dsn::utils::FileDataType fileDataType); + error_code load_json(const std::string &fname, const utils::FileDataType &fileDataType); + error_code store_json(const std::string &fname, const utils::FileDataType &fileDataType); }; class replica_app_info @@ -87,8 +88,8 @@ class replica_app_info public: replica_app_info(app_info *app) { _app = app; } - error_code load(const std::string &fname, const dsn::utils::FileDataType fileDataType); - error_code store(const std::string &fname, const dsn::utils::FileDataType fileDataType); + error_code load(const std::string &fname, const utils::FileDataType &fileDataType); + error_code store(const std::string &fname, const utils::FileDataType &fileDataType); }; /// The store engine interface of Pegasus.