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 27bcaa97a refactor(FQDN): Use operator bool to simplify code (#1974)
27bcaa97a is described below
commit 27bcaa97a7b13ed1c6ffc9db44d8208133ba87ec
Author: Yingchun Lai <[email protected]>
AuthorDate: Fri Apr 19 09:49:47 2024 +0800
refactor(FQDN): Use operator bool to simplify code (#1974)
Remove the duplicate functions `bool is_invalid() const`, they are
replaced by `operator bool() const`, the latter is more simple.
Hide `s_invalid_address` and `s_invalid_host_port` in private scope,
they are replaced by `operator bool() const` as well.
---
src/aio/aio_provider.h | 1 -
src/client/partition_resolver_simple.cpp | 2 +-
src/client/replication_ddl_client.cpp | 15 +++++------
src/common/json_helper.h | 4 +--
src/common/replication_other_types.h | 4 +--
.../failure_detector_multimaster.cpp | 2 +-
src/meta/backup_engine.cpp | 2 +-
src/meta/duplication/meta_duplication_service.cpp | 4 +--
src/meta/load_balance_policy.cpp | 3 +--
src/meta/meta_backup_service.cpp | 2 +-
src/meta/meta_bulk_load_service.cpp | 2 +-
src/meta/meta_data.h | 6 ++---
src/meta/meta_http_service.cpp | 12 ++++-----
src/meta/meta_service.cpp | 4 +--
src/meta/meta_service.h | 2 +-
src/meta/partition_guardian.cpp | 30 +++++++++++-----------
src/meta/server_load_balancer.cpp | 4 +--
src/meta/server_state.cpp | 16 ++++++------
src/meta/server_state_restore.cpp | 2 +-
src/meta/test/balancer_validator.cpp | 6 ++---
src/meta/test/json_compacity.cpp | 4 +--
src/meta/test/meta_partition_guardian_test.cpp | 14 +++++-----
src/meta/test/misc/misc.cpp | 28 ++++++++++----------
src/meta/test/state_sync_test.cpp | 2 +-
src/meta/test/update_configuration_test.cpp | 2 +-
src/replica/duplication/replica_follower.cpp | 4 +--
src/replica/duplication/replica_follower.h | 2 +-
.../duplication/test/replica_follower_test.cpp | 24 ++++++++---------
src/replica/replica_config.cpp | 3 +--
src/replica/replica_context.cpp | 2 +-
.../storage/simple_kv/simple_kv.app.example.h | 2 +-
src/replica/storage/simple_kv/test/case.cpp | 3 +--
src/replica/storage/simple_kv/test/checker.cpp | 4 +--
src/replica/storage/simple_kv/test/common.cpp | 3 ++-
src/replica/storage/simple_kv/test/common.h | 2 +-
src/runtime/rpc/group_address.h | 4 +--
src/runtime/rpc/group_host_port.h | 4 +--
src/runtime/rpc/network.cpp | 2 +-
src/runtime/rpc/rpc_address.h | 10 +++++---
src/runtime/rpc/rpc_engine.cpp | 5 ++--
src/runtime/rpc/rpc_host_port.cpp | 4 +--
src/runtime/rpc/rpc_host_port.h | 11 ++++----
src/runtime/test/address_test.cpp | 16 ++++++------
src/runtime/test/host_port_test.cpp | 12 ++++-----
src/runtime/test/rpc.cpp | 2 +-
src/shell/commands/node_management.cpp | 2 +-
src/shell/commands/rebalance.cpp | 8 +++---
src/shell/commands/recovery.cpp | 9 +++----
src/shell/commands/table_management.cpp | 4 +--
src/test/function_test/utils/test_util.cpp | 7 +++--
src/test/kill_test/kill_testor.cpp | 2 +-
51 files changed, 161 insertions(+), 163 deletions(-)
diff --git a/src/aio/aio_provider.h b/src/aio/aio_provider.h
index 74fb410bd..58e0d4500 100644
--- a/src/aio/aio_provider.h
+++ b/src/aio/aio_provider.h
@@ -50,7 +50,6 @@ struct linux_fd_t
int fd;
explicit linux_fd_t(int f) : fd(f) {}
- inline bool is_invalid() const { return fd == DSN_INVALID_FILE_HANDLE; }
};
class aio_provider
diff --git a/src/client/partition_resolver_simple.cpp
b/src/client/partition_resolver_simple.cpp
index bb35f82f4..5d53c8105 100644
--- a/src/client/partition_resolver_simple.cpp
+++ b/src/client/partition_resolver_simple.cpp
@@ -439,7 +439,7 @@ error_code partition_resolver_simple::get_host_port(int
partition_index, /*out*/
return ERR_CHILD_NOT_READY;
}
hp = get_host_port(it->second->config);
- if (hp.is_invalid()) {
+ if (!hp) {
return ERR_IO_PENDING;
} else {
return ERR_OK;
diff --git a/src/client/replication_ddl_client.cpp
b/src/client/replication_ddl_client.cpp
index f7aa503cf..81016a184 100644
--- a/src/client/replication_ddl_client.cpp
+++ b/src/client/replication_ddl_client.cpp
@@ -165,8 +165,7 @@ dsn::error_code
replication_ddl_client::wait_app_ready(const std::string &app_na
int ready_count = 0;
for (int i = 0; i < partition_count; i++) {
const partition_configuration &pc = query_resp.partitions[i];
- if (!pc.hp_primary.is_invalid() &&
- (pc.hp_secondaries.size() + 1 >= max_replica_count)) {
+ if (pc.hp_primary && (pc.hp_secondaries.size() + 1 >=
max_replica_count)) {
ready_count++;
}
}
@@ -435,11 +434,11 @@ dsn::error_code replication_ddl_client::list_apps(const
dsn::app_status::type st
for (int i = 0; i < partitions.size(); i++) {
const dsn::partition_configuration &p = partitions[i];
int replica_count = 0;
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
replica_count++;
}
replica_count += p.hp_secondaries.size();
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
if (replica_count >= p.max_replica_count)
fully_healthy++;
else if (replica_count < 2)
@@ -573,7 +572,7 @@ dsn::error_code replication_ddl_client::list_nodes(const
dsn::replication::node_
for (int i = 0; i < partitions.size(); i++) {
const dsn::partition_configuration &p = partitions[i];
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
auto find = tmp_map.find(p.hp_primary);
if (find != tmp_map.end()) {
find->second.primary_count++;
@@ -766,14 +765,14 @@ dsn::error_code replication_ddl_client::list_app(const
std::string &app_name,
int read_unhealthy = 0;
for (const auto &p : partitions) {
int replica_count = 0;
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
replica_count++;
node_stat[p.hp_primary].first++;
total_prim_count++;
}
replica_count += p.hp_secondaries.size();
total_sec_count += p.hp_secondaries.size();
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
if (replica_count >= p.max_replica_count)
fully_healthy++;
else if (replica_count < 2)
@@ -787,7 +786,7 @@ dsn::error_code replication_ddl_client::list_app(const
std::string &app_name,
std::stringstream oss;
oss << replica_count << "/" << p.max_replica_count;
tp_details.append_data(oss.str());
- tp_details.append_data((p.hp_primary.is_invalid() ? "-" :
p.hp_primary.to_string()));
+ tp_details.append_data(p.hp_primary ? p.hp_primary.to_string() :
"-");
oss.str("");
oss << "[";
// TODO (yingchun) join
diff --git a/src/common/json_helper.h b/src/common/json_helper.h
index 41345a148..4329bd2a8 100644
--- a/src/common/json_helper.h
+++ b/src/common/json_helper.h
@@ -423,7 +423,7 @@ inline bool json_decode(const dsn::json::JsonObject &in,
dsn::rpc_address &addre
}
address = dsn::rpc_address::from_host_port(rpc_address_string);
- return !address.is_invalid();
+ return static_cast<bool>(address);
}
// json serialization for rpc host_port, we use the string representation of a
host_port
@@ -439,7 +439,7 @@ inline bool json_decode(const dsn::json::JsonObject &in,
dsn::host_port &hp)
return true;
}
hp = host_port::from_string(host_port_string);
- return !hp.is_invalid();
+ return static_cast<bool>(hp);
}
inline void json_encode(JsonWriter &out, const dsn::partition_configuration
&config);
diff --git a/src/common/replication_other_types.h
b/src/common/replication_other_types.h
index ca96428d7..a35e2df78 100644
--- a/src/common/replication_other_types.h
+++ b/src/common/replication_other_types.h
@@ -53,11 +53,11 @@ typedef int64_t decree;
inline bool is_primary(const partition_configuration &pc, const host_port
&node)
{
- return !node.is_invalid() && pc.hp_primary == node;
+ return node && pc.hp_primary == node;
}
inline bool is_secondary(const partition_configuration &pc, const host_port
&node)
{
- return !node.is_invalid() &&
+ return node &&
std::find(pc.hp_secondaries.begin(), pc.hp_secondaries.end(), node)
!=
pc.hp_secondaries.end();
}
diff --git a/src/failure_detector/failure_detector_multimaster.cpp
b/src/failure_detector/failure_detector_multimaster.cpp
index 08eb67726..8f56eb603 100644
--- a/src/failure_detector/failure_detector_multimaster.cpp
+++ b/src/failure_detector/failure_detector_multimaster.cpp
@@ -100,7 +100,7 @@ void
slave_failure_detector_with_multimaster::end_ping(::dsn::error_code err,
} else {
if (ack.is_master) {
// do nothing
- } else if (hp_primary_node.is_invalid()) {
+ } else if (!hp_primary_node) {
auto next = _meta_servers.group_host_port()->next(hp_this_node);
if (next != hp_this_node) {
_meta_servers.group_host_port()->set_leader(next);
diff --git a/src/meta/backup_engine.cpp b/src/meta/backup_engine.cpp
index 6090964a8..1707fe65e 100644
--- a/src/meta/backup_engine.cpp
+++ b/src/meta/backup_engine.cpp
@@ -185,7 +185,7 @@ void backup_engine::backup_app_partition(const gpid &pid)
partition_primary =
app->partitions[pid.get_partition_index()].hp_primary;
}
- if (partition_primary.is_invalid()) {
+ if (!partition_primary) {
LOG_WARNING(
"backup_id({}): partition {} doesn't have a primary now, retry to
backup it later.",
_cur_backup.backup_id,
diff --git a/src/meta/duplication/meta_duplication_service.cpp
b/src/meta/duplication/meta_duplication_service.cpp
index 8c05db6dc..df5c4a548 100644
--- a/src/meta/duplication/meta_duplication_service.cpp
+++ b/src/meta/duplication/meta_duplication_service.cpp
@@ -541,7 +541,7 @@ void
meta_duplication_service::check_follower_app_if_create_completed(
query_err = ERR_INCONSISTENT_STATE;
} else {
for (const auto &partition : resp.partitions) {
- if (partition.hp_primary.is_invalid()) {
+ if (!partition.hp_primary) {
query_err = ERR_INACTIVE_STATE;
break;
}
@@ -552,7 +552,7 @@ void
meta_duplication_service::check_follower_app_if_create_completed(
}
for (const auto &secondary :
partition.hp_secondaries) {
- if (secondary.is_invalid()) {
+ if (!secondary) {
query_err = ERR_INACTIVE_STATE;
break;
}
diff --git a/src/meta/load_balance_policy.cpp b/src/meta/load_balance_policy.cpp
index 0d62f3c37..0dab076c5 100644
--- a/src/meta/load_balance_policy.cpp
+++ b/src/meta/load_balance_policy.cpp
@@ -497,8 +497,7 @@ void load_balance_policy::number_nodes(const node_mapper
&nodes)
host_port_id.clear();
host_port_vec.resize(_alive_nodes + 2);
for (auto iter = nodes.begin(); iter != nodes.end(); ++iter) {
- CHECK(!iter->first.is_invalid() &&
!iter->second.host_port().is_invalid(),
- "invalid address");
+ CHECK(iter->first && iter->second.host_port(), "invalid address");
CHECK(iter->second.alive(), "dead node");
host_port_id[iter->first] = current_id;
diff --git a/src/meta/meta_backup_service.cpp b/src/meta/meta_backup_service.cpp
index ff2505033..5f8d04b55 100644
--- a/src/meta/meta_backup_service.cpp
+++ b/src/meta/meta_backup_service.cpp
@@ -526,7 +526,7 @@ void policy_context::start_backup_partition_unlocked(gpid
pid)
}
partition_primary =
app->partitions[pid.get_partition_index()].hp_primary;
}
- if (partition_primary.is_invalid()) {
+ if (!partition_primary) {
LOG_WARNING("{}: partition {} doesn't have a primary now, retry to
backup it later",
_backup_sig,
pid);
diff --git a/src/meta/meta_bulk_load_service.cpp
b/src/meta/meta_bulk_load_service.cpp
index 8b68993b5..9dd97141e 100644
--- a/src/meta/meta_bulk_load_service.cpp
+++ b/src/meta/meta_bulk_load_service.cpp
@@ -370,7 +370,7 @@ bool bulk_load_service::check_partition_status(
}
pconfig = app->partitions[pid.get_partition_index()];
- if (pconfig.hp_primary.is_invalid()) {
+ if (!pconfig.hp_primary) {
LOG_WARNING("app({}) partition({}) primary is invalid, try it later",
app_name, pid);
tasking::enqueue(LPC_META_STATE_NORMAL,
_meta_svc->tracker(),
diff --git a/src/meta/meta_data.h b/src/meta/meta_data.h
index 16cf35912..78b08f0c0 100644
--- a/src/meta/meta_data.h
+++ b/src/meta/meta_data.h
@@ -492,7 +492,7 @@ inline config_context *get_config_context(app_mapper &apps,
const dsn::gpid &gpi
inline int replica_count(const partition_configuration &pc)
{
- int ans = (pc.hp_primary.is_invalid()) ? 0 : 1;
+ int ans = pc.hp_primary ? 1 : 0;
return ans + pc.hp_secondaries.size();
}
@@ -510,12 +510,12 @@ enum health_status
inline health_status partition_health_status(const partition_configuration &pc,
int
mutation_2pc_min_replica_count)
{
- if (pc.hp_primary.is_invalid()) {
+ if (!pc.hp_primary) {
if (pc.hp_secondaries.empty())
return HS_DEAD;
else
return HS_UNREADABLE;
- } else { // !pc.primary.is_invalid()
+ } else {
int n = pc.hp_secondaries.size() + 1;
if (n < mutation_2pc_min_replica_count)
return HS_UNWRITABLE;
diff --git a/src/meta/meta_http_service.cpp b/src/meta/meta_http_service.cpp
index 4ae299bb8..0a9e1bbf9 100644
--- a/src/meta/meta_http_service.cpp
+++ b/src/meta/meta_http_service.cpp
@@ -143,14 +143,14 @@ void meta_http_service::get_app_handler(const
http_request &req, http_response &
int read_unhealthy = 0;
for (const auto &p : response.partitions) {
int replica_count = 0;
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
replica_count++;
node_stat[p.hp_primary].first++;
total_prim_count++;
}
replica_count += p.hp_secondaries.size();
total_sec_count += p.hp_secondaries.size();
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
if (replica_count >= p.max_replica_count)
fully_healthy++;
else if (replica_count < 2)
@@ -164,7 +164,7 @@ void meta_http_service::get_app_handler(const http_request
&req, http_response &
std::stringstream oss;
oss << replica_count << "/" << p.max_replica_count;
tp_details.append_data(oss.str());
- tp_details.append_data((p.hp_primary.is_invalid() ? "-" :
p.hp_primary.to_string()));
+ tp_details.append_data(p.hp_primary ? p.hp_primary.to_string() :
"-");
oss.str("");
oss << "[";
for (int j = 0; j < p.hp_secondaries.size(); j++) {
@@ -325,11 +325,11 @@ void meta_http_service::list_app_handler(const
http_request &req, http_response
for (int i = 0; i < response.partitions.size(); i++) {
const dsn::partition_configuration &p = response.partitions[i];
int replica_count = 0;
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
replica_count++;
}
replica_count += p.hp_secondaries.size();
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
if (replica_count >= p.max_replica_count)
fully_healthy++;
else if (replica_count < 2)
@@ -415,7 +415,7 @@ void meta_http_service::list_node_handler(const
http_request &req, http_response
for (int i = 0; i < response_app.partitions.size(); i++) {
const dsn::partition_configuration &p =
response_app.partitions[i];
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
auto find = tmp_map.find(p.hp_primary);
if (find != tmp_map.end()) {
find->second.primary_count++;
diff --git a/src/meta/meta_service.cpp b/src/meta/meta_service.cpp
index 8c2b38b9c..5e296ac17 100644
--- a/src/meta/meta_service.cpp
+++ b/src/meta/meta_service.cpp
@@ -575,7 +575,7 @@ meta_leader_state
meta_service::check_leader(dsn::message_ex *req, dsn::host_por
}
LOG_DEBUG("leader address: {}", leader);
- if (!leader.is_invalid()) {
+ if (leader) {
dsn_rpc_forward(req,
dsn::dns_resolver::instance().resolve_address(leader));
return meta_leader_state::kNotLeaderAndCanForwardRpc;
} else {
@@ -757,7 +757,7 @@ void
meta_service::on_query_configuration_by_index(configuration_query_by_index_
query_cfg_response &response = rpc.response();
host_port forward_hp;
if (!check_status_and_authz(rpc, &forward_hp)) {
- if (!forward_hp.is_invalid()) {
+ if (forward_hp) {
partition_configuration config;
config.primary =
dsn::dns_resolver::instance().resolve_address(forward_hp);
config.__set_hp_primary(forward_hp);
diff --git a/src/meta/meta_service.h b/src/meta/meta_service.h
index 1db53b837..ad7afc235 100644
--- a/src/meta/meta_service.h
+++ b/src/meta/meta_service.h
@@ -402,7 +402,7 @@ meta_leader_state meta_service::check_leader(TRpcHolder
rpc, host_port *forward_
return meta_leader_state::kNotLeaderAndCannotForwardRpc;
}
- if (!leader.is_invalid()) {
+ if (leader) {
rpc.forward(dsn::dns_resolver::instance().resolve_address(leader));
return meta_leader_state::kNotLeaderAndCanForwardRpc;
} else {
diff --git a/src/meta/partition_guardian.cpp b/src/meta/partition_guardian.cpp
index 6d19aaedd..9e4d6a135 100644
--- a/src/meta/partition_guardian.cpp
+++ b/src/meta/partition_guardian.cpp
@@ -86,7 +86,7 @@ pc_status partition_guardian::cure(meta_view view,
CHECK(acts.empty(), "");
pc_status status;
- if (pc.hp_primary.is_invalid())
+ if (!pc.hp_primary)
status = on_missing_primary(view, gpid);
else if (static_cast<int>(pc.hp_secondaries.size()) + 1 <
pc.max_replica_count)
status = on_missing_secondary(view, gpid);
@@ -162,11 +162,11 @@ bool partition_guardian::from_proposals(meta_view &view,
}
action = *(cc.lb_actions.front());
std::string reason;
- if (action.target.is_invalid() || action.hp_target.is_invalid()) {
+ if (!action.target || !action.hp_target) {
reason = "action target is invalid";
goto invalid_action;
}
- if (action.node.is_invalid() || action.hp_node.is_invalid()) {
+ if (!action.node || !action.hp_node) {
reason = "action node is invalid";
goto invalid_action;
}
@@ -185,12 +185,12 @@ bool partition_guardian::from_proposals(meta_view &view,
switch (action.type) {
case config_type::CT_ASSIGN_PRIMARY:
- is_action_valid = (action.hp_node == action.hp_target &&
pc.primary.is_invalid() &&
+ is_action_valid = (action.hp_node == action.hp_target && !pc.primary &&
!is_secondary(pc, action.hp_node));
break;
case config_type::CT_UPGRADE_TO_PRIMARY:
- is_action_valid = (action.hp_node == action.hp_target &&
pc.primary.is_invalid() &&
- is_secondary(pc, action.hp_node));
+ is_action_valid =
+ (action.hp_node == action.hp_target && !pc.primary &&
is_secondary(pc, action.hp_node));
break;
case config_type::CT_ADD_SECONDARY:
case config_type::CT_ADD_SECONDARY_FOR_LB:
@@ -257,7 +257,7 @@ pc_status partition_guardian::on_missing_primary(meta_view
&view, const dsn::gpi
// find a node with minimal primaries
newly_partitions *np = newly_partitions_ext::get_inited(ns);
- if (action.hp_node.is_invalid() ||
+ if (!action.hp_node ||
np->less_primaries(*get_newly_partitions(*(view.nodes),
action.hp_node),
gpid.get_app_id())) {
action.node =
dsn::dns_resolver::instance().resolve_address(ns->host_port());
@@ -265,7 +265,7 @@ pc_status partition_guardian::on_missing_primary(meta_view
&view, const dsn::gpi
}
}
- if (action.hp_node.is_invalid()) {
+ if (!action.hp_node) {
LOG_ERROR(
"all nodes for gpid({}) are dead, waiting for some secondary
to come back....",
gpid_name);
@@ -463,7 +463,7 @@ pc_status partition_guardian::on_missing_primary(meta_view
&view, const dsn::gpi
}
}
- if (!action.hp_node.is_invalid()) {
+ if (action.hp_node) {
action.__set_hp_target(action.hp_node);
action.target = action.node;
action.type = config_type::CT_ASSIGN_PRIMARY;
@@ -600,8 +600,8 @@ pc_status
partition_guardian::on_missing_secondary(meta_view &view, const dsn::g
}
}
- if (action.hp_node.is_invalid() || in_black_list(action.hp_node)) {
- if (!action.hp_node.is_invalid()) {
+ if (!action.hp_node || in_black_list(action.hp_node)) {
+ if (action.hp_node) {
LOG_INFO("gpid({}) refuse to use selected node({}) as it is in
black list",
gpid,
action.hp_node);
@@ -620,7 +620,7 @@ pc_status
partition_guardian::on_missing_secondary(meta_view &view, const dsn::g
}
}
- if (!action.hp_node.is_invalid()) {
+ if (action.hp_node) {
LOG_INFO("gpid({}): can't find valid node in dropped list to
add as secondary, "
"choose new node({}) with minimal partitions serving",
gpid,
@@ -635,12 +635,12 @@ pc_status
partition_guardian::on_missing_secondary(meta_view &view, const dsn::g
// if not emergency, only try to recover last dropped server
const dropped_replica &server = cc.dropped.back();
if (is_node_alive(*view.nodes, server.node)) {
- CHECK(!server.node.is_invalid(), "invalid server address, address
= {}", server.node);
+ CHECK(server.node, "invalid server address, address = {}",
server.node);
action.hp_node = server.node;
action.node =
dsn::dns_resolver::instance().resolve_address(server.node);
}
- if (!action.hp_node.is_invalid()) {
+ if (action.hp_node) {
LOG_INFO("gpid({}): choose node({}) as secondary coz it is
last_dropped_node and is "
"alive now",
gpid,
@@ -653,7 +653,7 @@ pc_status
partition_guardian::on_missing_secondary(meta_view &view, const dsn::g
}
}
- if (!action.hp_node.is_invalid()) {
+ if (action.hp_node) {
action.type = config_type::CT_ADD_SECONDARY;
action.target = pc.primary;
action.__set_hp_target(pc.hp_primary);
diff --git a/src/meta/server_load_balancer.cpp
b/src/meta/server_load_balancer.cpp
index 219dc33f0..3bbab0789 100644
--- a/src/meta/server_load_balancer.cpp
+++ b/src/meta/server_load_balancer.cpp
@@ -174,8 +174,8 @@ void server_load_balancer::register_proposals(meta_view
view,
// to send the proposal to.
// for these proposals, they should keep the target empty and
// the meta-server will fill primary as target.
- if (act.target.is_invalid()) {
- if (!pc.hp_primary.is_invalid()) {
+ if (!act.target) {
+ if (pc.hp_primary) {
act.target = pc.primary;
act.__set_hp_target(pc.hp_primary);
} else {
diff --git a/src/meta/server_state.cpp b/src/meta/server_state.cpp
index d7a992692..5e3a3bc74 100644
--- a/src/meta/server_state.cpp
+++ b/src/meta/server_state.cpp
@@ -725,13 +725,13 @@ void server_state::initialize_node_state()
for (auto &app_pair : _all_apps) {
app_state &app = *(app_pair.second);
for (partition_configuration &pc : app.partitions) {
- if (!pc.hp_primary.is_invalid()) {
+ if (pc.hp_primary) {
node_state *ns = get_node_state(_nodes, pc.hp_primary, true);
ns->put_partition(pc.pid, true);
}
for (auto &ep : pc.hp_secondaries) {
- CHECK(!ep.is_invalid(), "invalid secondary address, addr =
{}", ep);
+ CHECK(ep, "invalid secondary address, addr = {}", ep);
node_state *ns = get_node_state(_nodes, ep, true);
ns->put_partition(pc.pid, false);
}
@@ -1844,10 +1844,10 @@ void
server_state::drop_partition(std::shared_ptr<app_state> &app, int pidx)
for (auto &node : pc.secondaries) {
maintain_drops(request.config.last_drops, node, request.type);
}
- if (!pc.hp_primary.is_invalid()) {
+ if (pc.hp_primary) {
maintain_drops(request.config.hp_last_drops, pc.hp_primary,
request.type);
}
- if (!pc.primary.is_invalid()) {
+ if (pc.primary) {
maintain_drops(request.config.last_drops, pc.primary, request.type);
}
request.config.primary.set_invalid();
@@ -1932,7 +1932,7 @@ void
server_state::downgrade_secondary_to_inactive(std::shared_ptr<app_state> &a
partition_configuration &pc = app->partitions[pidx];
config_context &cc = app->helpers->contexts[pidx];
- CHECK(!pc.hp_primary.is_invalid(), "this shouldn't be called if the
primary is invalid");
+ CHECK(pc.hp_primary, "this shouldn't be called if the primary is invalid");
if (config_status::pending_remote_sync != cc.stage) {
configuration_update_request request;
request.info = *app;
@@ -1973,7 +1973,7 @@ void
server_state::downgrade_stateless_nodes(std::shared_ptr<app_state> &app,
break;
}
}
- CHECK(!req->node.is_invalid(), "invalid node address, address = {}",
req->node);
+ CHECK(req->node, "invalid node address, address = {}", req->node);
// remove host_node & node from secondaries/last_drops, as it will be sync
to remote storage
for (++i; i < pc.hp_secondaries.size(); ++i) {
pc.secondaries[i - 1] = pc.secondaries[i];
@@ -2078,7 +2078,7 @@ void
server_state::on_partition_node_dead(std::shared_ptr<app_state> &app,
if (is_primary(pc, address))
downgrade_primary_to_inactive(app, pidx);
else if (is_secondary(pc, address)) {
- if (!pc.hp_primary.is_invalid())
+ if (pc.hp_primary)
downgrade_secondary_to_inactive(app, pidx, address);
else if (is_secondary(pc, address)) {
LOG_INFO("gpid({}): secondary({}) is down, ignored it due to
no primary for this "
@@ -2739,7 +2739,7 @@ void server_state::check_consistency(const dsn::gpid
&gpid)
partition_configuration &config =
app.partitions[gpid.get_partition_index()];
if (app.is_stateful) {
- if (config.hp_primary.is_invalid() == false) {
+ if (config.hp_primary) {
auto it = _nodes.find(config.hp_primary);
CHECK(it != _nodes.end(), "invalid primary address, address = {}",
config.hp_primary);
CHECK_EQ(it->second.served_as(gpid), partition_status::PS_PRIMARY);
diff --git a/src/meta/server_state_restore.cpp
b/src/meta/server_state_restore.cpp
index 7dac1b424..ef99113be 100644
--- a/src/meta/server_state_restore.cpp
+++ b/src/meta/server_state_restore.cpp
@@ -251,7 +251,7 @@ void
server_state::on_query_restore_status(configuration_query_restore_rpc rpc)
for (int32_t i = 0; i < app->partition_count; i++) {
const auto &r_state = app->helpers->restore_states[i];
const auto &p = app->partitions[i];
- if (!p.hp_primary.is_invalid() || !p.hp_secondaries.empty()) {
+ if (p.hp_primary || !p.hp_secondaries.empty()) {
// already have primary, restore succeed
continue;
}
diff --git a/src/meta/test/balancer_validator.cpp
b/src/meta/test/balancer_validator.cpp
index aacf72bb8..d932d47b0 100644
--- a/src/meta/test/balancer_validator.cpp
+++ b/src/meta/test/balancer_validator.cpp
@@ -68,7 +68,7 @@ static void check_cure(app_mapper &apps, node_mapper &nodes,
::dsn::partition_co
break;
switch (act.type) {
case config_type::CT_ASSIGN_PRIMARY:
- CHECK(pc.hp_primary.is_invalid(), "");
+ CHECK(!pc.hp_primary, "");
CHECK(pc.hp_secondaries.empty(), "");
CHECK_EQ(act.hp_node, act.hp_target);
CHECK(nodes.find(act.hp_node) != nodes.end(), "");
@@ -103,7 +103,7 @@ static void check_cure(app_mapper &apps, node_mapper
&nodes, ::dsn::partition_co
ps = guardian.cure({&apps, &nodes}, pc.pid, act);
CHECK_EQ(act.type, config_type::CT_UPGRADE_TO_PRIMARY);
- CHECK(pc.hp_primary.is_invalid(), "");
+ CHECK(!pc.hp_primary, "");
CHECK_EQ(act.hp_node, act.hp_target);
CHECK(is_secondary(pc, act.hp_node), "");
CHECK(nodes.find(act.hp_node) != nodes.end(), "");
@@ -161,7 +161,7 @@ void meta_service_test_app::balancer_validator()
std::shared_ptr<app_state> &the_app = apps[1];
for (::dsn::partition_configuration &pc : the_app->partitions) {
- CHECK(!pc.hp_primary.is_invalid(), "");
+ CHECK(pc.hp_primary, "");
CHECK_GE(pc.secondaries.size(), pc.max_replica_count - 1);
}
diff --git a/src/meta/test/json_compacity.cpp b/src/meta/test/json_compacity.cpp
index c1ca9a751..de01ec52a 100644
--- a/src/meta/test/json_compacity.cpp
+++ b/src/meta/test/json_compacity.cpp
@@ -93,8 +93,8 @@ void meta_service_test_app::json_compacity()
dsn::json::json_forwarder<dsn::partition_configuration>::decode(
dsn::blob(json3, 0, strlen(json3)), pc);
ASSERT_EQ(234, pc.ballot);
- ASSERT_TRUE(pc.hp_primary.is_invalid());
- ASSERT_TRUE(pc.primary.is_invalid());
+ ASSERT_TRUE(!pc.hp_primary);
+ ASSERT_TRUE(!pc.primary);
ASSERT_EQ(1, pc.hp_secondaries.size());
ASSERT_EQ(1, pc.secondaries.size());
ASSERT_STREQ("127.0.0.1:6", pc.secondaries[0].to_string());
diff --git a/src/meta/test/meta_partition_guardian_test.cpp
b/src/meta/test/meta_partition_guardian_test.cpp
index 6946e1ab5..e59e768ab 100644
--- a/src/meta/test/meta_partition_guardian_test.cpp
+++ b/src/meta/test/meta_partition_guardian_test.cpp
@@ -341,7 +341,7 @@ void meta_partition_guardian_test::cure_test()
server_state::sStateHash);
t->wait();
PROPOSAL_FLAG_CHECK;
- CONDITION_CHECK([&] { return !pc.hp_primary.is_invalid() && pc.hp_primary
!= last_addr; });
+ CONDITION_CHECK([&] { return pc.hp_primary && pc.hp_primary != last_addr;
});
std::this_thread::sleep_for(std::chrono::milliseconds(500));
std::cerr << "Case: add secondary, and the message lost" << std::endl;
@@ -593,7 +593,7 @@ void meta_partition_guardian_test::cure_test()
server_state::sStateHash);
t->wait();
ASSERT_FALSE(proposal_sent);
- CONDITION_CHECK([&] { return pc.hp_primary.is_invalid(); });
+ CONDITION_CHECK([&] { return !pc.hp_primary; });
std::this_thread::sleep_for(std::chrono::milliseconds(500));
std::cerr << "Case: recover from DDD state, nodes[2] is not in dropped" <<
std::endl;
@@ -607,7 +607,7 @@ void meta_partition_guardian_test::cure_test()
server_state::sStateHash);
t->wait();
ASSERT_FALSE(proposal_sent);
- CONDITION_CHECK([&] { return pc.hp_primary.is_invalid(); });
+ CONDITION_CHECK([&] { return !pc.hp_primary; });
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::cerr << "Case: recover from DDD state, haven't collect nodes[2]'s
info from replica, and "
@@ -623,7 +623,7 @@ void meta_partition_guardian_test::cure_test()
server_state::sStateHash);
t->wait();
ASSERT_FALSE(proposal_sent);
- CONDITION_CHECK([&] { return pc.hp_primary.is_invalid(); });
+ CONDITION_CHECK([&] { return !pc.hp_primary; });
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::cerr << "Case: recover from DDD state, haven't collect nodes[2]'s
info from replica, and "
@@ -683,7 +683,7 @@ void meta_partition_guardian_test::cure_test()
server_state::sStateHash);
t->wait();
ASSERT_FALSE(proposal_sent);
- CONDITION_CHECK([&] { return pc.hp_primary.is_invalid(); });
+ CONDITION_CHECK([&] { return !pc.hp_primary; });
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::cerr << "Case: recover from DDD state, larger ballot not match with
larger decree"
@@ -700,7 +700,7 @@ void meta_partition_guardian_test::cure_test()
server_state::sStateHash);
t->wait();
ASSERT_FALSE(proposal_sent);
- CONDITION_CHECK([&] { return pc.hp_primary.is_invalid(); });
+ CONDITION_CHECK([&] { return !pc.hp_primary; });
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::cerr << "Case: recover from DDD state, committed decree less than
meta's" << std::endl;
@@ -716,7 +716,7 @@ void meta_partition_guardian_test::cure_test()
server_state::sStateHash);
t->wait();
ASSERT_FALSE(proposal_sent);
- CONDITION_CHECK([&] { return pc.hp_primary.is_invalid(); });
+ CONDITION_CHECK([&] { return !pc.hp_primary; });
std::this_thread::sleep_for(std::chrono::milliseconds(200));
std::cerr << "Case: recover from DDD state, select primary from
config_context::dropped"
diff --git a/src/meta/test/misc/misc.cpp b/src/meta/test/misc/misc.cpp
index 2e1b6d640..c191b8be9 100644
--- a/src/meta/test/misc/misc.cpp
+++ b/src/meta/test/misc/misc.cpp
@@ -101,12 +101,12 @@ void generate_node_mapper(
const std::shared_ptr<app_state> &app = kv.second;
for (const dsn::partition_configuration &pc : app->partitions) {
node_state *ns;
- if (!pc.hp_primary.is_invalid()) {
+ if (pc.hp_primary) {
ns = get_node_state(output_nodes, pc.hp_primary, true);
ns->put_partition(pc.pid, true);
}
for (const auto &sec : pc.hp_secondaries) {
- CHECK(!sec.is_invalid(), "");
+ CHECK(sec, "");
ns = get_node_state(output_nodes, sec, true);
ns->put_partition(pc.pid, false);
}
@@ -136,7 +136,7 @@ void generate_app(/*out*/ std::shared_ptr<app_state> &app,
}
}
- CHECK(!pc.hp_primary.is_invalid(), "");
+ CHECK(pc.hp_primary, "");
CHECK(!is_secondary(pc, pc.hp_primary), "");
CHECK_EQ(pc.hp_secondaries.size(), 2);
CHECK_NE(pc.hp_secondaries[0], pc.hp_secondaries[1]);
@@ -295,8 +295,8 @@ void proposal_action_check_and_apply(const
configuration_proposal_action &act,
++pc.ballot;
CHECK_NE(act.type, config_type::CT_INVALID);
- CHECK(!act.target.is_invalid(), "");
- CHECK(!act.node.is_invalid(), "");
+ CHECK(act.target, "");
+ CHECK(act.node, "");
if (manager) {
track_disk_info_check_and_apply(act, pid, apps, nodes, *manager);
@@ -309,8 +309,8 @@ void proposal_action_check_and_apply(const
configuration_proposal_action &act,
switch (act.type) {
case config_type::CT_ASSIGN_PRIMARY:
CHECK_EQ(act.node, act.target);
- CHECK(pc.hp_primary.is_invalid(), "");
- CHECK(pc.primary.is_invalid(), "");
+ CHECK(!pc.hp_primary, "");
+ CHECK(!pc.primary, "");
CHECK(pc.hp_secondaries.empty(), "");
CHECK(pc.secondaries.empty(), "");
@@ -349,8 +349,8 @@ void proposal_action_check_and_apply(const
configuration_proposal_action &act,
break;
case config_type::CT_UPGRADE_TO_PRIMARY:
- CHECK(pc.hp_primary.is_invalid(), "");
- CHECK(pc.primary.is_invalid(), "");
+ CHECK(!pc.hp_primary, "");
+ CHECK(!pc.primary, "");
CHECK_EQ(hp_node, hp_target);
CHECK_EQ(act.node, act.target);
CHECK(is_secondary(pc, hp_node), "");
@@ -368,8 +368,8 @@ void proposal_action_check_and_apply(const
configuration_proposal_action &act,
CHECK_EQ(hp_target, pc.hp_primary);
CHECK_EQ(act.target, pc.primary);
CHECK(!is_member(pc, hp_node), "");
- CHECK(!act.hp_node.is_invalid(), "");
- CHECK(!act.node.is_invalid(), "");
+ CHECK(act.hp_node, "");
+ CHECK(act.node, "");
if (!pc.__isset.hp_secondaries) {
pc.__set_hp_secondaries({});
}
@@ -384,8 +384,8 @@ void proposal_action_check_and_apply(const
configuration_proposal_action &act,
// in balancer, remove primary is not allowed
case config_type::CT_REMOVE:
case config_type::CT_DOWNGRADE_TO_INACTIVE:
- CHECK(!pc.hp_primary.is_invalid(), "");
- CHECK(!pc.primary.is_invalid(), "");
+ CHECK(pc.hp_primary, "");
+ CHECK(pc.primary, "");
CHECK_EQ(pc.hp_primary, hp_target);
CHECK_EQ(pc.primary, act.target);
CHECK(is_secondary(pc, hp_node), "");
@@ -420,7 +420,7 @@ void migration_check_and_apply(app_mapper &apps,
dsn::partition_configuration &pc =
the_app->partitions[proposal->gpid.get_partition_index()];
- CHECK(!pc.hp_primary.is_invalid(), "");
+ CHECK(pc.hp_primary, "");
CHECK_EQ(pc.hp_secondaries.size(), 2);
for (const auto &hp : pc.hp_secondaries) {
CHECK(hp, "");
diff --git a/src/meta/test/state_sync_test.cpp
b/src/meta/test/state_sync_test.cpp
index a6eee0249..a09b2b90b 100644
--- a/src/meta/test/state_sync_test.cpp
+++ b/src/meta/test/state_sync_test.cpp
@@ -90,7 +90,7 @@ static void
random_assign_partition_config(std::shared_ptr<app_state> &app,
}
for (int i = 1; i < indices.size(); ++i) {
const auto &secondary = get_server(indices[i]);
- if (!secondary.is_invalid()) {
+ if (secondary) {
pc.secondaries.push_back(dsn::dns_resolver::instance().resolve_address(secondary));
pc.hp_secondaries.push_back(secondary);
}
diff --git a/src/meta/test/update_configuration_test.cpp
b/src/meta/test/update_configuration_test.cpp
index 7bb666c08..9327f7f39 100644
--- a/src/meta/test/update_configuration_test.cpp
+++ b/src/meta/test/update_configuration_test.cpp
@@ -164,7 +164,7 @@ public:
{
action.type = config_type::CT_INVALID;
const dsn::partition_configuration &pc = *get_config(*view.apps, gpid);
- if (!pc.hp_primary.is_invalid() && pc.hp_secondaries.size() == 2)
+ if (pc.hp_primary && pc.hp_secondaries.size() == 2)
return pc_status::healthy;
return pc_status::ill;
}
diff --git a/src/replica/duplication/replica_follower.cpp
b/src/replica/duplication/replica_follower.cpp
index 71072ab75..2818e8060 100644
--- a/src/replica/duplication/replica_follower.cpp
+++ b/src/replica/duplication/replica_follower.cpp
@@ -84,7 +84,7 @@ void replica_follower::init_master_info()
CHECK(!master_metas.empty(), "master cluster meta list is invalid!");
for (const auto &meta : master_metas) {
const auto node = host_port::from_string(meta);
- CHECK(!node.is_invalid(), "{} is invalid meta host_port", meta);
+ CHECK(node, "{} is invalid meta host_port", meta);
_master_meta_list.emplace_back(std::move(node));
}
}
@@ -178,7 +178,7 @@ error_code
replica_follower::update_master_replica_config(error_code err, query_
return ERR_INCONSISTENT_STATE;
}
- if (dsn_unlikely(resp.partitions[0].hp_primary ==
host_port::s_invalid_host_port)) {
+ if (dsn_unlikely(!resp.partitions[0].hp_primary)) {
LOG_ERROR_PREFIX("master[{}] partition address is invalid",
master_replica_name());
return ERR_INVALID_STATE;
}
diff --git a/src/replica/duplication/replica_follower.h
b/src/replica/duplication/replica_follower.h
index 0ca3f5c93..c57552f94 100644
--- a/src/replica/duplication/replica_follower.h
+++ b/src/replica/duplication/replica_follower.h
@@ -79,7 +79,7 @@ private:
std::string master_replica_name()
{
std::string app_info = fmt::format("{}.{}", _master_cluster_name,
_master_app_name);
- if (_master_replica_config.hp_primary !=
host_port::s_invalid_host_port) {
+ if (_master_replica_config.hp_primary) {
return fmt::format("{}({}({})|{})",
app_info,
_master_replica_config.hp_primary,
diff --git a/src/replica/duplication/test/replica_follower_test.cpp
b/src/replica/duplication/test/replica_follower_test.cpp
index 52415f6d2..952440767 100644
--- a/src/replica/duplication/test/replica_follower_test.cpp
+++ b/src/replica/duplication/test/replica_follower_test.cpp
@@ -217,37 +217,37 @@ TEST_P(replica_follower_test,
test_update_master_replica_config)
query_cfg_response resp;
ASSERT_EQ(update_master_replica_config(follower, resp),
ERR_INCONSISTENT_STATE);
- ASSERT_EQ(master_replica_config(follower).primary,
rpc_address::s_invalid_address);
- ASSERT_EQ(master_replica_config(follower).hp_primary,
host_port::s_invalid_host_port);
+ ASSERT_FALSE(master_replica_config(follower).primary);
+ ASSERT_FALSE(master_replica_config(follower).hp_primary);
resp.partition_count = 100;
ASSERT_EQ(update_master_replica_config(follower, resp),
ERR_INCONSISTENT_STATE);
- ASSERT_EQ(master_replica_config(follower).primary,
rpc_address::s_invalid_address);
- ASSERT_EQ(master_replica_config(follower).hp_primary,
host_port::s_invalid_host_port);
+ ASSERT_FALSE(master_replica_config(follower).primary);
+ ASSERT_FALSE(master_replica_config(follower).hp_primary);
resp.partition_count = _app_info.partition_count;
partition_configuration p;
resp.partitions.emplace_back(p);
resp.partitions.emplace_back(p);
ASSERT_EQ(update_master_replica_config(follower, resp), ERR_INVALID_DATA);
- ASSERT_EQ(master_replica_config(follower).primary,
rpc_address::s_invalid_address);
- ASSERT_EQ(master_replica_config(follower).hp_primary,
host_port::s_invalid_host_port);
+ ASSERT_FALSE(master_replica_config(follower).primary);
+ ASSERT_FALSE(master_replica_config(follower).hp_primary);
resp.partitions.clear();
p.pid = gpid(2, 100);
resp.partitions.emplace_back(p);
ASSERT_EQ(update_master_replica_config(follower, resp),
ERR_INCONSISTENT_STATE);
- ASSERT_EQ(master_replica_config(follower).primary,
rpc_address::s_invalid_address);
- ASSERT_EQ(master_replica_config(follower).hp_primary,
host_port::s_invalid_host_port);
+ ASSERT_FALSE(master_replica_config(follower).primary);
+ ASSERT_FALSE(master_replica_config(follower).hp_primary);
resp.partitions.clear();
- p.primary = rpc_address::s_invalid_address;
- p.__set_hp_primary(host_port::s_invalid_host_port);
+ p.primary = {};
+ p.__set_hp_primary(host_port());
p.pid = gpid(2, 1);
resp.partitions.emplace_back(p);
ASSERT_EQ(update_master_replica_config(follower, resp), ERR_INVALID_STATE);
- ASSERT_EQ(master_replica_config(follower).primary,
rpc_address::s_invalid_address);
- ASSERT_EQ(master_replica_config(follower).hp_primary,
host_port::s_invalid_host_port);
+ ASSERT_FALSE(master_replica_config(follower).primary);
+ ASSERT_FALSE(master_replica_config(follower).hp_primary);
resp.partitions.clear();
p.pid = gpid(2, 1);
diff --git a/src/replica/replica_config.cpp b/src/replica/replica_config.cpp
index 6fa389aad..4cab9c9b3 100644
--- a/src/replica/replica_config.cpp
+++ b/src/replica/replica_config.cpp
@@ -1094,8 +1094,7 @@ void replica::on_config_sync(const app_info &info,
if (status() == partition_status::PS_INACTIVE &&
!_inactive_is_transient) {
if (config.hp_primary == _stub->primary_host_port() // dead primary
||
- config.hp_primary
- .is_invalid() // primary is dead (otherwise let primary
remove this)
+ !config.hp_primary // primary is dead (otherwise let primary
remove this)
) {
LOG_INFO_PREFIX("downgrade myself as inactive is not
transient, remote_config({})",
boost::lexical_cast<std::string>(config));
diff --git a/src/replica/replica_context.cpp b/src/replica/replica_context.cpp
index acc8fa64a..ff7409dcc 100644
--- a/src/replica/replica_context.cpp
+++ b/src/replica/replica_context.cpp
@@ -105,7 +105,7 @@ void primary_context::reset_membership(const
partition_configuration &config, bo
membership = config;
- if (membership.hp_primary.is_invalid() == false) {
+ if (membership.hp_primary) {
statuses[membership.hp_primary] = partition_status::PS_PRIMARY;
}
diff --git a/src/replica/storage/simple_kv/simple_kv.app.example.h
b/src/replica/storage/simple_kv/simple_kv.app.example.h
index 2d1fd1279..d1345b79e 100644
--- a/src/replica/storage/simple_kv/simple_kv.app.example.h
+++ b/src/replica/storage/simple_kv/simple_kv.app.example.h
@@ -45,7 +45,7 @@ public:
return ::dsn::ERR_INVALID_PARAMETERS;
printf("%s %s %s\n", args[1].c_str(), args[2].c_str(),
args[3].c_str());
- const auto hp = host_port::from_string(args[2].c_str());
+ const auto hp = host_port::from_string(args[2]);
_simple_kv_client.reset(new simple_kv_client(args[1].c_str(), {hp},
args[3].c_str()));
_timer = ::dsn::tasking::enqueue_timer(LPC_SIMPLE_KV_TEST_TIMER,
diff --git a/src/replica/storage/simple_kv/test/case.cpp
b/src/replica/storage/simple_kv/test/case.cpp
index eca2bb7e1..730b04e93 100644
--- a/src/replica/storage/simple_kv/test/case.cpp
+++ b/src/replica/storage/simple_kv/test/case.cpp
@@ -815,8 +815,7 @@ bool client_case_line::parse(const std::string ¶ms)
_config_receiver = node_to_address(kv_map["receiver"]);
_config_type = parse_config_command(kv_map["type"]);
_config_node = node_to_address(kv_map["node"]);
- if (_config_receiver.is_invalid() || _config_type ==
config_type::CT_INVALID ||
- _config_node.is_invalid())
+ if (!_config_receiver || _config_type == config_type::CT_INVALID ||
!_config_node)
parse_ok = false;
break;
}
diff --git a/src/replica/storage/simple_kv/test/checker.cpp
b/src/replica/storage/simple_kv/test/checker.cpp
index 4fa40dbf0..acc35a770 100644
--- a/src/replica/storage/simple_kv/test/checker.cpp
+++ b/src/replica/storage/simple_kv/test/checker.cpp
@@ -85,7 +85,7 @@ public:
return pc_status::healthy;
pc_status result;
- if (pc.hp_primary.is_invalid()) {
+ if (!pc.hp_primary) {
if (pc.hp_secondaries.size() > 0) {
action.node = pc.secondaries[0];
action.__set_hp_node(pc.hp_secondaries[0]);
@@ -155,7 +155,7 @@ public:
sorted_node.clear();
sorted_node.reserve(nodes.size());
for (auto &iter : nodes) {
- if (!iter.first.is_invalid() && iter.second.alive()) {
+ if (iter.first && iter.second.alive()) {
sorted_node.push_back(iter.first);
}
}
diff --git a/src/replica/storage/simple_kv/test/common.cpp
b/src/replica/storage/simple_kv/test/common.cpp
index 5ffb84bfd..3b1aaeddf 100644
--- a/src/replica/storage/simple_kv/test/common.cpp
+++ b/src/replica/storage/simple_kv/test/common.cpp
@@ -88,8 +88,9 @@ partition_status::type
partition_status_from_short_string(const std::string &str
std::string address_to_node(host_port addr)
{
- if (addr.is_invalid())
+ if (!addr) {
return "-";
+ }
CHECK(test_checker::s_inited, "");
return test_checker::instance().address_to_node_name(addr);
}
diff --git a/src/replica/storage/simple_kv/test/common.h
b/src/replica/storage/simple_kv/test/common.h
index b7d587443..f120b167d 100644
--- a/src/replica/storage/simple_kv/test/common.h
+++ b/src/replica/storage/simple_kv/test/common.h
@@ -55,7 +55,7 @@ const char
*partition_status_to_short_string(partition_status::type s);
partition_status::type partition_status_from_short_string(const std::string
&str);
// transfer primary_address to node_name
-// return "-" if addr.is_invalid()
+// return "-" if addr is invalid
// return "node@port" if not found
std::string address_to_node(host_port addr);
// transfer node_name to primary_address
diff --git a/src/runtime/rpc/group_address.h b/src/runtime/rpc/group_address.h
index 6e3783606..8c28cfc37 100644
--- a/src/runtime/rpc/group_address.h
+++ b/src/runtime/rpc/group_address.h
@@ -140,7 +140,7 @@ inline void rpc_group_address::leader_forward()
inline void rpc_group_address::set_leader(rpc_address addr)
{
alw_t l(_lock);
- if (addr.is_invalid()) {
+ if (!addr) {
_leader_index = -1;
return;
}
@@ -205,7 +205,7 @@ inline rpc_address rpc_group_address::next(rpc_address
current) const
return rpc_address::s_invalid_address;
}
- if (current.is_invalid()) {
+ if (!current) {
return _members[rand::next_u32(0, (uint32_t)_members.size() - 1)];
}
diff --git a/src/runtime/rpc/group_host_port.h
b/src/runtime/rpc/group_host_port.h
index d306fb632..7a1a30ce5 100644
--- a/src/runtime/rpc/group_host_port.h
+++ b/src/runtime/rpc/group_host_port.h
@@ -170,7 +170,7 @@ inline void rpc_group_host_port::leader_forward()
inline void rpc_group_host_port::set_leader(const host_port &hp)
{
awl_t l(_lock);
- if (hp.is_invalid()) {
+ if (!hp) {
_leader_index = kInvalidIndex;
return;
}
@@ -240,7 +240,7 @@ inline host_port rpc_group_host_port::next(const host_port
¤t) const
return host_port::s_invalid_host_port;
}
- if (current.is_invalid()) {
+ if (!current) {
return _members[random_index_unlocked()];
}
diff --git a/src/runtime/rpc/network.cpp b/src/runtime/rpc/network.cpp
index ba62ebdbe..72a9c55e9 100644
--- a/src/runtime/rpc/network.cpp
+++ b/src/runtime/rpc/network.cpp
@@ -433,7 +433,7 @@ void rpc_session::on_failure(bool is_write)
bool rpc_session::on_recv_message(message_ex *msg, int delay_ms)
{
- if (msg->header->from_address.is_invalid()) {
+ if (!msg->header->from_address) {
msg->header->from_address = _remote_addr;
}
diff --git a/src/runtime/rpc/rpc_address.h b/src/runtime/rpc/rpc_address.h
index aaba4011d..be3631584 100644
--- a/src/runtime/rpc/rpc_address.h
+++ b/src/runtime/rpc/rpc_address.h
@@ -64,8 +64,6 @@ class rpc_group_address;
class rpc_address
{
public:
- static const rpc_address s_invalid_address;
-
// Convert IPv4:port to rpc_address, e.g. "192.168.0.1:12345" or
"localhost:54321".
// NOTE:
// - IP address without port (e.g. "127.0.0.1") is considered as invalid.
@@ -122,8 +120,7 @@ public:
return (rpc_group_address *)(uintptr_t)_addr.group.group;
}
- bool is_invalid() const { return _addr.v4.type == HOST_TYPE_INVALID; }
- operator bool() const { return !is_invalid(); }
+ operator bool() const { return _addr.v4.type != HOST_TYPE_INVALID; }
// before you assign new value, must call set_invalid() to release
original value
// and you MUST ensure that _addr is INITIALIZED before you call this
function
@@ -176,7 +173,12 @@ public:
uint32_t write(::apache::thrift::protocol::TProtocol *oprot) const;
private:
+ friend class rpc_group_address;
friend class test_client;
+ template <typename TResponse>
+ friend class rpc_replier;
+
+ static const rpc_address s_invalid_address;
union
{
diff --git a/src/runtime/rpc/rpc_engine.cpp b/src/runtime/rpc/rpc_engine.cpp
index bb690c19f..0e80e7fd1 100644
--- a/src/runtime/rpc/rpc_engine.cpp
+++ b/src/runtime/rpc/rpc_engine.cpp
@@ -661,8 +661,7 @@ void rpc_engine::call_ip(rpc_address addr,
{
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");
+ CHECK(request->header->from_address, "from address must be set before call
call_ip");
while (!request->dl.is_alone()) {
LOG_WARNING("msg request {} (trace_id = {:#018x}) is in sending queue,
try to pick out ...",
@@ -737,7 +736,7 @@ void rpc_engine::reply(message_ex *response, error_code err)
// when a message doesn't need to reply, we don't do the on_rpc_reply
hooks to avoid mistakes
// for example, the profiler may be mistakenly calculated
auto s = response->io_session.get();
- if (s == nullptr && response->to_address.is_invalid()) {
+ if (s == nullptr && !response->to_address) {
LOG_DEBUG("rpc reply {} is dropped (invalid to-address), trace_id =
{:#018x}",
response->header->rpc_name,
response->header->trace_id);
diff --git a/src/runtime/rpc/rpc_host_port.cpp
b/src/runtime/rpc/rpc_host_port.cpp
index c2cb5b277..36953bb70 100644
--- a/src/runtime/rpc/rpc_host_port.cpp
+++ b/src/runtime/rpc/rpc_host_port.cpp
@@ -69,7 +69,7 @@ host_port host_port::from_address(rpc_address addr)
break;
}
- // Now is_invalid() return false.
+ // Now is valid.
hp._type = addr.type();
return hp;
}
@@ -95,7 +95,7 @@ host_port host_port::from_string(const std::string
&host_port_str)
return hp;
}
- // Now is_invalid() return false.
+ // Now is valid.
hp._type = HOST_TYPE_IPV4;
return hp;
}
diff --git a/src/runtime/rpc/rpc_host_port.h b/src/runtime/rpc/rpc_host_port.h
index 00ca8dd1c..762e476de 100644
--- a/src/runtime/rpc/rpc_host_port.h
+++ b/src/runtime/rpc/rpc_host_port.h
@@ -95,7 +95,6 @@ class rpc_group_host_port;
class host_port
{
public:
- static const host_port s_invalid_host_port;
explicit host_port() = default;
explicit host_port(std::string host, uint16_t port);
@@ -108,10 +107,7 @@ public:
dsn_host_type_t type() const { return _type; }
const std::string &host() const { return _host; }
uint16_t port() const { return _port; }
-
- [[nodiscard]] bool is_invalid() const { return _type == HOST_TYPE_INVALID;
}
-
- operator bool() const { return !is_invalid(); }
+ operator bool() const { return _type != HOST_TYPE_INVALID; }
std::string to_string() const;
@@ -132,7 +128,7 @@ public:
// Construct a host_port object from 'host_port_str', the latter is in the
format of
// "localhost:8888".
- // NOTE: The constructed host_port object maybe invalid, remember to check
it by is_invalid()
+ // NOTE: The constructed host_port object maybe invalid, remember to check
if it's valid
// before using it.
static host_port from_string(const std::string &host_port_str);
@@ -145,8 +141,11 @@ public:
private:
friend class dns_resolver;
+ friend class rpc_group_host_port;
FRIEND_TEST(host_port_test, transfer_rpc_address);
+ static const host_port s_invalid_host_port;
+
// Resolve host_port to rpc_addresses.
// There may be multiple rpc_addresses for one host_port.
error_s resolve_addresses(std::vector<rpc_address> &addresses) const;
diff --git a/src/runtime/test/address_test.cpp
b/src/runtime/test/address_test.cpp
index 74f56c7a3..01edb34a0 100644
--- a/src/runtime/test/address_test.cpp
+++ b/src/runtime/test/address_test.cpp
@@ -339,15 +339,15 @@ TEST(rpc_address_test, from_host_port)
for (const auto &test : tests) {
// Check from_host_port().
const auto host_port_result =
dsn::rpc_address::from_host_port(test.host_port);
- ASSERT_EQ(test.valid_host_port, !host_port_result.is_invalid()) <<
test.host_port;
- if (!host_port_result.is_invalid()) {
+ ASSERT_EQ(test.valid_host_port, static_cast<bool>(host_port_result))
<< test.host_port;
+ if (host_port_result) {
ASSERT_GT(test.expect_ip_ports.count(host_port_result.to_string()), 0);
}
// Check from_ip_port().
const auto ip_port_result =
dsn::rpc_address::from_ip_port(test.host_port);
- ASSERT_EQ(test.valid_ip_port, !ip_port_result.is_invalid());
- if (!ip_port_result.is_invalid()) {
+ ASSERT_EQ(test.valid_ip_port, static_cast<bool>(ip_port_result));
+ if (ip_port_result) {
ASSERT_GT(test.expect_ip_ports.count(ip_port_result.to_string()),
0);
}
@@ -405,16 +405,16 @@ TEST(rpc_address_test, from_host_port2)
for (const auto &test : tests) {
// Check from_host_port().
const auto host_port_result =
dsn::rpc_address::from_host_port(test.host, test.port);
- ASSERT_EQ(test.valid_host_port, !host_port_result.is_invalid()) <<
test.host;
- if (!host_port_result.is_invalid()) {
+ ASSERT_EQ(test.valid_host_port, static_cast<bool>(host_port_result))
<< test.host;
+ if (host_port_result) {
ASSERT_GT(test.expect_ip_ports.count(host_port_result.to_string()), 0)
<< test.host << " " << host_port_result.to_string();
}
// Check from_ip_port().
const auto ip_port_result = dsn::rpc_address::from_ip_port(test.host,
test.port);
- ASSERT_EQ(test.valid_ip_port, !ip_port_result.is_invalid());
- if (!ip_port_result.is_invalid()) {
+ ASSERT_EQ(test.valid_ip_port, static_cast<bool>(ip_port_result));
+ if (ip_port_result) {
ASSERT_GT(test.expect_ip_ports.count(ip_port_result.to_string()),
0);
}
diff --git a/src/runtime/test/host_port_test.cpp
b/src/runtime/test/host_port_test.cpp
index dfa7b01bd..9c397c2a1 100644
--- a/src/runtime/test/host_port_test.cpp
+++ b/src/runtime/test/host_port_test.cpp
@@ -84,21 +84,21 @@ TEST(host_port_test, operators)
host_port hp2;
ASSERT_NE(hp, hp2);
- ASSERT_FALSE(hp.is_invalid());
- ASSERT_TRUE(hp2.is_invalid());
+ ASSERT_TRUE(hp);
+ ASSERT_FALSE(hp2);
std::string hp_str = "localhost:8080";
host_port hp3;
- ASSERT_TRUE(hp3.is_invalid());
+ ASSERT_FALSE(hp3);
hp3 = host_port::from_string(hp_str);
ASSERT_EQ(hp, hp3);
- ASSERT_FALSE(hp3.is_invalid());
+ ASSERT_TRUE(hp3);
host_port hp4;
- ASSERT_TRUE(hp4.is_invalid());
+ ASSERT_FALSE(hp4);
std::string hp_str2 = "pegasus:8080";
hp4 = host_port::from_string(hp_str2);
- ASSERT_TRUE(hp4.is_invalid());
+ ASSERT_FALSE(hp4);
host_port hp5("localhost", 8081);
ASSERT_LT(hp, hp5);
diff --git a/src/runtime/test/rpc.cpp b/src/runtime/test/rpc.cpp
index f3aa9a99e..3682ca578 100644
--- a/src/runtime/test/rpc.cpp
+++ b/src/runtime/test/rpc.cpp
@@ -103,7 +103,7 @@ TEST(core, group_address_change_leader)
if (ERR_OK == err_code) {
const auto hp_got = host_port::from_string(result);
LOG_INFO("talk to others callback, result: {}", result);
- EXPECT_FALSE(hp_got.is_invalid());
+ EXPECT_TRUE(hp_got);
EXPECT_EQ(TEST_PORT_END, hp_got.port());
}
};
diff --git a/src/shell/commands/node_management.cpp
b/src/shell/commands/node_management.cpp
index 2bff8b8ba..78f175078 100644
--- a/src/shell/commands/node_management.cpp
+++ b/src/shell/commands/node_management.cpp
@@ -348,7 +348,7 @@ bool ls_nodes(command_executor *e, shell_context *sc,
arguments args)
}
for (const dsn::partition_configuration &p : partitions) {
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
auto find = tmp_map.find(p.hp_primary);
if (find != tmp_map.end()) {
find->second.primary_count++;
diff --git a/src/shell/commands/rebalance.cpp b/src/shell/commands/rebalance.cpp
index e1078f5c4..42a5ac5e2 100644
--- a/src/shell/commands/rebalance.cpp
+++ b/src/shell/commands/rebalance.cpp
@@ -124,8 +124,8 @@ bool propose(command_executor *e, shell_context *sc,
arguments args)
}
}
- PRINT_AND_RETURN_FALSE_IF_NOT(!target.is_invalid(), "need set target by
-t\n");
- PRINT_AND_RETURN_FALSE_IF_NOT(!node.is_invalid(), "need set node by -n\n");
+ PRINT_AND_RETURN_FALSE_IF_NOT(target, "need set target by -t\n");
+ PRINT_AND_RETURN_FALSE_IF_NOT(node, "need set node by -n\n");
PRINT_AND_RETURN_FALSE_IF_NOT(request.gpid.get_app_id() != -1, "need set
gpid by -g\n");
config_type::type tp =
@@ -213,11 +213,11 @@ bool balance(command_executor *e, shell_context *sc,
arguments args)
return false;
}
- if (from.is_invalid()) {
+ if (!from) {
fprintf(stderr, "need set from address by -f\n");
return false;
}
- if (to.is_invalid()) {
+ if (!to) {
fprintf(stderr, "need set target address by -t\n");
return false;
}
diff --git a/src/shell/commands/recovery.cpp b/src/shell/commands/recovery.cpp
index 3da16ea3d..fd8b7b826 100644
--- a/src/shell/commands/recovery.cpp
+++ b/src/shell/commands/recovery.cpp
@@ -328,8 +328,7 @@ bool ddd_diagnose(command_executor *e, shell_context *sc,
arguments args)
out << " ----" << std::endl;
auto primary = diagnose_recommend(pinfo);
- out << " recommend_primary: "
- << (primary.is_invalid() ? "none" : primary.to_string());
+ out << " recommend_primary: " << (!primary ? "none" :
primary.to_string());
if (primary == latest_dropped)
out << " <== the latest";
else if (primary == secondary_latest_dropped)
@@ -337,7 +336,7 @@ bool ddd_diagnose(command_executor *e, shell_context *sc,
arguments args)
out << std::endl;
bool skip_this = false;
- if (!primary.is_invalid() && !auto_diagnose && !skip_prompt) {
+ if (primary && !auto_diagnose && !skip_prompt) {
do {
std::cout << " > Are you sure to use the recommend
primary? [y/n/s(skip)]: ";
char c;
@@ -356,7 +355,7 @@ bool ddd_diagnose(command_executor *e, shell_context *sc,
arguments args)
} while (true);
}
- if (primary.is_invalid() && !skip_prompt && !skip_this) {
+ if (!primary && !skip_prompt && !skip_this) {
do {
std::cout << " > Please input the primary node: ";
std::string node;
@@ -370,7 +369,7 @@ bool ddd_diagnose(command_executor *e, shell_context *sc,
arguments args)
} while (true);
}
- if (!primary.is_invalid() && !skip_this) {
+ if (primary && !skip_this) {
dsn::replication::configuration_balancer_request request;
request.gpid = pinfo.config.pid;
request.action_list = {
diff --git a/src/shell/commands/table_management.cpp
b/src/shell/commands/table_management.cpp
index 55f348689..8503c734a 100644
--- a/src/shell/commands/table_management.cpp
+++ b/src/shell/commands/table_management.cpp
@@ -336,7 +336,7 @@ bool app_disk(command_executor *e, shell_context *sc,
arguments args)
for (int i = 0; i < partitions.size(); i++) {
const dsn::partition_configuration &p = partitions[i];
int replica_count = 0;
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
replica_count++;
}
replica_count += p.hp_secondaries.size();
@@ -347,7 +347,7 @@ bool app_disk(command_executor *e, shell_context *sc,
arguments args)
replica_count_str = oss.str();
}
std::string primary_str("-");
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
bool disk_found = false;
double disk_value = 0;
auto f1 = disk_map.find(p.hp_primary);
diff --git a/src/test/function_test/utils/test_util.cpp
b/src/test/function_test/utils/test_util.cpp
index 165626a5a..c3ca95b8c 100644
--- a/src/test/function_test/utils/test_util.cpp
+++ b/src/test/function_test/utils/test_util.cpp
@@ -40,7 +40,6 @@
#include "nlohmann/detail/iterators/iter_impl.hpp"
#include "nlohmann/json_fwd.hpp"
#include "runtime/api_layer1.h"
-#include "runtime/rpc/rpc_address.h"
#include "test/function_test/utils/global_env.h"
#include "test/function_test/utils/utils.h"
#include "test_util/test_util.h"
@@ -51,6 +50,10 @@
#include "utils/rand.h"
#include "utils/test_macros.h"
+namespace dsn {
+class rpc_address;
+} // namespace dsn
+
using dsn::partition_configuration;
using dsn::replication::replica_helper;
using dsn::replication::replication_ddl_client;
@@ -172,7 +175,7 @@ void test_util::wait_table_healthy(const std::string
&table_name) const
std::vector<partition_configuration> pcs;
ASSERT_EQ(dsn::ERR_OK, ddl_client_->list_app(table_name, table_id,
pcount, pcs));
for (const auto &pc : pcs) {
- ASSERT_FALSE(pc.primary.is_invalid());
+ ASSERT_TRUE(pc.primary);
ASSERT_EQ(1 + pc.secondaries.size(), pc.max_replica_count);
}
},
diff --git a/src/test/kill_test/kill_testor.cpp
b/src/test/kill_test/kill_testor.cpp
index 7c75fd094..fbafa349b 100644
--- a/src/test/kill_test/kill_testor.cpp
+++ b/src/test/kill_test/kill_testor.cpp
@@ -111,7 +111,7 @@ dsn::error_code kill_testor::get_partition_info(bool
debug_unhealthy,
for (int i = 0; i < partitions.size(); i++) {
const dsn::partition_configuration &p = partitions[i];
int replica_count = 0;
- if (!p.hp_primary.is_invalid()) {
+ if (p.hp_primary) {
replica_count++;
}
replica_count += p.hp_secondaries.size();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]