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 0ffc3c9dd refactor(macro): use DCHECK* to replace dbg_dassert and self
defined ASSERT_* (#1228)
0ffc3c9dd is described below
commit 0ffc3c9ddcd8724a5bc8c20300fa31bc7d767a73
Author: Yingchun Lai <[email protected]>
AuthorDate: Mon Nov 7 21:15:06 2022 +0800
refactor(macro): use DCHECK* to replace dbg_dassert and self defined
ASSERT_* (#1228)
---
.../test/balancer_simulator/balancer_simulator.cpp | 25 +---
src/meta/test/balancer_validator.cpp | 105 +++++++----------
src/meta/test/misc/misc.cpp | 129 +++++++++++----------
src/runtime/rpc/network.cpp | 10 +-
src/runtime/rpc/rpc_engine.cpp | 34 +++---
src/runtime/rpc/rpc_message.cpp | 1 -
src/runtime/rpc/rpc_stream.h | 21 ++--
src/runtime/rpc/rpc_task.cpp | 18 +--
src/runtime/task/task_queue.cpp | 2 +-
src/utils/fmt_logging.h | 64 ++++++++--
10 files changed, 213 insertions(+), 196 deletions(-)
diff --git a/src/meta/test/balancer_simulator/balancer_simulator.cpp
b/src/meta/test/balancer_simulator/balancer_simulator.cpp
index 2fa7b1b7b..2efd6b2aa 100644
--- a/src/meta/test/balancer_simulator/balancer_simulator.cpp
+++ b/src/meta/test/balancer_simulator/balancer_simulator.cpp
@@ -25,30 +25,17 @@
*/
#include <algorithm>
+
#include <gtest/gtest.h>
+#include "meta/greedy_load_balancer.h"
#include "meta/meta_data.h"
#include "meta/server_load_balancer.h"
-#include "meta/greedy_load_balancer.h"
#include "meta/test/misc/misc.h"
+#include "utils/fmt_logging.h"
using namespace dsn::replication;
-#ifdef ASSERT_EQ
-#undef ASSERT_EQ
-#endif
-#define ASSERT_EQ(left, right) CHECK((left) == (right), "")
-
-#ifdef ASSERT_TRUE
-#undef ASSERT_TRUE
-#endif
-#define ASSERT_TRUE(exp) CHECK((exp), "")
-
-#ifdef ASSERT_FALSE
-#undef ASSERT_FALSE
-#endif
-#define ASSERT_FALSE(exp) CHECK(!(exp), "")
-
class simple_priority_queue
{
public:
@@ -143,8 +130,8 @@ void generate_balanced_apps(/*out*/ app_mapper &apps,
apps.emplace(the_app->app_id, the_app);
- ASSERT_TRUE(pri_max - pri_min <= 1);
- ASSERT_TRUE(part_max - part_min <= 1);
+ CHECK_LE(pri_max - pri_min, 1);
+ CHECK_LE(part_max - part_min, 1);
}
void random_move_primary(app_mapper &apps, node_mapper &nodes, int
primary_move_ratio)
@@ -184,7 +171,7 @@ void greedy_balancer_perfect_move_primary()
for (const auto &kv : ml) {
const std::shared_ptr<configuration_balancer_request> &req =
kv.second;
for (const configuration_proposal_action &act : req->action_list) {
- ASSERT_TRUE(act.type != config_type::CT_ADD_SECONDARY_FOR_LB);
+ CHECK_NE(act.type, config_type::CT_ADD_SECONDARY_FOR_LB);
}
}
glb.check({&apps, &nodes}, ml);
diff --git a/src/meta/test/balancer_validator.cpp
b/src/meta/test/balancer_validator.cpp
index 60f5146c4..ffb117789 100644
--- a/src/meta/test/balancer_validator.cpp
+++ b/src/meta/test/balancer_validator.cpp
@@ -24,66 +24,42 @@
* THE SOFTWARE.
*/
+#include <fstream>
+
#include <gtest/gtest.h>
#include "common/api_common.h"
-#include "runtime/api_task.h"
+#include "common/gpid.h"
+#include "backup_types.h"
+#include "bulk_load_types.h"
+#include "common/serialization_helper/dsn.layer2_types.h"
+#include "consensus_types.h"
+#include "duplication_types.h"
+#include "meta_admin_types.h"
+#include "meta_service_test_app.h"
+#include "meta/greedy_load_balancer.h"
+#include "meta/meta_data.h"
+#include "meta/server_load_balancer.h"
+#include "meta/test/misc/misc.h"
+#include "partition_split_types.h"
+#include "replica_admin_types.h"
#include "runtime/api_layer1.h"
-#include "runtime/app_model.h"
-#include "utils/api_utilities.h"
-#include "common/api_common.h"
#include "runtime/api_task.h"
-#include "runtime/api_layer1.h"
#include "runtime/app_model.h"
-#include "utils/api_utilities.h"
-#include "utils/error_code.h"
-#include "utils/threadpool_code.h"
-#include "runtime/task/task_code.h"
-#include "common/gpid.h"
-#include "runtime/rpc/serialization.h"
#include "runtime/rpc/rpc_stream.h"
+#include "runtime/rpc/serialization.h"
#include "runtime/serverlet.h"
#include "runtime/service_app.h"
+#include "runtime/task/task_code.h"
+#include "utils/api_utilities.h"
+#include "utils/error_code.h"
+#include "utils/fmt_logging.h"
#include "utils/rpc_address.h"
-#include "meta_admin_types.h"
-#include "partition_split_types.h"
-#include "duplication_types.h"
-#include "bulk_load_types.h"
-#include "backup_types.h"
-#include "consensus_types.h"
-#include "replica_admin_types.h"
-#include "common/serialization_helper/dsn.layer2_types.h"
-
-#include <fstream>
-
-#include "meta/meta_data.h"
-#include "meta/server_load_balancer.h"
-#include "meta/greedy_load_balancer.h"
-
-#include "meta/test/misc/misc.h"
-
-#include "meta_service_test_app.h"
+#include "utils/threadpool_code.h"
namespace dsn {
namespace replication {
-#ifdef ASSERT_EQ
-#undef ASSERT_EQ
-#endif
-
-#define ASSERT_EQ(left, right) CHECK((left) == (right), "")
-
-#ifdef ASSERT_TRUE
-#undef ASSERT_TRUE
-#endif
-
-#define ASSERT_TRUE(exp) CHECK((exp), "")
-
-#ifdef ASSERT_FALSE
-#undef ASSERT_FALSE
-#endif
-#define ASSERT_FALSE(exp) CHECK(!(exp), "")
-
static void check_cure(app_mapper &apps, node_mapper &nodes,
::dsn::partition_configuration &pc)
{
meta_service svc;
@@ -98,48 +74,49 @@ static void check_cure(app_mapper &apps, node_mapper
&nodes, ::dsn::partition_co
break;
switch (act.type) {
case config_type::CT_ASSIGN_PRIMARY:
- ASSERT_TRUE(pc.primary.is_invalid() && pc.secondaries.size() == 0);
- ASSERT_EQ(act.node, act.target);
- ASSERT_TRUE(nodes.find(act.node) != nodes.end());
+ CHECK(pc.primary.is_invalid(), "");
+ CHECK(pc.secondaries.empty(), "");
+ CHECK_EQ(act.node, act.target);
+ CHECK(nodes.find(act.node) != nodes.end(), "");
- ASSERT_EQ(nodes[act.node].served_as(pc.pid),
partition_status::PS_INACTIVE);
+ CHECK_EQ(nodes[act.node].served_as(pc.pid),
partition_status::PS_INACTIVE);
nodes[act.node].put_partition(pc.pid, true);
pc.primary = act.node;
break;
case config_type::CT_ADD_SECONDARY:
- ASSERT_FALSE(is_member(pc, act.node));
- ASSERT_EQ(pc.primary, act.target);
- ASSERT_TRUE(nodes.find(act.node) != nodes.end());
+ CHECK(!is_member(pc, act.node), "");
+ CHECK_EQ(pc.primary, act.target);
+ CHECK(nodes.find(act.node) != nodes.end(), "");
pc.secondaries.push_back(act.node);
ns = &nodes[act.node];
- ASSERT_EQ(ns->served_as(pc.pid), partition_status::PS_INACTIVE);
+ CHECK_EQ(ns->served_as(pc.pid), partition_status::PS_INACTIVE);
ns->put_partition(pc.pid, false);
break;
default:
- ASSERT_TRUE(false);
+ CHECK(false, "");
break;
}
}
// test upgrade to primary
- ASSERT_EQ(nodes[pc.primary].served_as(pc.pid),
partition_status::PS_PRIMARY);
+ CHECK_EQ(nodes[pc.primary].served_as(pc.pid),
partition_status::PS_PRIMARY);
nodes[pc.primary].remove_partition(pc.pid, true);
pc.primary.set_invalid();
ps = guardian.cure({&apps, &nodes}, pc.pid, act);
- ASSERT_EQ(act.type, config_type::CT_UPGRADE_TO_PRIMARY);
- ASSERT_TRUE(pc.primary.is_invalid());
- ASSERT_EQ(act.node, act.target);
- ASSERT_TRUE(is_secondary(pc, act.node));
- ASSERT_TRUE(nodes.find(act.node) != nodes.end());
+ CHECK_EQ(act.type, config_type::CT_UPGRADE_TO_PRIMARY);
+ CHECK(pc.primary.is_invalid(), "");
+ CHECK_EQ(act.node, act.target);
+ CHECK(is_secondary(pc, act.node), "");
+ CHECK(nodes.find(act.node) != nodes.end(), "");
ns = &nodes[act.node];
pc.primary = act.node;
std::remove(pc.secondaries.begin(), pc.secondaries.end(), pc.primary);
- ASSERT_EQ(ns->served_as(pc.pid), partition_status::PS_SECONDARY);
+ CHECK_EQ(ns->served_as(pc.pid), partition_status::PS_SECONDARY);
ns->put_partition(pc.pid, true);
}
@@ -286,8 +263,8 @@ void meta_service_test_app::balancer_validator()
std::shared_ptr<app_state> &the_app = apps[1];
for (::dsn::partition_configuration &pc : the_app->partitions) {
- ASSERT_FALSE(pc.primary.is_invalid());
- ASSERT_TRUE(pc.secondaries.size() >= pc.max_replica_count - 1);
+ CHECK(!pc.primary.is_invalid(), "");
+ CHECK_GE(pc.secondaries.size(), pc.max_replica_count - 1);
}
// now test the cure
diff --git a/src/meta/test/misc/misc.cpp b/src/meta/test/misc/misc.cpp
index 147b0432d..8b3a38374 100644
--- a/src/meta/test/misc/misc.cpp
+++ b/src/meta/test/misc/misc.cpp
@@ -24,20 +24,19 @@
* THE SOFTWARE.
*/
+#include "misc.h"
+
#include <cstdlib>
#include <iostream>
+
#include <boost/lexical_cast.hpp>
-#include "utils/rand.h"
#include "common/replication_common.h"
-#include "misc.h"
+#include "utils/fmt_logging.h"
+#include "utils/rand.h"
using namespace dsn::replication;
-#define ASSERT_EQ(left, right) CHECK((left) == (right), "")
-#define ASSERT_TRUE(exp) CHECK((exp), "")
-#define ASSERT_FALSE(exp) CHECK(!(exp), "")
-
uint32_t random32(uint32_t min, uint32_t max)
{
uint32_t res = (uint32_t)(rand() % (max - min + 1));
@@ -88,7 +87,7 @@ void generate_node_mapper(
ns->put_partition(pc.pid, true);
}
for (const dsn::rpc_address &sec : pc.secondaries) {
- ASSERT_FALSE(sec.is_invalid());
+ CHECK(!sec.is_invalid(), "");
ns = get_node_state(output_nodes, sec, true);
ns->put_partition(pc.pid, false);
}
@@ -113,10 +112,10 @@ void generate_app(/*out*/ std::shared_ptr<app_state> &app,
if (i != p)
pc.secondaries.push_back(node_list[indices[i]]);
- ASSERT_FALSE(pc.primary.is_invalid());
- ASSERT_FALSE(is_secondary(pc, pc.primary));
- ASSERT_EQ(pc.secondaries.size(), 2);
- ASSERT_TRUE(pc.secondaries[0] != pc.secondaries[1]);
+ CHECK(!pc.primary.is_invalid(), "");
+ CHECK(!is_secondary(pc, pc.primary), "");
+ CHECK_EQ(pc.secondaries.size(), 2);
+ CHECK_NE(pc.secondaries[0], pc.secondaries[1]);
}
}
@@ -216,26 +215,26 @@ void track_disk_info_check_and_apply(const
dsn::replication::configuration_propo
/*in-out*/ nodes_fs_manager &manager)
{
config_context *cc = get_config_context(apps, pid);
- ASSERT_TRUE(cc != nullptr);
+ CHECK_NOTNULL(cc, "");
fs_manager *target_manager = get_fs_manager(manager, act.target);
- ASSERT_TRUE(target_manager != nullptr);
+ CHECK_NOTNULL(target_manager, "");
fs_manager *node_manager = get_fs_manager(manager, act.node);
- ASSERT_TRUE(node_manager != nullptr);
+ CHECK_NOTNULL(node_manager, "");
std::string dir;
replica_info ri;
switch (act.type) {
case config_type::CT_ASSIGN_PRIMARY:
target_manager->allocate_dir(pid, "test", dir);
- ASSERT_EQ(dsn::ERR_OK, target_manager->get_disk_tag(dir, ri.disk_tag));
+ CHECK_EQ(dsn::ERR_OK, target_manager->get_disk_tag(dir, ri.disk_tag));
cc->collect_serving_replica(act.target, ri);
break;
case config_type::CT_ADD_SECONDARY:
case config_type::CT_ADD_SECONDARY_FOR_LB:
node_manager->allocate_dir(pid, "test", dir);
- ASSERT_EQ(dsn::ERR_OK, node_manager->get_disk_tag(dir, ri.disk_tag));
+ CHECK_EQ(dsn::ERR_OK, node_manager->get_disk_tag(dir, ri.disk_tag));
cc->collect_serving_replica(act.node, ri);
break;
@@ -250,7 +249,7 @@ void track_disk_info_check_and_apply(const
dsn::replication::configuration_propo
break;
default:
- ASSERT_TRUE(false);
+ CHECK(false, "");
break;
}
}
@@ -265,9 +264,9 @@ void proposal_action_check_and_apply(const
configuration_proposal_action &act,
node_state *ns;
++pc.ballot;
- ASSERT_TRUE(act.type != config_type::CT_INVALID);
- ASSERT_FALSE(act.target.is_invalid());
- ASSERT_FALSE(act.node.is_invalid());
+ CHECK_NE(act.type, config_type::CT_INVALID);
+ CHECK(!act.target.is_invalid(), "");
+ CHECK(!act.node.is_invalid(), "");
if (manager) {
track_disk_info_check_and_apply(act, pid, apps, nodes, *manager);
@@ -275,76 +274,76 @@ void proposal_action_check_and_apply(const
configuration_proposal_action &act,
switch (act.type) {
case config_type::CT_ASSIGN_PRIMARY:
- ASSERT_EQ(act.node, act.target);
- ASSERT_TRUE(pc.primary.is_invalid());
- ASSERT_TRUE(pc.secondaries.empty());
+ CHECK_EQ(act.node, act.target);
+ CHECK(pc.primary.is_invalid(), "");
+ CHECK(pc.secondaries.empty(), "");
pc.primary = act.node;
ns = &nodes[act.node];
- ASSERT_EQ(ns->served_as(pc.pid), partition_status::PS_INACTIVE);
+ CHECK_EQ(ns->served_as(pc.pid), partition_status::PS_INACTIVE);
ns->put_partition(pc.pid, true);
break;
case config_type::CT_ADD_SECONDARY:
- ASSERT_EQ(act.target, pc.primary);
- ASSERT_FALSE(is_member(pc, act.node));
+ CHECK_EQ(act.target, pc.primary);
+ CHECK(!is_member(pc, act.node), "");
pc.secondaries.push_back(act.node);
ns = &nodes[act.node];
- ASSERT_EQ(ns->served_as(pc.pid), partition_status::PS_INACTIVE);
+ CHECK_EQ(ns->served_as(pc.pid), partition_status::PS_INACTIVE);
ns->put_partition(pc.pid, false);
break;
case config_type::CT_DOWNGRADE_TO_SECONDARY:
- ASSERT_EQ(act.node, act.target);
- ASSERT_EQ(act.node, pc.primary);
- ASSERT_TRUE(nodes.find(act.node) != nodes.end());
- ASSERT_FALSE(is_secondary(pc, pc.primary));
+ CHECK_EQ(act.node, act.target);
+ CHECK_EQ(act.node, pc.primary);
+ CHECK(nodes.find(act.node) != nodes.end(), "");
+ CHECK(!is_secondary(pc, pc.primary), "");
nodes[act.node].remove_partition(pc.pid, true);
pc.secondaries.push_back(pc.primary);
pc.primary.set_invalid();
break;
case config_type::CT_UPGRADE_TO_PRIMARY:
- ASSERT_TRUE(pc.primary.is_invalid());
- ASSERT_EQ(act.node, act.target);
- ASSERT_TRUE(is_secondary(pc, act.node));
- ASSERT_TRUE(nodes.find(act.node) != nodes.end());
+ CHECK(pc.primary.is_invalid(), "");
+ CHECK_EQ(act.node, act.target);
+ CHECK(is_secondary(pc, act.node), "");
+ CHECK(nodes.find(act.node) != nodes.end(), "");
ns = &nodes[act.node];
pc.primary = act.node;
- ASSERT_TRUE(replica_helper::remove_node(act.node, pc.secondaries));
+ CHECK(replica_helper::remove_node(act.node, pc.secondaries), "");
ns->put_partition(pc.pid, true);
break;
case config_type::CT_ADD_SECONDARY_FOR_LB:
- ASSERT_EQ(act.target, pc.primary);
- ASSERT_FALSE(is_member(pc, act.node));
- ASSERT_FALSE(act.node.is_invalid());
+ CHECK_EQ(act.target, pc.primary);
+ CHECK(!is_member(pc, act.node), "");
+ CHECK(!act.node.is_invalid(), "");
pc.secondaries.push_back(act.node);
ns = &nodes[act.node];
ns->put_partition(pc.pid, false);
- ASSERT_EQ(ns->served_as(pc.pid), partition_status::PS_SECONDARY);
+ CHECK_EQ(ns->served_as(pc.pid), partition_status::PS_SECONDARY);
break;
// in balancer, remove primary is not allowed
case config_type::CT_REMOVE:
case config_type::CT_DOWNGRADE_TO_INACTIVE:
- ASSERT_FALSE(pc.primary.is_invalid());
- ASSERT_EQ(pc.primary, act.target);
- ASSERT_TRUE(is_secondary(pc, act.node));
- ASSERT_TRUE(nodes.find(act.node) != nodes.end());
- ASSERT_TRUE(replica_helper::remove_node(act.node, pc.secondaries));
+ CHECK(!pc.primary.is_invalid(), "");
+ CHECK_EQ(pc.primary, act.target);
+ CHECK(is_secondary(pc, act.node), "");
+ CHECK(nodes.find(act.node) != nodes.end(), "");
+ CHECK(replica_helper::remove_node(act.node, pc.secondaries), "");
ns = &nodes[act.node];
- ASSERT_EQ(ns->served_as(pc.pid), partition_status::PS_SECONDARY);
+ CHECK_EQ(ns->served_as(pc.pid), partition_status::PS_SECONDARY);
ns->remove_partition(pc.pid, false);
break;
default:
- ASSERT_TRUE(false);
+ CHECK(false, "");
break;
}
}
@@ -363,16 +362,17 @@ void migration_check_and_apply(app_mapper &apps,
proposal->gpid.get_partition_index());
std::shared_ptr<app_state> &the_app =
apps.find(proposal->gpid.get_app_id())->second;
- ASSERT_EQ(proposal->gpid.get_app_id(), the_app->app_id);
- ASSERT_TRUE(proposal->gpid.get_partition_index() <
the_app->partition_count);
+ CHECK_EQ(proposal->gpid.get_app_id(), the_app->app_id);
+ CHECK_LT(proposal->gpid.get_partition_index(),
the_app->partition_count);
dsn::partition_configuration &pc =
the_app->partitions[proposal->gpid.get_partition_index()];
- ASSERT_FALSE(pc.primary.is_invalid());
- ASSERT_EQ(pc.secondaries.size(), 2);
- for (auto &addr : pc.secondaries)
- ASSERT_FALSE(addr.is_invalid());
- ASSERT_FALSE(is_secondary(pc, pc.primary));
+ CHECK(!pc.primary.is_invalid(), "");
+ CHECK_EQ(pc.secondaries.size(), 2);
+ for (auto &addr : pc.secondaries) {
+ CHECK(!addr.is_invalid(), "");
+ }
+ CHECK(!is_secondary(pc, pc.primary), "");
for (unsigned int j = 0; j < proposal->action_list.size(); ++j) {
configuration_proposal_action &act = proposal->action_list[j];
@@ -388,22 +388,23 @@ void migration_check_and_apply(app_mapper &apps,
void app_mapper_compare(const app_mapper &mapper1, const app_mapper &mapper2)
{
- ASSERT_EQ(mapper1.size(), mapper2.size());
+ CHECK_EQ(mapper1.size(), mapper2.size());
for (auto &kv : mapper1) {
const std::shared_ptr<app_state> &app1 = kv.second;
- ASSERT_TRUE(mapper2.find(app1->app_id) != mapper2.end());
+ CHECK(mapper2.find(app1->app_id) != mapper2.end(), "");
const std::shared_ptr<app_state> app2 =
mapper2.find(app1->app_id)->second;
- ASSERT_EQ(app1->app_id, app2->app_id);
- ASSERT_EQ(app1->app_name, app2->app_name);
- ASSERT_EQ(app1->app_type, app2->app_type);
- ASSERT_EQ(app1->status, app2->status);
- ASSERT_TRUE(app1->status == dsn::app_status::AS_AVAILABLE ||
- app1->status == dsn::app_status::AS_DROPPED);
+ CHECK_EQ(app1->app_id, app2->app_id);
+ CHECK_EQ(app1->app_name, app2->app_name);
+ CHECK_EQ(app1->app_type, app2->app_type);
+ CHECK_EQ(app1->status, app2->status);
+ CHECK(app1->status == dsn::app_status::AS_AVAILABLE ||
+ app1->status == dsn::app_status::AS_DROPPED,
+ "");
if (app1->status == dsn::app_status::AS_AVAILABLE) {
- ASSERT_EQ(app1->partition_count, app2->partition_count);
+ CHECK_EQ(app1->partition_count, app2->partition_count);
for (unsigned int i = 0; i < app1->partition_count; ++i) {
- ASSERT_TRUE(is_partition_config_equal(app1->partitions[i],
app2->partitions[i]));
+ CHECK(is_partition_config_equal(app1->partitions[i],
app2->partitions[i]), "");
}
}
}
diff --git a/src/runtime/rpc/network.cpp b/src/runtime/rpc/network.cpp
index 6ba20fed2..a1fd672a1 100644
--- a/src/runtime/rpc/network.cpp
+++ b/src/runtime/rpc/network.cpp
@@ -171,12 +171,8 @@ inline bool rpc_session::unlink_message_for_send()
auto n = _messages.next();
int bcount = 0;
- dbg_dassert(0 == _sending_buffers.size(),
- "sending_buffers should be empty, but size = %d",
- (int)_sending_buffers.size());
- dbg_dassert(0 == _sending_msgs.size(),
- "sending_msgs should be empty, but size = %d",
- (int)_sending_msgs.size());
+ DCHECK_EQ(0, _sending_buffers.size());
+ DCHECK_EQ(0, _sending_msgs.size());
while (n != &_messages) {
auto lmsg = CONTAINING_RECORD(n, message_ex, dl);
@@ -429,7 +425,7 @@ bool rpc_session::on_recv_message(message_ex *msg, int
delay_ms)
return false;
}
- dbg_dassert(!is_client(), "only rpc server session can recv rpc
requests");
+ DCHECK(!is_client(), "only rpc server session can recv rpc requests");
_net.on_recv_request(msg, delay_ms);
}
diff --git a/src/runtime/rpc/rpc_engine.cpp b/src/runtime/rpc/rpc_engine.cpp
index 1855efc34..1fe71a577 100644
--- a/src/runtime/rpc/rpc_engine.cpp
+++ b/src/runtime/rpc/rpc_engine.cpp
@@ -95,8 +95,8 @@ bool rpc_client_matcher::on_recv_reply(network *net, uint64_t
key, message_ex *r
}
}
- dbg_dassert(call != nullptr, "rpc response task cannot be empty");
- dbg_dassert(timeout_task != nullptr, "rpc timeout task cannot be empty");
+ DCHECK_NOTNULL(call, "rpc response task cannot be nullptr");
+ DCHECK_NOTNULL(timeout_task, "rpc timeout task cannot be nullptr");
if (timeout_task != task::get_current_task()) {
timeout_task->cancel(false); // no need to wait
@@ -127,10 +127,12 @@ bool rpc_client_matcher::on_recv_reply(network *net,
uint64_t key, message_ex *r
::dsn::unmarshall((dsn::message_ex *)reply, addr);
// handle the case of forwarding to itself where addr ==
req->to_address.
- dbg_dassert(addr != req->to_address,
- "impossible forwarding to myself as this only happens when
i'm pure client so "
- "i don't get a named to_address %s",
- addr.to_string());
+ DCHECK_NE_MSG(
+ addr,
+ req->to_address,
+ "impossible forwarding to myself as this only happens when i'm
pure client so "
+ "i don't get a named to_address {}",
+ addr);
// server address side effect
switch (req->server_address.type()) {
@@ -223,7 +225,7 @@ void rpc_client_matcher::on_rpc_timeout(uint64_t key)
}
}
- dbg_dassert(call != nullptr, "rpc response task is missing for rpc request
%" PRIu64, key);
+ DCHECK_NOTNULL(call, "rpc response task is missing for rpc request {}",
key);
// if timeout
if (!resend) {
@@ -296,7 +298,7 @@ void rpc_client_matcher::on_call(message_ex *request, const
rpc_response_task_pt
timeout_ms = sp->rpc_request_resend_timeout_milliseconds;
}
- dbg_dassert(call != nullptr, "rpc response task cannot be empty");
+ DCHECK_NOTNULL(call, "rpc response task cannot be nullptr");
task *timeout_task(new rpc_timeout_task(this, hdr.id, call->node()));
{
@@ -619,7 +621,7 @@ void rpc_engine::call_group(rpc_address addr,
message_ex *request,
const rpc_response_task_ptr &call)
{
- dbg_dassert(addr.type() == HOST_TYPE_GROUP, "only group is now supported");
+ DCHECK_EQ_MSG(addr.type(), HOST_TYPE_GROUP, "only group is now supported");
auto sp = task_spec::get(request->local_rpc_code);
switch (sp->grpc_mode) {
@@ -644,8 +646,8 @@ void rpc_engine::call_ip(rpc_address addr,
bool reset_request_id,
bool set_forwarded)
{
- dbg_dassert(addr.type() == HOST_TYPE_IPV4, "only IPV4 is now supported");
- dbg_dassert(addr.port() > MAX_CLIENT_PORT, "only server address can be
called");
+ DCHECK_EQ_MSG(addr.type(), HOST_TYPE_IPV4, "only IPV4 is now supported");
+ DCHECK_GT_MSG(addr.port(), MAX_CLIENT_PORT, "only server address can be
called");
CHECK(!request->header->from_address.is_invalid(),
"from address must be set before call call_ip");
@@ -766,8 +768,9 @@ void rpc_engine::reply(message_ex *response, error_code err)
// request is forwarded, we cannot use the original rpc session,
// so use client session to send response.
else {
- dbg_dassert(response->to_address.port() > MAX_CLIENT_PORT,
- "target address must have named port in this case");
+ DCHECK_GT_MSG(response->to_address.port(),
+ MAX_CLIENT_PORT,
+ "target address must have named port in this case");
// use the header format recorded in the message
auto rpc_channel = sp ? sp->rpc_call_channel : RPC_CHANNEL_TCP;
@@ -789,8 +792,9 @@ void rpc_engine::reply(message_ex *response, error_code err)
// not connection oriented network, we always use the named network to
send msgs
else {
- dbg_dassert(response->to_address.port() > MAX_CLIENT_PORT,
- "target address must have named port in this case");
+ DCHECK_GT_MSG(response->to_address.port(),
+ MAX_CLIENT_PORT,
+ "target address must have named port in this case");
auto rpc_channel = sp ? sp->rpc_call_channel : RPC_CHANNEL_TCP;
network *net =
_server_nets[response->header->from_address.port()][rpc_channel].get();
diff --git a/src/runtime/rpc/rpc_message.cpp b/src/runtime/rpc/rpc_message.cpp
index 7ef399916..6b06621e9 100644
--- a/src/runtime/rpc/rpc_message.cpp
+++ b/src/runtime/rpc/rpc_message.cpp
@@ -119,7 +119,6 @@ message_ex *message_ex::create_receive_message(const blob
&data)
auto data2 = data.range((int)sizeof(message_header));
msg->buffers.push_back(data2);
- // dbg_dassert(msg->header->body_length > 0, "message %s is empty!",
msg->header->rpc_name);
return msg;
}
diff --git a/src/runtime/rpc/rpc_stream.h b/src/runtime/rpc/rpc_stream.h
index 45f3d9f7d..6cfd78912 100644
--- a/src/runtime/rpc/rpc_stream.h
+++ b/src/runtime/rpc/rpc_stream.h
@@ -26,19 +26,20 @@
#pragma once
-#include "utils/utils.h"
-#include "utils/binary_reader.h"
-#include "utils/binary_writer.h"
-#include "runtime/rpc/rpc_message.h"
-#include "utils/error_code.h"
-#include "utils/threadpool_code.h"
-#include "runtime/task/task_code.h"
-#include "common/gpid.h"
#include "common/api_common.h"
-#include "runtime/api_task.h"
+#include "common/gpid.h"
#include "runtime/api_layer1.h"
+#include "runtime/api_task.h"
#include "runtime/app_model.h"
+#include "runtime/rpc/rpc_message.h"
+#include "runtime/task/task_code.h"
#include "utils/api_utilities.h"
+#include "utils/binary_reader.h"
+#include "utils/binary_writer.h"
+#include "utils/error_code.h"
+#include "utils/fmt_logging.h"
+#include "utils/threadpool_code.h"
+#include "utils/utils.h"
namespace dsn {
@@ -120,7 +121,7 @@ private:
void *ptr;
size_t sz;
_msg->write_next(&ptr, &sz, size);
- dbg_dassert(sz >= size, "allocated buffer size must be not less than
the required size");
+ DCHECK_GE_MSG(sz, size, "allocated buffer size must be not less than
the required size");
bb.assign((const char *)ptr, 0, (int)sz);
_last_write_next_total_size = total_size();
diff --git a/src/runtime/rpc/rpc_task.cpp b/src/runtime/rpc/rpc_task.cpp
index 58085e6d8..b15be93e5 100644
--- a/src/runtime/rpc/rpc_task.cpp
+++ b/src/runtime/rpc/rpc_task.cpp
@@ -35,10 +35,11 @@ rpc_request_task::rpc_request_task(message_ex *request,
rpc_request_handler &&h,
_handler(std::move(h)),
_enqueue_ts_ns(0)
{
- dbg_dassert(
- TASK_TYPE_RPC_REQUEST == spec().type,
- "%s is not a RPC_REQUEST task, please use DEFINE_TASK_CODE_RPC to
define the task code",
- spec().name.c_str());
+ DCHECK_EQ_MSG(
+ TASK_TYPE_RPC_REQUEST,
+ spec().type,
+ "{} is not a RPC_REQUEST task, please use DEFINE_TASK_CODE_RPC to
define the task code",
+ spec().name);
_request->add_ref(); // released in dctor
}
@@ -76,10 +77,11 @@ rpc_response_task::rpc_response_task(message_ex *request,
set_error_code(ERR_IO_PENDING);
- dbg_dassert(TASK_TYPE_RPC_RESPONSE == spec().type,
- "%s is not of RPC_RESPONSE type, please use
DEFINE_TASK_CODE_RPC to define the "
- "request task code",
- spec().name.c_str());
+ DCHECK_EQ_MSG(TASK_TYPE_RPC_RESPONSE,
+ spec().type,
+ "{} is not of RPC_RESPONSE type, please use
DEFINE_TASK_CODE_RPC to define the "
+ "request task code",
+ spec().name);
_request = request;
_response = nullptr;
diff --git a/src/runtime/task/task_queue.cpp b/src/runtime/task/task_queue.cpp
index a992efe9f..6bb5fa629 100644
--- a/src/runtime/task/task_queue.cpp
+++ b/src/runtime/task/task_queue.cpp
@@ -88,7 +88,7 @@ void task_queue::enqueue_internal(task *task)
}
}
} else {
- dbg_dassert(TM_REJECT == throttle_mode, "unknow mode %d",
(int)throttle_mode);
+ DCHECK_EQ_MSG(TM_REJECT, throttle_mode, "unknow mode {}",
throttle_mode);
if (ac_value > _spec->queue_length_throttling_threshold) {
auto rtask = static_cast<rpc_request_task *>(task);
diff --git a/src/utils/fmt_logging.h b/src/utils/fmt_logging.h
index 09d531090..973fa8a8e 100644
--- a/src/utils/fmt_logging.h
+++ b/src/utils/fmt_logging.h
@@ -47,13 +47,6 @@
}
\
} while (false)
-// TODO(yingchun): use DCHECK instead of dbg_dassert
-#ifndef NDEBUG
-#define dbg_dassert CHECK
-#else
-#define dbg_dassert(x, ...)
-#endif
-
#define CHECK_NOTNULL(p, ...) CHECK(p != nullptr, __VA_ARGS__)
// Macros for writing log message prefixed by log_prefix().
@@ -116,6 +109,13 @@
#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)
\
+ do {
\
+ const auto &_v1 = (var1);
\
+ const auto &_v2 = (var2);
\
+ dassert_replica(_v1 != _v2, "{} vs {}", _v1, _v2);
\
+ } while (false)
+
#define CHECK_EQ_PREFIX(var1, var2)
\
do {
\
const auto &_v1 = (var1);
\
@@ -166,3 +166,53 @@
error_code _err = (s);
\
ERR_LOG_AND_RETURN_NOT_TRUE(_err == ERR_OK, _err, __VA_ARGS__);
\
} while (0)
+
+#ifndef NDEBUG
+#define DCHECK CHECK
+#define DCHECK_NOTNULL CHECK_NOTNULL
+
+#define DCHECK_NE_MSG CHECK_NE_MSG
+#define DCHECK_EQ_MSG CHECK_EQ_MSG
+#define DCHECK_GE_MSG CHECK_GE_MSG
+#define DCHECK_LE_MSG CHECK_LE_MSG
+#define DCHECK_GT_MSG CHECK_GT_MSG
+#define DCHECK_LT_MSG CHECK_LT_MSG
+
+#define DCHECK_NE CHECK_NE
+#define DCHECK_EQ CHECK_EQ
+#define DCHECK_GE CHECK_GE
+#define DCHECK_LE CHECK_LE
+#define DCHECK_GT CHECK_GT
+#define DCHECK_LT CHECK_LT
+
+#define DCHECK_NE_PREFIX CHECK_NE_PREFIX
+#define DCHECK_EQ_PREFIX CHECK_EQ_PREFIX
+#define DCHECK_GE_PREFIX CHECK_GE_PREFIX
+#define DCHECK_LE_PREFIX CHECK_LE_PREFIX
+#define DCHECK_GT_PREFIX CHECK_GT_PREFIX
+#define DCHECK_LT_PREFIX CHECK_LT_PREFIX
+#else
+#define DCHECK(x, ...)
+#define DCHECK_NOTNULL(p, ...)
+
+#define DCHECK_NE_MSG(var1, var2, ...)
+#define DCHECK_EQ_MSG(var1, var2, ...)
+#define DCHECK_GE_MSG(var1, var2, ...)
+#define DCHECK_LE_MSG(var1, var2, ...)
+#define DCHECK_GT_MSG(var1, var2, ...)
+#define DCHECK_LT_MSG(var1, var2, ...)
+
+#define DCHECK_NE(var1, var2)
+#define DCHECK_EQ(var1, var2)
+#define DCHECK_GE(var1, var2)
+#define DCHECK_LE(var1, var2)
+#define DCHECK_GT(var1, var2)
+#define DCHECK_LT(var1, var2)
+
+#define DCHECK_NE_PREFIX(var1, var2)
+#define DCHECK_EQ_PREFIX(var1, var2)
+#define DCHECK_GE_PREFIX(var1, var2)
+#define DCHECK_LE_PREFIX(var1, var2)
+#define DCHECK_GT_PREFIX(var1, var2)
+#define DCHECK_LT_PREFIX(var1, var2)
+#endif
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]