This is an automated email from the ASF dual-hosted git repository.

laiyingchun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pegasus.git


The following commit(s) were added to refs/heads/master by this push:
     new afca62fc1 refactor(macro): use the more general CHECK_PREFIX* to 
replace dassert_replica (#1230)
afca62fc1 is described below

commit afca62fc17f268133890b31af9b8756bf7ae05e5
Author: Yingchun Lai <[email protected]>
AuthorDate: Tue Nov 8 15:59:31 2022 +0800

    refactor(macro): use the more general CHECK_PREFIX* to replace 
dassert_replica (#1230)
---
 src/meta/duplication/duplication_info.cpp         |  2 +-
 src/meta/duplication/duplication_info.h           |  4 ---
 src/replica/duplication/load_from_private_log.cpp | 10 +++---
 src/replica/duplication/mutation_batch.cpp        |  4 +--
 src/replica/prepare_list.cpp                      | 19 +++++-------
 src/replica/replica.cpp                           | 30 +++++++++---------
 src/replica/replica_config.cpp                    | 21 ++++++-------
 src/replica/replica_disk_migrator.cpp             | 11 ++++---
 src/replica/replica_learn.cpp                     |  4 +--
 src/replica/replica_restore.cpp                   | 36 ++++++++++-----------
 src/replica/replication_app_base.cpp              |  2 +-
 src/replica/split/replica_split_manager.cpp       | 38 ++++++++++-------------
 src/server/meta_store.cpp                         | 10 +++---
 src/server/pegasus_mutation_duplicator.cpp        | 16 +++++-----
 src/server/pegasus_server_impl.cpp                |  9 +++---
 src/utils/fmt_logging.h                           | 38 +++++++++++++++--------
 16 files changed, 123 insertions(+), 131 deletions(-)

diff --git a/src/meta/duplication/duplication_info.cpp 
b/src/meta/duplication/duplication_info.cpp
index 0a6e62155..8c28cfa43 100644
--- a/src/meta/duplication/duplication_info.cpp
+++ b/src/meta/duplication/duplication_info.cpp
@@ -152,7 +152,7 @@ void duplication_info::persist_progress(int partition_index)
     zauto_write_lock l(_lock);
 
     auto &p = _progress[partition_index];
-    dassert_dup(p.is_altering, this, "partition_index: {}", partition_index);
+    CHECK_PREFIX_MSG(p.is_altering, "partition_index: {}", partition_index);
     p.is_altering = false;
     p.stored_decree = p.volatile_decree;
 }
diff --git a/src/meta/duplication/duplication_info.h 
b/src/meta/duplication/duplication_info.h
index b0635ed3e..7b2fc028d 100644
--- a/src/meta/duplication/duplication_info.h
+++ b/src/meta/duplication/duplication_info.h
@@ -251,9 +251,5 @@ extern void json_encode(dsn::json::JsonWriter &out, const 
duplication_fail_mode:
 
 extern bool json_decode(const dsn::json::JsonObject &in, 
duplication_fail_mode::type &s);
 
-// TODO(yingchun): remember to cleanup dassert_dup
-#define dassert_dup(_pred_, _dup_, ...)                                        
                    \
-    CHECK(_pred_, "[a{}d{}] {}", _dup_->app_id, _dup_->id, 
fmt::format(__VA_ARGS__));
-
 } // namespace replication
 } // namespace dsn
