From 22841055d70ef17d6938a925335e06f6399a48da Mon Sep 17 00:00:00 2001 From: Yingchun Lai Date: Mon, 22 Jul 2024 16:37:30 +0800 Subject: [PATCH] 1 --- src/common/replication_other_types.h | 27 ++++++++++++------- src/replica/storage/simple_kv/test/common.cpp | 2 +- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/common/replication_other_types.h b/src/common/replication_other_types.h index d36cea2f5a..d42ddae080 100644 --- a/src/common/replication_other_types.h +++ b/src/common/replication_other_types.h @@ -79,7 +79,21 @@ inline bool is_member(const partition_configuration &pc, const rpc_address &node inline bool is_partition_config_equal(const partition_configuration &pc1, const partition_configuration &pc2) { - // secondaries no need to be same order + if (pc1.ballot != pc2.ballot || pc1.pid != pc2.pid || + pc1.max_replica_count != pc2.max_replica_count || + pc1.last_committed_decree != pc2.last_committed_decree) { + return false; + } + + host_port pc1_primary; + GET_HOST_PORT(pc1, primary, pc1_primary); + host_port pc2_primary; + GET_HOST_PORT(pc2, primary, pc2_primary); + if (pc1_primary != pc2_primary) { + return false; + } + + // secondaries no need to be in the same order. std::vector pc1_secondaries; GET_HOST_PORTS(pc1, secondaries, pc1_secondaries); for (const auto &pc1_secondary : pc1_secondaries) { @@ -88,17 +102,10 @@ inline bool is_partition_config_equal(const partition_configuration &pc1, } } - // last_drops is not considered into equality check - host_port pc1_primary; - GET_HOST_PORT(pc1, primary, pc1_primary); - host_port pc2_primary; - GET_HOST_PORT(pc2, primary, pc2_primary); std::vector pc2_secondaries; GET_HOST_PORTS(pc2, secondaries, pc2_secondaries); - return pc1.ballot == pc2.ballot && pc1.pid == pc2.pid && - pc1.max_replica_count == pc2.max_replica_count && pc1_primary == pc2_primary && - pc1_secondaries.size() == pc2_secondaries.size() && - pc1.last_committed_decree == pc2.last_committed_decree; + // last_drops is not considered into equality check + return pc1_secondaries.size() == pc2_secondaries.size(); } class replica_helper diff --git a/src/replica/storage/simple_kv/test/common.cpp b/src/replica/storage/simple_kv/test/common.cpp index 5d5f37374e..61dd9a5131 100644 --- a/src/replica/storage/simple_kv/test/common.cpp +++ b/src/replica/storage/simple_kv/test/common.cpp @@ -320,7 +320,7 @@ void parti_config::convert_from(const partition_configuration &pc) pid = pc.pid; ballot = pc.ballot; primary = address_to_node(pc.hp_primary); - for (auto &secondary : pc.hp_secondaries) { + for (const auto &secondary : pc.hp_secondaries) { secondaries.push_back(address_to_node(secondary)); } std::sort(secondaries.begin(), secondaries.end());