From 94de40837418100e9cf66cc87f272cc9671cda1e Mon Sep 17 00:00:00 2001 From: Yingchun Lai Date: Tue, 25 Jun 2024 18:08:36 +0800 Subject: [PATCH] fix --- src/meta/meta_data.cpp | 2 +- src/meta/meta_data.h | 13 +++++++++---- src/meta/meta_http_service.cpp | 1 + src/meta/test/json_compacity.cpp | 18 +++++++++++------- src/replica/duplication/replica_follower.h | 2 +- src/replica/replica_backup.cpp | 2 ++ src/shell/commands/data_operations.cpp | 1 + .../detect_hotspot/test_detect_hotspot.cpp | 2 ++ src/test/kill_test/kill_testor.cpp | 2 ++ src/test/kill_test/partition_kill_testor.cpp | 1 + 10 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/meta/meta_data.cpp b/src/meta/meta_data.cpp index 75cffc2a8b2..1052bf07ce3 100644 --- a/src/meta/meta_data.cpp +++ b/src/meta/meta_data.cpp @@ -136,7 +136,7 @@ bool construct_replica(meta_view view, const gpid &pid, int max_replica_count) GET_HOST_PORTS(pc, last_drops1, last_drops); CHECK(last_drops.empty(), "last_drops of partition({}) must be empty", pid); for (auto iter = drop_list.rbegin(); iter != drop_list.rend(); ++iter) { - if (last_drops.size() + 1 >= max_replica_count) { + if (pc.hp_last_drops1.size() + 1 >= max_replica_count) { break; } // similar to cc.drop_list, pc.last_drop is also a stack structure diff --git a/src/meta/meta_data.h b/src/meta/meta_data.h index 64539b16a09..3634fef4d95 100644 --- a/src/meta/meta_data.h +++ b/src/meta/meta_data.h @@ -483,13 +483,18 @@ inline config_context *get_config_context(app_mapper &apps, const dsn::gpid &gpi return &(iter->second->helpers->contexts[gpid.get_partition_index()]); } -inline int replica_count(const partition_configuration &pc) +inline size_t replica_count(const partition_configuration &pc) { - host_port primary; - GET_HOST_PORT(pc, primary1, primary); + size_t rc = 0; + if (pc.primary1) { + host_port primary; + GET_HOST_PORT(pc, primary1, primary); + rc += (primary ? 1 : 0); + } std::vector secondaries; GET_HOST_PORTS(pc, secondaries1, secondaries); - return (primary ? 1 : 0) + secondaries.size(); + rc += secondaries.size(); + return rc; } enum health_status diff --git a/src/meta/meta_http_service.cpp b/src/meta/meta_http_service.cpp index 2a1ee01d930..2bdb8d5387b 100644 --- a/src/meta/meta_http_service.cpp +++ b/src/meta/meta_http_service.cpp @@ -16,6 +16,7 @@ // under the License. #include +#include #include #include #include diff --git a/src/meta/test/json_compacity.cpp b/src/meta/test/json_compacity.cpp index 791c2fadf9f..38ac2f924f3 100644 --- a/src/meta/test/json_compacity.cpp +++ b/src/meta/test/json_compacity.cpp @@ -85,17 +85,21 @@ void meta_service_test_app::json_compacity() ASSERT_EQ(info2.partition_count, 16); // 4. old pc version - const char *json3 = - "{\"pid\":\"1.1\",\"ballot\":234,\"max_replica_count\":3," - "\"primary\":\"invalid address\",\"secondaries\":[\"127.0.0.1:6\"]," - "\"hp_primary\":\"invalid host_port\",\"hp_secondaries1\":[\"localhost:6\"]," - "\"last_drops\":[],\"last_committed_decree\":157}"; + const char *json3 = "{\"pid\":\"1.1\",\"ballot\":234,\"max_replica_count\":3," + "\"primary1\":\"127.0.0.1:1\",\"secondaries1\":[\"127.0.0.1:6\"]," + "\"hp_primary1\":\"localhost:1\",\"hp_secondaries1\":[\"localhost:6\"]," + "\"last_drops\":[],\"last_committed_decree\":157}"; dsn::partition_configuration pc; dsn::json::json_forwarder::decode( dsn::blob(json3, 0, strlen(json3)), pc); ASSERT_EQ(234, pc.ballot); - ASSERT_TRUE(!pc.hp_primary1); - ASSERT_TRUE(!pc.primary1); + // As how we do in src/meta/server_state.cpp, we have to set the '__isset' fields manually. + ASSERT_FALSE(pc.__isset.hp_primary1); + ASSERT_TRUE(pc.hp_primary1); + ASSERT_TRUE(pc.primary1); + ASSERT_STREQ("127.0.0.1:1", pc.primary1.to_string()); + ASSERT_EQ("localhost:1", pc.hp_primary1.to_string()); + ASSERT_FALSE(pc.__isset.hp_secondaries1); ASSERT_EQ(1, pc.hp_secondaries1.size()); ASSERT_EQ(1, pc.secondaries1.size()); ASSERT_STREQ("127.0.0.1:6", pc.secondaries1[0].to_string()); diff --git a/src/replica/duplication/replica_follower.h b/src/replica/duplication/replica_follower.h index bd4c82b633d..6363378ae1e 100644 --- a/src/replica/duplication/replica_follower.h +++ b/src/replica/duplication/replica_follower.h @@ -26,7 +26,7 @@ #include "common/gpid.h" #include "dsn.layer2_types.h" #include "replica/replica_base.h" -#include "runtime/rpc/dns_resolver.h" +#include "runtime/rpc/dns_resolver.h" // IWYU pragma: keep #include "runtime/rpc/rpc_host_port.h" #include "runtime/task/task_tracker.h" #include "utils/error_code.h" diff --git a/src/replica/replica_backup.cpp b/src/replica/replica_backup.cpp index ac13f63661a..84ab8e9f514 100644 --- a/src/replica/replica_backup.cpp +++ b/src/replica/replica_backup.cpp @@ -47,6 +47,8 @@ #include "replica/replication_app_base.h" #include "replica_stub.h" #include "runtime/api_layer1.h" +#include "runtime/rpc/dns_resolver.h" +#include "runtime/rpc/rpc_host_port.h" #include "runtime/task/async_calls.h" #include "utils/autoref_ptr.h" #include "utils/env.h" diff --git a/src/shell/commands/data_operations.cpp b/src/shell/commands/data_operations.cpp index e7f069c8313..90264335853 100644 --- a/src/shell/commands/data_operations.cpp +++ b/src/shell/commands/data_operations.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/src/test/function_test/detect_hotspot/test_detect_hotspot.cpp b/src/test/function_test/detect_hotspot/test_detect_hotspot.cpp index 86ebfcc4008..c0d77e81a4a 100644 --- a/src/test/function_test/detect_hotspot/test_detect_hotspot.cpp +++ b/src/test/function_test/detect_hotspot/test_detect_hotspot.cpp @@ -26,11 +26,13 @@ #include "client/replication_ddl_client.h" #include "common/gpid.h" +#include "dsn.layer2_types.h" #include "gtest/gtest.h" #include "include/pegasus/client.h" #include "include/pegasus/error.h" #include "replica_admin_types.h" #include "runtime/api_layer1.h" +#include "runtime/rpc/rpc_host_port.h" #include "test/function_test/utils/test_util.h" #include "test/function_test/utils/utils.h" #include "utils/error_code.h" diff --git a/src/test/kill_test/kill_testor.cpp b/src/test/kill_test/kill_testor.cpp index 143293d69e2..8edb9b44929 100644 --- a/src/test/kill_test/kill_testor.cpp +++ b/src/test/kill_test/kill_testor.cpp @@ -17,6 +17,8 @@ * under the License. */ +#include +#include #include #include #include diff --git a/src/test/kill_test/partition_kill_testor.cpp b/src/test/kill_test/partition_kill_testor.cpp index 3238f3003b1..db9fe8509a7 100644 --- a/src/test/kill_test/partition_kill_testor.cpp +++ b/src/test/kill_test/partition_kill_testor.cpp @@ -30,6 +30,7 @@ #include "partition_kill_testor.h" #include "remote_cmd/remote_command.h" #include "runtime/rpc/dns_resolver.h" +#include "runtime/rpc/rpc_host_port.h" #include "runtime/task/task.h" #include "test/kill_test/kill_testor.h" #include "utils/autoref_ptr.h"