diff --git a/src/replica/duplication/load_from_private_log.cpp 
b/src/replica/duplication/load_from_private_log.cpp
index 1512b2de0..46a8399ca 100644
--- a/src/replica/duplication/load_from_private_log.cpp
+++ b/src/replica/duplication/load_from_private_log.cpp
@@ -67,7 +67,7 @@ bool load_from_private_log::switch_to_next_log_file()
 
 void load_from_private_log::run()
 {
-    dassert_replica(_start_decree != invalid_decree, "{}", _start_decree);
+    CHECK_NE_PREFIX(_start_decree, invalid_decree);
     _duplicator->verify_start_decree(_start_decree);
 
     // last_decree() == invalid_decree is the init status of mutation_buffer 
when create
@@ -163,7 +163,7 @@ void load_from_private_log::replay_log_block()
         mutation_log::replay_block(_current,
                                    [this](int log_bytes_length, mutation_ptr 
&mu) -> bool {
                                        auto es = 
_mutation_batch.add(std::move(mu));
-                                       dassert_replica(es.is_ok(), 
es.description());
+                                       CHECK_PREFIX_MSG(es.is_ok(), 
es.description());
                                        
_counter_dup_log_read_bytes_rate->add(log_bytes_length);
                                        
_counter_dup_log_read_mutations_rate->increment();
                                        return true;
@@ -203,9 +203,9 @@ void load_from_private_log::replay_log_block()
                     repeat(_repeat_delay);
                     return;
                 }
-            } else if (dsn_unlikely(will_fail_fast())) {
-                dassert_replica(
-                    false,
+            } else {
+                CHECK_PREFIX_MSG(
+                    !will_fail_fast(),
                     "unable to load file {}, fail fast. please check if the 
file is corrupted",
                     _current->path());
             }
diff --git a/src/replica/duplication/mutation_batch.cpp 
b/src/replica/duplication/mutation_batch.cpp
index c82d2e444..28fab1aad 100644
--- a/src/replica/duplication/mutation_batch.cpp
+++ b/src/replica/duplication/mutation_batch.cpp
@@ -42,9 +42,7 @@ void mutation_buffer::commit(decree d, commit_type ct)
     if (d <= last_committed_decree())
         return;
 
-    if (ct != COMMIT_TO_DECREE_HARD) {
-        dassert_replica(false, "invalid commit type {}", (int)ct);
-    }
+    CHECK_EQ_PREFIX(ct, COMMIT_TO_DECREE_HARD);
 
     ballot last_bt = 0;
     for (decree d0 = last_committed_decree() + 1; d0 <= d; d0++) {
diff --git a/src/replica/prepare_list.cpp b/src/replica/prepare_list.cpp
index 35948b237..5998627ff 100644
--- a/src/replica/prepare_list.cpp
+++ b/src/replica/prepare_list.cpp
@@ -77,7 +77,6 @@ error_code prepare_list::prepare(mutation_ptr &mu,
     CHECK_GT_PREFIX(d, last_committed_decree());
 
     ADD_POINT(mu->_tracer);
-    error_code err;
     switch (status) {
     case partition_status::PS_PRIMARY:
         // pop committed mutations if buffer is full or 
pop_all_committed_mutations = true
@@ -98,15 +97,14 @@ error_code prepare_list::prepare(mutation_ptr &mu,
                last_committed_decree() > min_decree()) {
             pop_min();
         }
-        err = mutation_cache::put(mu);
-        dassert_replica(err == ERR_OK, "mutation_cache::put failed, err = {}", 
err);
-        return err;
+        CHECK_EQ_PREFIX_MSG(mutation_cache::put(mu), ERR_OK, 
"mutation_cache::put failed");
+        return ERR_OK;
 
     //// delayed commit - only when capacity is an issue
     // case partition_status::PS_POTENTIAL_SECONDARY:
     //    while (true)
     //    {
-    //        err = mutation_cache::put(mu);
+    //        error_code err = mutation_cache::put(mu);
     //        if (err == ERR_CAPACITY_EXCEEDED)
     //        {
     //            CHECK_GE(mu->data.header.last_committed_decree, 
min_decree());
@@ -117,7 +115,7 @@ error_code prepare_list::prepare(mutation_ptr &mu,
     //            break;
     //    }
     //    CHECK_EQ(err, ERR_OK);
-    //    return err;
+    //    return ERR_OK;
 
     case partition_status::PS_INACTIVE: // only possible during init
         if (mu->data.header.last_committed_decree > max_decree()) {
@@ -130,13 +128,12 @@ error_code prepare_list::prepare(mutation_ptr &mu,
         while (d - min_decree() >= capacity() && last_committed_decree() > 
min_decree()) {
             pop_min();
         }
-        err = mutation_cache::put(mu);
-        dassert_replica(err == ERR_OK, "mutation_cache::put failed, err = {}", 
err);
-        return err;
+        CHECK_EQ_PREFIX_MSG(mutation_cache::put(mu), ERR_OK, 
"mutation_cache::put failed");
+        return ERR_OK;
 
     default:
         CHECK(false, "invalid partition_status, status = {}", 
enum_to_string(status));
-        return dsn::ERR_OK;
+        return ERR_OK;
     }
 }
 
@@ -154,7 +151,7 @@ void prepare_list::commit(decree d, commit_type ct)
         for (decree d0 = last_committed_decree() + 1; d0 <= d; d0++) {
             mutation_ptr mu = get_mutation_by_decree(d0);
 
-            dassert_replica(
+            CHECK_PREFIX_MSG(
                 mu != nullptr && mu->is_logged(), "mutation {} is missing in 
prepare list", d0);
             CHECK_GE_PREFIX(mu->data.header.ballot, last_bt);
 
diff --git a/src/replica/replica.cpp b/src/replica/replica.cpp
index 191320df1..91c1a6f7c 100644
--- a/src/replica/replica.cpp
+++ b/src/replica/replica.cpp
@@ -423,14 +423,14 @@ bool replica::verbose_commit_log() const { return 
_stub->_verbose_commit_log; }
 
 void replica::close()
 {
-    dassert_replica(status() == partition_status::PS_ERROR ||
-                        status() == partition_status::PS_INACTIVE ||
-                        _disk_migrator->status() == 
disk_migration_status::IDLE ||
-                        _disk_migrator->status() >= 
disk_migration_status::MOVED,
-                    "invalid state(partition_status={}, migration_status={}) 
when calling "
-                    "replica close",
-                    enum_to_string(status()),
-                    enum_to_string(_disk_migrator->status()));
+    CHECK_PREFIX_MSG(status() == partition_status::PS_ERROR ||
+                         status() == partition_status::PS_INACTIVE ||
+                         _disk_migrator->status() == 
disk_migration_status::IDLE ||
+                         _disk_migrator->status() >= 
disk_migration_status::MOVED,
+                     "invalid state(partition_status={}, migration_status={}) 
when calling "
+                     "replica close",
+                     enum_to_string(status()),
+                     enum_to_string(_disk_migrator->status()));
 
     uint64_t start_time = dsn_now_ms();
 
@@ -453,10 +453,10 @@ void replica::close()
 
     // for partition_status::PS_ERROR, context cleanup is done here as they 
may block
     else {
-        dassert_replica(_secondary_states.cleanup(true), "secondary context is 
not cleared");
-        dassert_replica(_potential_secondary_states.cleanup(true),
-                        "potential secondary context is not cleared");
-        dassert_replica(_split_states.cleanup(true), "partition split context 
is not cleared");
+        CHECK_PREFIX_MSG(_secondary_states.cleanup(true), "secondary context 
is not cleared");
+        CHECK_PREFIX_MSG(_potential_secondary_states.cleanup(true),
+                         "potential secondary context is not cleared");
+        CHECK_PREFIX_MSG(_split_states.cleanup(true), "partition split context 
is not cleared");
     }
 
     if (_private_log != nullptr) {
@@ -496,13 +496,13 @@ void replica::close()
 
 std::string replica::query_manual_compact_state() const
 {
-    dassert_replica(_app != nullptr, "");
+    CHECK_PREFIX(_app);
     return _app->query_compact_state();
 }
 
 manual_compaction_status::type replica::get_manual_compact_status() const
 {
-    dassert_replica(_app != nullptr, "");
+    CHECK_PREFIX(_app);
     return _app->query_compact_status();
 }
 
@@ -539,7 +539,7 @@ void replica::on_detect_hotkey(const detect_hotkey_request 
&req, detect_hotkey_r
 
 uint32_t replica::query_data_version() const
 {
-    dassert_replica(_app != nullptr, "");
+    CHECK_PREFIX(_app);
     return _app->query_data_version();
 }
 
diff --git a/src/replica/replica_config.cpp b/src/replica/replica_config.cpp
index 1f6ae9197..47347813e 100644
--- a/src/replica/replica_config.cpp
+++ b/src/replica/replica_config.cpp
@@ -336,9 +336,7 @@ void 
replica::update_configuration_on_meta_server(config_type::type type,
     // type should never be `CT_REGISTER_CHILD`
     // if this happens, it means serious mistake happened during partition 
split
     // assert here to stop split and avoid splitting wrong
-    if (type == config_type::CT_REGISTER_CHILD) {
-        dassert_replica(false, "invalid config_type, type = {}", 
enum_to_string(type));
-    }
+    CHECK_NE_PREFIX(type, config_type::CT_REGISTER_CHILD);
 
     newConfig.last_committed_decree = last_committed_decree();
 
@@ -1081,15 +1079,14 @@ void replica::update_app_max_replica_count(int32_t 
max_replica_count)
     auto old_max_replica_count = _app_info.max_replica_count;
     _app_info.max_replica_count = max_replica_count;
 
-    auto ec = store_app_info(_app_info);
-    dassert_replica(ec == ERR_OK,
-                    "store_app_info for max_replica_count failed: 
error_code={}, app_name={}, "
-                    "app_id={}, old_max_replica_count={}, 
new_max_replica_count={}",
-                    ec.to_string(),
-                    _app_info.app_name,
-                    _app_info.app_id,
-                    old_max_replica_count,
-                    _app_info.max_replica_count);
+    CHECK_EQ_PREFIX_MSG(store_app_info(_app_info),
+                        ERR_OK,
+                        "store_app_info for max_replica_count failed: 
app_name={}, "
+                        "app_id={}, old_max_replica_count={}, 
new_max_replica_count={}",
+                        _app_info.app_name,
+                        _app_info.app_id,
+                        old_max_replica_count,
+                        _app_info.max_replica_count);
 }
 
 void replica::replay_prepare_list()
diff --git a/src/replica/replica_disk_migrator.cpp 
b/src/replica/replica_disk_migrator.cpp
index b6d1366f6..56171ad91 100644
--- a/src/replica/replica_disk_migrator.cpp
+++ b/src/replica/replica_disk_migrator.cpp
@@ -171,11 +171,12 @@ bool 
replica_disk_migrator::check_migration_args(replica_disk_migrate_rpc rpc)
 // THREAD_POOL_REPLICATION_LONG
 void replica_disk_migrator::migrate_replica(const replica_disk_migrate_request 
&req)
 {
-    dassert_replica(status() == disk_migration_status::MOVING,
-                    "disk migration(origin={}, target={}), err = Invalid 
migration status({})",
-                    req.origin_disk,
-                    req.target_disk,
-                    enum_to_string(status()));
+    CHECK_EQ_PREFIX_MSG(status(),
+                        disk_migration_status::MOVING,
+                        "disk migration(origin={}, target={}), err = Invalid 
migration status({})",
+                        req.origin_disk,
+                        req.target_disk,
+                        enum_to_string(status()));
 
     if (init_target_dir(req) && migrate_replica_checkpoint(req) && 
migrate_replica_app_info(req)) {
         _status = disk_migration_status::MOVED;
diff --git a/src/replica/replica_learn.cpp b/src/replica/replica_learn.cpp
index d3d75b19b..d34e63173 100644
--- a/src/replica/replica_learn.cpp
+++ b/src/replica/replica_learn.cpp
@@ -1460,9 +1460,7 @@ void replica::on_add_learner(const group_check_request 
&request)
         if (!update_local_configuration(request.config, true))
             return;
 
-        dassert_replica(partition_status::PS_POTENTIAL_SECONDARY == status(),
-                        "invalid partition_status, status = {}",
-                        enum_to_string(status()));
+        CHECK_EQ_PREFIX(partition_status::PS_POTENTIAL_SECONDARY, status());
 
         _is_duplication_master = request.app.duplicating;
         init_learn(request.config.learner_signature);
diff --git a/src/replica/replica_restore.cpp b/src/replica/replica_restore.cpp
index 3bcb00f4c..b90bbb228 100644
--- a/src/replica/replica_restore.cpp
+++ b/src/replica/replica_restore.cpp
@@ -308,35 +308,35 @@ dsn::error_code replica::restore_checkpoint()
     // first check the parameter
     configuration_restore_request restore_req;
     auto iter = 
_app_info.envs.find(backup_restore_constant::BLOCK_SERVICE_PROVIDER);
-    dassert_replica(iter != _app_info.envs.end(),
-                    "can't find {} in app_info.envs",
-                    backup_restore_constant::BLOCK_SERVICE_PROVIDER);
+    CHECK_PREFIX_MSG(iter != _app_info.envs.end(),
+                     "can't find {} in app_info.envs",
+                     backup_restore_constant::BLOCK_SERVICE_PROVIDER);
     restore_req.backup_provider_name = iter->second;
     iter = _app_info.envs.find(backup_restore_constant::CLUSTER_NAME);
-    dassert_replica(iter != _app_info.envs.end(),
-                    "can't find {} in app_info.envs",
-                    backup_restore_constant::CLUSTER_NAME);
+    CHECK_PREFIX_MSG(iter != _app_info.envs.end(),
+                     "can't find {} in app_info.envs",
+                     backup_restore_constant::CLUSTER_NAME);
     restore_req.cluster_name = iter->second;
     iter = _app_info.envs.find(backup_restore_constant::POLICY_NAME);
-    dassert_replica(iter != _app_info.envs.end(),
-                    "can't find {} in app_info.envs",
-                    backup_restore_constant::POLICY_NAME);
+    CHECK_PREFIX_MSG(iter != _app_info.envs.end(),
+                     "can't find {} in app_info.envs",
+                     backup_restore_constant::POLICY_NAME);
     restore_req.policy_name = iter->second;
     iter = _app_info.envs.find(backup_restore_constant::APP_NAME);
-    dassert_replica(iter != _app_info.envs.end(),
-                    "can't find {} in app_info.envs",
-                    backup_restore_constant::APP_NAME);
+    CHECK_PREFIX_MSG(iter != _app_info.envs.end(),
+                     "can't find {} in app_info.envs",
+                     backup_restore_constant::APP_NAME);
     restore_req.app_name = iter->second;
     iter = _app_info.envs.find(backup_restore_constant::APP_ID);
-    dassert_replica(iter != _app_info.envs.end(),
-                    "can't find {} in app_info.envs",
-                    backup_restore_constant::APP_ID);
+    CHECK_PREFIX_MSG(iter != _app_info.envs.end(),
+                     "can't find {} in app_info.envs",
+                     backup_restore_constant::APP_ID);
     restore_req.app_id = boost::lexical_cast<int32_t>(iter->second);
 
     iter = _app_info.envs.find(backup_restore_constant::BACKUP_ID);
-    dassert_replica(iter != _app_info.envs.end(),
-                    "can't find {} in app_info.envs",
-                    backup_restore_constant::BACKUP_ID);
+    CHECK_PREFIX_MSG(iter != _app_info.envs.end(),
+                     "can't find {} in app_info.envs",
+                     backup_restore_constant::BACKUP_ID);
     restore_req.time_stamp = boost::lexical_cast<int64_t>(iter->second);
 
     bool skip_bad_partition = false;
diff --git a/src/replica/replication_app_base.cpp 
b/src/replica/replication_app_base.cpp
index dc0996137..218308ad0 100644
--- a/src/replica/replication_app_base.cpp
+++ b/src/replica/replication_app_base.cpp
@@ -447,7 +447,7 @@ error_code replication_app_base::apply_mutation(const 
mutation *mu)
             str = "PS";
             break;
         default:
-            dassert_replica(false, "status = {}", enum_to_string(status));
+            CHECK_PREFIX_MSG(false, "status = {}", enum_to_string(status));
             __builtin_unreachable();
         }
         LOG_INFO_PREFIX(
diff --git a/src/replica/split/replica_split_manager.cpp 
b/src/replica/split/replica_split_manager.cpp
index 535c293cc..e501f9041 100644
--- a/src/replica/split/replica_split_manager.cpp
+++ b/src/replica/split/replica_split_manager.cpp
@@ -300,7 +300,7 @@ void replica_split_manager::child_copy_prepare_list(
     _replica->_prepare_list.reset(new prepare_list(this, *plist));
     for (decree d = last_committed_decree + 1; d <= 
_replica->_prepare_list->max_decree(); ++d) {
         mutation_ptr mu = _replica->_prepare_list->get_mutation_by_decree(d);
-        dassert_replica(mu != nullptr, "can not find mutation, dercee={}", d);
+        CHECK_NOTNULL_PREFIX_MSG(mu, "can not find mutation, dercee={}", d);
         mu->data.header.pid = get_gpid();
         _replica->_private_log->append(mu, LPC_WRITE_REPLICATION_LOG_COMMON, 
tracker(), nullptr);
         // set mutation has been logged in private log
@@ -638,10 +638,8 @@ void replica_split_manager::parent_handle_child_catch_up(
         mutation_ptr mu = _replica->new_mutation(invalid_decree);
         mu->add_client_request(RPC_REPLICATION_WRITE_EMPTY, nullptr);
         _replica->init_prepare(mu, false);
-        dassert_replica(sync_point == mu->data.header.decree,
-                        "sync_point should be equal to mutation's decree, {} 
vs {}",
-                        sync_point,
-                        mu->data.header.decree);
+        CHECK_EQ_PREFIX_MSG(
+            sync_point, mu->data.header.decree, "sync_point should be equal to 
mutation's decree");
     };
 
     // check if sync_point has been committed
@@ -791,12 +789,7 @@ void replica_split_manager::update_local_partition_count(
     auto old_partition_count = info.partition_count;
     info.partition_count = new_partition_count;
 
-    const auto err = _replica->store_app_info(info);
-    if (err != ERR_OK) {
-        info.partition_count = old_partition_count;
-        dassert_replica(false, "failed to save app_info, error = {}", err);
-        return;
-    }
+    CHECK_EQ_PREFIX_MSG(_replica->store_app_info(info), ERR_OK, "failed to 
save app_info");
 
     _replica->_app_info = info;
     LOG_INFO_PREFIX("update partition_count from {} to {}",
@@ -1222,7 +1215,7 @@ void 
replica_split_manager::trigger_secondary_parent_split(
 // ThreadPool: THREAD_POOL_REPLICATION
 void replica_split_manager::copy_mutation(mutation_ptr &mu) // on parent 
partition
 {
-    dassert_replica(_child_gpid.get_app_id() > 0, "child_gpid({}) is invalid", 
_child_gpid);
+    CHECK_GT_PREFIX_MSG(_child_gpid.get_app_id(), 0, "child_gpid({}) is 
invalid", _child_gpid);
 
     if (mu->is_sync_to_child()) {
         mu->wait_child();
@@ -1300,7 +1293,8 @@ void replica_split_manager::on_copy_mutation(mutation_ptr 
&mu) // on child parti
 // ThreadPool: THREAD_POOL_REPLICATION
 void replica_split_manager::ack_parent(error_code ec, mutation_ptr &mu) // on 
child partition
 {
-    dassert_replica(mu->is_sync_to_child(), "mutation({}) should be copied 
synchronously");
+    CHECK_PREFIX_MSG(
+        mu->is_sync_to_child(), "mutation({}) should be copied synchronously", 
mu->name());
     _stub->split_replica_exec(LPC_PARTITION_SPLIT,
                               _replica->_split_states.parent_gpid,
                               
std::bind(&replica_split_manager::on_copy_mutation_reply,
@@ -1362,7 +1356,7 @@ void 
replica_split_manager::on_copy_mutation_reply(error_code ec,
         case partition_status::PS_ERROR:
             break;
         default:
-            dassert_replica(false, "wrong status({})", 
enum_to_string(status()));
+            CHECK_PREFIX_MSG(false, "wrong status({})", 
enum_to_string(status()));
             break;
         }
     }
@@ -1372,14 +1366,14 @@ void 
replica_split_manager::on_copy_mutation_reply(error_code ec,
 void replica_split_manager::parent_stop_split(
     split_status::type meta_split_status) // on parent partition
 {
-    dassert_replica(status() == partition_status::PS_PRIMARY ||
-                        status() == partition_status::PS_SECONDARY,
-                    "wrong partition_status({})",
-                    enum_to_string(status()));
-    dassert_replica(_split_status == split_status::SPLITTING ||
-                        _split_status == split_status::NOT_SPLIT,
-                    "wrong split_status({})",
-                    enum_to_string(_split_status));
+    CHECK_PREFIX_MSG(status() == partition_status::PS_PRIMARY ||
+                         status() == partition_status::PS_SECONDARY,
+                     "wrong partition_status({})",
+                     enum_to_string(status()));
+    CHECK_PREFIX_MSG(_split_status == split_status::SPLITTING ||
+                         _split_status == split_status::NOT_SPLIT,
+                     "wrong split_status({})",
+                     enum_to_string(_split_status));
 
     auto old_status = _split_status;
     if (_split_status == split_status::SPLITTING) {
diff --git a/src/server/meta_store.cpp b/src/server/meta_store.cpp
index ab097140d..6a4e69541 100644
--- a/src/server/meta_store.cpp
+++ b/src/server/meta_store.cpp
@@ -78,11 +78,11 @@ std::string meta_store::get_usage_scenario() const
     // If couldn't find rocksdb usage scenario in meta column family, return 
normal in default.
     std::string usage_scenario = ROCKSDB_ENV_USAGE_SCENARIO_NORMAL;
     auto ec = get_string_value_from_meta_cf(false, 
ROCKSDB_ENV_USAGE_SCENARIO_KEY, &usage_scenario);
-    dassert_replica(ec == ::dsn::ERR_OK || ec == ::dsn::ERR_OBJECT_NOT_FOUND,
-                    "rocksdb {} get {} from meta column family failed: {}",
-                    _db->GetName(),
-                    ROCKSDB_ENV_USAGE_SCENARIO_KEY,
-                    ec.to_string());
+    CHECK_PREFIX_MSG(ec == ::dsn::ERR_OK || ec == ::dsn::ERR_OBJECT_NOT_FOUND,
+                     "rocksdb {} get {} from meta column family failed: {}",
+                     _db->GetName(),
+                     ROCKSDB_ENV_USAGE_SCENARIO_KEY,
+                     ec);
     return usage_scenario;
 }
 
diff --git a/src/server/pegasus_mutation_duplicator.cpp 
b/src/server/pegasus_mutation_duplicator.cpp
index 7e996e4ca..95728e160 100644
--- a/src/server/pegasus_mutation_duplicator.cpp
+++ b/src/server/pegasus_mutation_duplicator.cpp
@@ -81,10 +81,10 @@ 
pegasus_mutation_duplicator::pegasus_mutation_duplicator(dsn::replication::repli
     _client = static_cast<client::pegasus_client_impl *>(client);
 
     auto ret = 
dsn::replication::get_duplication_cluster_id(remote_cluster.data());
-    dassert_replica(ret.is_ok(), // never possible, meta server disallows such 
remote_cluster.
-                    "invalid remote cluster: {}, err_ret: {}",
-                    remote_cluster,
-                    ret.get_error());
+    CHECK_PREFIX_MSG(ret.is_ok(), // never possible, meta server disallows 
such remote_cluster.
+                     "invalid remote cluster: {}, err_ret: {}",
+                     remote_cluster,
+                     ret.get_error());
     _remote_cluster_id = static_cast<uint8_t>(ret.get_value());
 
     LOG_INFO_PREFIX("initialize mutation duplicator for local cluster [id:{}], 
"
@@ -94,10 +94,8 @@ 
pegasus_mutation_duplicator::pegasus_mutation_duplicator(dsn::replication::repli
                     remote_cluster);
 
     // never possible to duplicate data to itself
-    dassert_replica(get_current_cluster_id() != _remote_cluster_id,
-                    "invalid remote cluster: {} {}",
-                    remote_cluster,
-                    _remote_cluster_id);
+    CHECK_NE_PREFIX_MSG(
+        get_current_cluster_id(), _remote_cluster_id, "invalid remote cluster: 
{}", remote_cluster);
 
     std::string str_gpid = fmt::format("{}", get_gpid());
     _shipped_ops.init_app_counter("app.pegasus",
@@ -150,7 +148,7 @@ void 
pegasus_mutation_duplicator::on_duplicate_reply(uint64_t hash,
                              rpc.request().entries.size());
         }
         // duplicating an illegal write to server is unacceptable, fail fast.
-        dassert_replica(perr != PERR_INVALID_ARGUMENT, 
rpc.response().error_hint);
+        CHECK_NE_PREFIX_MSG(perr, PERR_INVALID_ARGUMENT, 
rpc.response().error_hint);
     } else {
         _shipped_ops->increment();
         _total_shipped_size +=
diff --git a/src/server/pegasus_server_impl.cpp 
b/src/server/pegasus_server_impl.cpp
index c44154f25..189b1e030 100644
--- a/src/server/pegasus_server_impl.cpp
+++ b/src/server/pegasus_server_impl.cpp
@@ -1471,7 +1471,7 @@ void pegasus_server_impl::on_clear_scanner(const int64_t 
&args) { _context_cache
 
 dsn::error_code pegasus_server_impl::start(int argc, char **argv)
 {
-    dassert_replica(!_is_open, "replica is already opened.");
+    CHECK_PREFIX_MSG(!_is_open, "replica is already opened");
     LOG_INFO_PREFIX("start to open app {}", data_dir());
 
     // parse envs for parameters
@@ -1587,8 +1587,8 @@ dsn::error_code pegasus_server_impl::start(int argc, char 
**argv)
             LOG_ERROR_PREFIX("check column families failed");
             return dsn::ERR_LOCAL_APP_FAILURE;
         }
-        dassert_replica(!missing_meta_cf, "You must upgrade Pegasus server 
from 2.0");
-        dassert_replica(!missing_data_cf, "Missing data column family");
+        CHECK_PREFIX_MSG(!missing_meta_cf, "You must upgrade Pegasus server 
from 2.0");
+        CHECK_PREFIX_MSG(!missing_data_cf, "Missing data column family");
 
         // Load latest options from option file stored in the db directory.
         rocksdb::DBOptions loaded_db_opt;
@@ -3284,7 +3284,8 @@ void pegasus_server_impl::set_partition_version(int32_t 
partition_version)
 void pegasus_server_impl::release_db()
 {
     if (_db) {
-        dassert_replica(_data_cf != nullptr && _meta_cf != nullptr, "");
+        CHECK_NOTNULL_PREFIX(_data_cf);
+        CHECK_NOTNULL_PREFIX(_meta_cf);
         _db->DestroyColumnFamilyHandle(_data_cf);
         _data_cf = nullptr;
         _db->DestroyColumnFamilyHandle(_meta_cf);
diff --git a/src/utils/fmt_logging.h b/src/utils/fmt_logging.h
index 973fa8a8e..7187d4183 100644
--- a/src/utils/fmt_logging.h
+++ b/src/utils/fmt_logging.h
@@ -55,7 +55,6 @@
 #define LOG_WARNING_PREFIX(...) LOG_WARNING_F("[{}] {}", log_prefix(), 
fmt::format(__VA_ARGS__))
 #define LOG_ERROR_PREFIX(...) LOG_ERROR_F("[{}] {}", log_prefix(), 
fmt::format(__VA_ARGS__))
 #define LOG_FATAL_PREFIX(...) LOG_FATAL_F("[{}] {}", log_prefix(), 
fmt::format(__VA_ARGS__))
-#define dassert_replica(x, ...) CHECK(x, "[{}] {}", log_prefix(), 
fmt::format(__VA_ARGS__))
 
 // Macros to check expected condition. It will abort the application
 // and log a fatal message when the condition is not met.
@@ -109,48 +108,61 @@
 #define CHECK_LT(var1, var2) CHECK_LT_MSG(var1, var2, "")
 
 // TODO(yingchun): add CHECK_NULL(ptr), CHECK_OK(err), CHECK(cond)
-#define CHECK_NE_PREFIX(var1, var2)                                            
                    \
+
+#define CHECK_PREFIX_MSG(x, ...) CHECK(x, "[{}] {}", log_prefix(), 
fmt::format(__VA_ARGS__))
+#define CHECK_NOTNULL_PREFIX_MSG(p, ...) CHECK_PREFIX_MSG(p != nullptr, 
fmt::format(__VA_ARGS__))
+#define CHECK_NOTNULL_PREFIX(p) CHECK_NOTNULL_PREFIX_MSG(p, "")
+
+#define CHECK_NE_PREFIX_MSG(var1, var2, ...)                                   
                    \
     do {                                                                       
                    \
         const auto &_v1 = (var1);                                              
                    \
         const auto &_v2 = (var2);                                              
                    \
-        dassert_replica(_v1 != _v2, "{} vs {}", _v1, _v2);                     
                    \
+        CHECK_PREFIX_MSG(_v1 != _v2, "{} vs {} {}", _v1, _v2, 
fmt::format(__VA_ARGS__));           \
     } while (false)
 
-#define CHECK_EQ_PREFIX(var1, var2)                                            
                    \
+#define CHECK_EQ_PREFIX_MSG(var1, var2, ...)                                   
                    \
     do {                                                                       
                    \
         const auto &_v1 = (var1);                                              
                    \
         const auto &_v2 = (var2);                                              
                    \
-        dassert_replica(_v1 == _v2, "{} vs {}", _v1, _v2);                     
                    \
+        CHECK_PREFIX_MSG(_v1 == _v2, "{} vs {} {}", _v1, _v2, 
fmt::format(__VA_ARGS__));           \
     } while (false)
 
-#define CHECK_GE_PREFIX(var1, var2)                                            
                    \
+#define CHECK_GE_PREFIX_MSG(var1, var2, ...)                                   
                    \
     do {                                                                       
                    \
         const auto &_v1 = (var1);                                              
                    \
         const auto &_v2 = (var2);                                              
                    \
-        dassert_replica(_v1 >= _v2, "{} vs {}", _v1, _v2);                     
                    \
+        CHECK_PREFIX_MSG(_v1 >= _v2, "{} vs {} {}", _v1, _v2, 
fmt::format(__VA_ARGS__));           \
     } while (false)
 
-#define CHECK_LE_PREFIX(var1, var2)                                            
                    \
+#define CHECK_LE_PREFIX_MSG(var1, var2, ...)                                   
                    \
     do {                                                                       
                    \
         const auto &_v1 = (var1);                                              
                    \
         const auto &_v2 = (var2);                                              
                    \
-        dassert_replica(_v1 <= _v2, "{} vs {}", _v1, _v2);                     
                    \
+        CHECK_PREFIX_MSG(_v1 <= _v2, "{} vs {} {}", _v1, _v2, 
fmt::format(__VA_ARGS__));           \
     } while (false)
 
-#define CHECK_GT_PREFIX(var1, var2)                                            
                    \
+#define CHECK_GT_PREFIX_MSG(var1, var2, ...)                                   
                    \
     do {                                                                       
                    \
         const auto &_v1 = (var1);                                              
                    \
         const auto &_v2 = (var2);                                              
                    \
-        dassert_replica(_v1 > _v2, "{} vs {}", _v1, _v2);                      
                    \
+        CHECK_PREFIX_MSG(_v1 > _v2, "{} vs {} {}", _v1, _v2, 
fmt::format(__VA_ARGS__));            \
     } while (false)
 
-#define CHECK_LT_PREFIX(var1, var2)                                            
                    \
+#define CHECK_LT_PREFIX_MSG(var1, var2, ...)                                   
                    \
     do {                                                                       
                    \
         const auto &_v1 = (var1);                                              
                    \
         const auto &_v2 = (var2);                                              
                    \
-        dassert_replica(_v1 < _v2, "{} vs {}", _v1, _v2);                      
                    \
+        CHECK_PREFIX_MSG(_v1 < _v2, "{} vs {} {}", _v1, _v2, 
fmt::format(__VA_ARGS__));            \
     } while (false)
 
+#define CHECK_PREFIX(x) CHECK_PREFIX_MSG(x, "")
+#define CHECK_NE_PREFIX(var1, var2) CHECK_NE_PREFIX_MSG(var1, var2, "")
+#define CHECK_EQ_PREFIX(var1, var2) CHECK_EQ_PREFIX_MSG(var1, var2, "")
+#define CHECK_GE_PREFIX(var1, var2) CHECK_GE_PREFIX_MSG(var1, var2, "")
+#define CHECK_LE_PREFIX(var1, var2) CHECK_LE_PREFIX_MSG(var1, var2, "")
+#define CHECK_GT_PREFIX(var1, var2) CHECK_GT_PREFIX_MSG(var1, var2, "")
+#define CHECK_LT_PREFIX(var1, var2) CHECK_LT_PREFIX_MSG(var1, var2, "")
+
 // Return the given status if condition is not true.
 #define ERR_LOG_AND_RETURN_NOT_TRUE(s, err, ...)                               
                    \
     do {                                                                       
                    \


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to