From 16800f15d940826775f7134fa431b57f84968522 Mon Sep 17 00:00:00 2001 From: BinChenn Date: Fri, 10 Mar 2023 06:44:26 +0000 Subject: [PATCH] [Arb] fix the arb server sends rpc with cluster_id(-1) --- mittest/logservice/env/ob_simple_log_cluster_env.h | 1 + mittest/logservice/env/ob_simple_log_server.cpp | 1 + mittest/mtlenv/mock_tenant_module_env.h | 1 + mittest/simple_server/env/ob_simple_server.cpp | 1 + src/logservice/palf/log_define.h | 2 +- src/logservice/palf/log_meta_info.cpp | 11 +++++++++-- src/logservice/palf/log_rpc_macros.h | 5 +++++ unittest/logservice/CMakeLists.txt | 1 - unittest/logservice/test_log_config_mgr.cpp | 1 + unittest/logservice/test_log_meta.cpp | 1 + unittest/logservice/test_log_meta_entry.cpp | 1 + unittest/logservice/test_log_meta_info.cpp | 1 + unittest/logservice/test_log_mode_mgr.cpp | 1 + unittest/logservice/test_palf_bench.cpp | 1 + 14 files changed, 25 insertions(+), 4 deletions(-) diff --git a/mittest/logservice/env/ob_simple_log_cluster_env.h b/mittest/logservice/env/ob_simple_log_cluster_env.h index 7c9dba94b..9949f13e0 100644 --- a/mittest/logservice/env/ob_simple_log_cluster_env.h +++ b/mittest/logservice/env/ob_simple_log_cluster_env.h @@ -66,6 +66,7 @@ class MockLSAdapter; OB_LOGGER.set_enable_async_log(false); \ SERVER_LOG(INFO, "begin unittest"); \ ::testing::InitGoogleTest(&argc, argv); \ + ObClusterVersion::get_instance().update_data_version(DATA_CURRENT_VERSION); \ return RUN_ALL_TESTS(); int generate_data(char *&buf, int buf_len, int &real_data_size, const int wanted_data_size); diff --git a/mittest/logservice/env/ob_simple_log_server.cpp b/mittest/logservice/env/ob_simple_log_server.cpp index 921c50a1b..e7c884ed0 100644 --- a/mittest/logservice/env/ob_simple_log_server.cpp +++ b/mittest/logservice/env/ob_simple_log_server.cpp @@ -136,6 +136,7 @@ int ObSimpleLogServer::simple_init( assert(&log_service_ == MTL(logservice::ObLogService*)); guard.click("init tenant_base"); node_id_ = node_id; + if (is_bootstrap && OB_FAIL(init_memory_dump_timer_())) { SERVER_LOG(ERROR, "init_memory_dump_timer_ failed", K(ret), K_(node_id)); } else if (FALSE_IT(guard.click("init_memory_dump_timer_")) diff --git a/mittest/mtlenv/mock_tenant_module_env.h b/mittest/mtlenv/mock_tenant_module_env.h index 8a3dd3674..6d99442af 100644 --- a/mittest/mtlenv/mock_tenant_module_env.h +++ b/mittest/mtlenv/mock_tenant_module_env.h @@ -642,6 +642,7 @@ int MockTenantModuleEnv::init() } else if (OB_FAIL(init_before_start_mtl())) { STORAGE_LOG(ERROR, "init_before_start_mtl failed", K(ret)); } else { + oceanbase::ObClusterVersion::get_instance().update_data_version(DATA_CURRENT_VERSION); MTL_BIND(ObTenantIOManager::mtl_init, ObTenantIOManager::mtl_destroy); MTL_BIND2(mtl_new_default, ObTenantSchemaService::mtl_init, nullptr, nullptr, nullptr, mtl_destroy_default); MTL_BIND2(mtl_new_default, ObStorageLogger::mtl_init, ObStorageLogger::mtl_start, ObStorageLogger::mtl_stop, ObStorageLogger::mtl_wait, mtl_destroy_default); diff --git a/mittest/simple_server/env/ob_simple_server.cpp b/mittest/simple_server/env/ob_simple_server.cpp index 8d4b91255..b613a5286 100644 --- a/mittest/simple_server/env/ob_simple_server.cpp +++ b/mittest/simple_server/env/ob_simple_server.cpp @@ -141,6 +141,7 @@ int ObSimpleServer::simple_init() opts.use_ipv6_ = false; char *curr_dir = get_current_dir_name(); + oceanbase::ObClusterVersion::get_instance().update_data_version(DATA_CURRENT_VERSION); if (ObSimpleServerRestartHelper::is_restart_) { diff --git a/src/logservice/palf/log_define.h b/src/logservice/palf/log_define.h index 3935cbe19..4a4fa3858 100644 --- a/src/logservice/palf/log_define.h +++ b/src/logservice/palf/log_define.h @@ -105,7 +105,7 @@ const int64_t PALF_CHILD_RESEND_REGISTER_INTERVAL_US = 4 * 1000 * 1000L; // const int64_t PALF_CHECK_PARENT_CHILD_INTERVAL_US = 1 * 1000 * 1000; // 1000ms const int64_t PALF_DUMP_DEBUG_INFO_INTERVAL_US = 10 * 1000 * 1000; // 10s const int64_t PALF_UPDATE_CACHED_STAT_INTERVAL_US = 500 * 1000; // 500 ms -const int64_t PALF_SYNC_RPC_TIMEOUT_US = 500 * 1000; // 500 ms +const int64_t PALF_SYNC_RPC_TIMEOUT_US = 2 * 1000 * 1000; // 2 s const int64_t PALF_LOG_SYNC_DELAY_THRESHOLD_US = 3 * 1000 * 1000L; // 3 s constexpr int64_t INVALID_PROPOSAL_ID = INT64_MAX; constexpr int64_t PALF_INITIAL_PROPOSAL_ID = 0; diff --git a/src/logservice/palf/log_meta_info.cpp b/src/logservice/palf/log_meta_info.cpp index dfa6c0db8..64cbbd51d 100644 --- a/src/logservice/palf/log_meta_info.cpp +++ b/src/logservice/palf/log_meta_info.cpp @@ -14,6 +14,7 @@ #include "lib/ob_define.h" #include "lib/ob_errno.h" #include "lib/utility/serialization.h" +#include "share/rc/ob_tenant_base.h" namespace oceanbase { @@ -568,10 +569,13 @@ int LogConfigMeta::generate_for_default( const LogConfigInfo &curr_config_info) { int ret = OB_SUCCESS; + uint64_t tenant_data_version = 0; if (INVALID_PROPOSAL_ID == proposal_id) { ret = OB_INVALID_ARGUMENT; + } else if (OB_FAIL(GET_MIN_DATA_VERSION(MTL_ID(), tenant_data_version))) { + PALF_LOG(WARN, "get tenant data version failed", K(ret)); } else { - const bool is_cluster_already_4100 = (GET_MIN_CLUSTER_VERSION() >= CLUSTER_VERSION_4_1_0_0); + const bool is_cluster_already_4100 = (tenant_data_version >= DATA_VERSION_4_1_0_0); version_ = (is_cluster_already_4100)? LOG_CONFIG_META_VERSION_INC: LOG_CONFIG_META_VERSION; proposal_id_ = proposal_id; prev_ = prev_config_info; @@ -589,10 +593,13 @@ int LogConfigMeta::generate( const int64_t prev_mode_pid) { int ret = OB_SUCCESS; + uint64_t tenant_data_version = 0; if (INVALID_PROPOSAL_ID == proposal_id || false == curr_config_info.is_valid()) { ret = OB_INVALID_ARGUMENT; + } else if (OB_FAIL(GET_MIN_DATA_VERSION(MTL_ID(), tenant_data_version))) { + PALF_LOG(WARN, "get tenant data version failed", K(ret)); } else { - const bool is_cluster_already_4100 = (GET_MIN_CLUSTER_VERSION() >= CLUSTER_VERSION_4_1_0_0); + const bool is_cluster_already_4100 = (tenant_data_version >= DATA_VERSION_4_1_0_0); version_ = (is_cluster_already_4100)? LOG_CONFIG_META_VERSION_INC: LOG_CONFIG_META_VERSION; proposal_id_ = proposal_id; prev_ = prev_config_info; diff --git a/src/logservice/palf/log_rpc_macros.h b/src/logservice/palf/log_rpc_macros.h index 107460a0d..25ca74ce8 100644 --- a/src/logservice/palf/log_rpc_macros.h +++ b/src/logservice/palf/log_rpc_macros.h @@ -85,6 +85,7 @@ .by(tenant_id) \ .group_id(share::OBCG_CLOG) \ .compressed(options.transport_compress_func_) \ + .dst_cluster_id(src_cluster_id_) \ .post_packet(pkt, &cb); \ } else { \ ret = this->to(dst) \ @@ -93,6 +94,7 @@ .max_process_handler_time(100 * 1000) \ .by(tenant_id) \ .group_id(share::OBCG_CLOG) \ + .dst_cluster_id(src_cluster_id_) \ .post_packet(pkt, &cb); \ } \ return ret; \ @@ -112,6 +114,7 @@ .max_process_handler_time(100 * 1000) \ .by(tenant_id) \ .group_id(share::OBCG_ELECTION) \ + .dst_cluster_id(src_cluster_id_) \ .post_packet(pkt, &cb); \ return ret; \ } @@ -138,6 +141,7 @@ .by(tenant_id) \ .group_id(share::OBCG_CLOG) \ .compressed(options.transport_compress_func_) \ + .dst_cluster_id(src_cluster_id_) \ .NAME(pkt, resp); \ } else { \ ret = this->to(dst) \ @@ -146,6 +150,7 @@ .max_process_handler_time(100 * 1000) \ .by(tenant_id) \ .group_id(share::OBCG_CLOG) \ + .dst_cluster_id(src_cluster_id_) \ .NAME(pkt, resp); \ } \ return ret; \ diff --git a/unittest/logservice/CMakeLists.txt b/unittest/logservice/CMakeLists.txt index 8c677ecc2..80bc5b002 100644 --- a/unittest/logservice/CMakeLists.txt +++ b/unittest/logservice/CMakeLists.txt @@ -33,4 +33,3 @@ ob_unittest(test_log_dir_match) ob_unittest(test_server_log_block_mgr) log_unittest(test_role_change_handler) log_unittest(test_log_mode_mgr) -ob_unittest(test_ob_arbitration_service) diff --git a/unittest/logservice/test_log_config_mgr.cpp b/unittest/logservice/test_log_config_mgr.cpp index 9a6e9876c..e84c6f38a 100644 --- a/unittest/logservice/test_log_config_mgr.cpp +++ b/unittest/logservice/test_log_config_mgr.cpp @@ -1294,5 +1294,6 @@ int main(int argc, char **argv) OB_LOGGER.set_log_level("INFO"); PALF_LOG(INFO, "begin unittest::test_log_config_mgr"); ::testing::InitGoogleTest(&argc, argv); + ObClusterVersion::get_instance().update_data_version(DATA_CURRENT_VERSION); return RUN_ALL_TESTS(); } diff --git a/unittest/logservice/test_log_meta.cpp b/unittest/logservice/test_log_meta.cpp index b79882628..24f6c51d8 100644 --- a/unittest/logservice/test_log_meta.cpp +++ b/unittest/logservice/test_log_meta.cpp @@ -150,5 +150,6 @@ int main(int argc, char **argv) OB_LOGGER.set_log_level("INFO"); PALF_LOG(INFO, "begin unittest::test_log_meta"); ::testing::InitGoogleTest(&argc, argv); + oceanbase::ObClusterVersion::get_instance().update_data_version(DATA_CURRENT_VERSION); return RUN_ALL_TESTS(); } diff --git a/unittest/logservice/test_log_meta_entry.cpp b/unittest/logservice/test_log_meta_entry.cpp index b4abce410..cea2acf6f 100644 --- a/unittest/logservice/test_log_meta_entry.cpp +++ b/unittest/logservice/test_log_meta_entry.cpp @@ -126,5 +126,6 @@ int main(int argc, char **argv) OB_LOGGER.set_log_level("INFO"); PALF_LOG(INFO, "begin unittest::test_log_meta_entry"); ::testing::InitGoogleTest(&argc, argv); + oceanbase::ObClusterVersion::get_instance().update_data_version(DATA_CURRENT_VERSION); return RUN_ALL_TESTS(); } diff --git a/unittest/logservice/test_log_meta_info.cpp b/unittest/logservice/test_log_meta_info.cpp index 11ed4aa24..3d48b9663 100644 --- a/unittest/logservice/test_log_meta_info.cpp +++ b/unittest/logservice/test_log_meta_info.cpp @@ -366,6 +366,7 @@ int main(int args, char **argv) OB_LOGGER.set_log_level("INFO"); PALF_LOG(INFO, "begin unittest::test_log_meta_infos"); ::testing::InitGoogleTest(&args, argv); + oceanbase::ObClusterVersion::get_instance().update_data_version(DATA_CURRENT_VERSION); return RUN_ALL_TESTS(); } diff --git a/unittest/logservice/test_log_mode_mgr.cpp b/unittest/logservice/test_log_mode_mgr.cpp index dcd05424d..0102ffff5 100644 --- a/unittest/logservice/test_log_mode_mgr.cpp +++ b/unittest/logservice/test_log_mode_mgr.cpp @@ -385,5 +385,6 @@ int main(int argc, char **argv) OB_LOGGER.set_log_level("INFO"); PALF_LOG(INFO, "begin unittest::test_log_config_mgr"); ::testing::InitGoogleTest(&argc, argv); + oceanbase::ObClusterVersion::get_instance().update_data_version(DATA_CURRENT_VERSION); return RUN_ALL_TESTS(); } diff --git a/unittest/logservice/test_palf_bench.cpp b/unittest/logservice/test_palf_bench.cpp index 354bec90a..3dbafb02c 100644 --- a/unittest/logservice/test_palf_bench.cpp +++ b/unittest/logservice/test_palf_bench.cpp @@ -233,5 +233,6 @@ int main(int argc, char **argv) PALF_LOG(INFO, "palf bench begin"); ::testing::InitGoogleTest(&argc, argv); + oceanbase::ObClusterVersion::get_instance().update_data_version(DATA_CURRENT_VERSION); return RUN_ALL_TESTS(); }