From 2a6c246bb752fed031af10b7fdf08a27dba1768b Mon Sep 17 00:00:00 2001 From: zhangao_za <18829237393@163.com> Date: Thu, 10 Aug 2023 15:30:01 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8Ddorado=E5=8F=8C=E9=9B=86?= =?UTF-8?q?=E7=BE=A4=E5=90=AF=E5=8A=A8=EF=BC=8C=E5=A2=9E=E5=8A=A0-z?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cm_agent/cm_agent.centralized.conf.sample | 1 + src/cm_agent/cma_common.cpp | 8 +++++--- src/cm_agent/cma_global_params.cpp | 1 + src/cm_agent/cma_instance_management_res.cpp | 3 +++ src/cm_agent/cma_main.cpp | 2 ++ src/cm_common/cm_misc.cpp | 12 ++++++++++++ src/cm_ctl/ctl_param_check.cpp | 6 +++--- src/include/cm/cm_agent/cma_global_params.h | 1 + src/include/cm/cm_misc.h | 1 + src/include/cm/cm_msg.h | 6 ++++++ 10 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/cm_agent/cm_agent.centralized.conf.sample b/src/cm_agent/cm_agent.centralized.conf.sample index 5de0d51..95fb5a3 100644 --- a/src/cm_agent/cm_agent.centralized.conf.sample +++ b/src/cm_agent/cm_agent.centralized.conf.sample @@ -50,4 +50,5 @@ enable_fence_dn = off #enable fence the d #if set to on, restart datenode after 30 seconds. otherwise, don't restart datanode. #default off event_triggers = '' +dorado_cluster_mode = 0 # cluster run mode for double dorado storage scene, Valid value: 0-2 ############### must leave a new line at the end ################### diff --git a/src/cm_agent/cma_common.cpp b/src/cm_agent/cma_common.cpp index 30b1c2b..0098079 100644 --- a/src/cm_agent/cma_common.cpp +++ b/src/cm_agent/cma_common.cpp @@ -356,7 +356,8 @@ void ReloadParametersFromConfig() if (g_enableE2ERto == 1) { agent_phony_dead_check_interval = 1; } - + g_doradoClusterMode = + (DoradoClusterMode)get_uint32_value_from_config(configDir, "dorado_cluster_mode", SS_DORADO_NULL); log_threshold_check_interval = get_uint32_value_from_config(configDir, "log_threshold_check_interval", log_threshold_check_interval); undocumentedVersion = get_uint32_value_from_config(configDir, "upgrade_from", 0); @@ -409,7 +410,7 @@ void ReloadParametersFromConfigfile() " enableLogCompress=%s, security_mode=%s, incremental_build=%d, unix_socket_directory=%s, " #ifndef ENABLE_MULTIPLE_NODES "enable_e2e_rto=%u, disaster_recovery_type=%d, environment_threshold=%s, " - "db_service_vip=%s, enable_fence_dn=%s\n", + "db_service_vip=%s, enable_fence_dn=%s, dorado_cluster_mode=%d\n", #else "enable_e2e_rto=%u, disaster_recovery_type=%d, environment_threshold=%s\n", #endif @@ -439,7 +440,8 @@ void ReloadParametersFromConfigfile() #ifndef ENABLE_MULTIPLE_NODES g_environmentThreshold, g_dbServiceVip, - g_enableFenceDn); + g_enableFenceDn, + g_doradoClusterMode); #else g_environmentThreshold); #endif diff --git a/src/cm_agent/cma_global_params.cpp b/src/cm_agent/cma_global_params.cpp index 41977ac..7389489 100644 --- a/src/cm_agent/cma_global_params.cpp +++ b/src/cm_agent/cma_global_params.cpp @@ -150,6 +150,7 @@ uint32 dilatation_shard_count_for_disk_capacity_alarm = 1; uint32 g_cnAutoRepairDelay = 0; uint32 agent_phony_dead_check_interval = 10; DisasterRecoveryType g_disasterRecoveryType = DISASTER_RECOVERY_NULL; +DoradoClusterMode g_doradoClusterMode = SS_DORADO_NULL; /* T status agent check phony dead inteval */ uint32 g_agentCheckTStatusInterval = 36; uint32 enable_gtm_phony_dead_check = 1; diff --git a/src/cm_agent/cma_instance_management_res.cpp b/src/cm_agent/cma_instance_management_res.cpp index 88244c4..d32c273 100644 --- a/src/cm_agent/cma_instance_management_res.cpp +++ b/src/cm_agent/cma_instance_management_res.cpp @@ -76,6 +76,9 @@ status_t StartOneResInst(const CmResConfList *conf) if (conf->resType == CUSTOM_RESOURCE_DN && undocumentedVersion > 0) { ret = snprintf_s(oper, MAX_OPTION_LEN, MAX_OPTION_LEN - 1, "-start %u %s '-u %u'", conf->resInstanceId, conf->arg, undocumentedVersion); + } else if (conf->resType == CUSTOM_RESOURCE_DN && g_doradoClusterMode != SS_DORADO_NULL) { + ret = snprintf_s(oper, MAX_OPTION_LEN, MAX_OPTION_LEN - 1, "-start %u %s '-z %s'", conf->resInstanceId, + conf->arg, type_int_to_str_dorado(g_doradoClusterMode)); } else { ret = snprintf_s(oper, MAX_OPTION_LEN, MAX_OPTION_LEN - 1, "-start %u %s", conf->resInstanceId, conf->arg); } diff --git a/src/cm_agent/cma_main.cpp b/src/cm_agent/cma_main.cpp index e1c9577..56a3520 100644 --- a/src/cm_agent/cma_main.cpp +++ b/src/cm_agent/cma_main.cpp @@ -1449,6 +1449,8 @@ int get_agent_global_params_from_configfile() g_disasterRecoveryType = (DisasterRecoveryType)get_uint32_value_from_config(configDir, "disaster_recovery_type", DISASTER_RECOVERY_NULL); agent_phony_dead_check_interval = g_enableE2ERto == 1 ? 1 : agent_phony_dead_check_interval; + g_doradoClusterMode = + (DoradoClusterMode)get_uint32_value_from_config(configDir, "dorado_cluster_mode", SS_DORADO_NULL); log_threshold_check_interval = get_uint32_value_from_config(configDir, "log_threshold_check_interval", log_threshold_check_interval); diff --git a/src/cm_common/cm_misc.cpp b/src/cm_common/cm_misc.cpp index 2efa10e..6217cc2 100644 --- a/src/cm_common/cm_misc.cpp +++ b/src/cm_common/cm_misc.cpp @@ -308,6 +308,18 @@ const char* type_int_to_string(int type) return "Unknown"; } +const char *type_int_to_str_dorado(DoradoClusterMode dorado_type) +{ + switch (dorado_type) { + case SS_DORADO_PRIMARY: + return "cluster_primary"; + case SS_DORADO_STANDBY: + return "cluster_standby"; + default: + return "no_dorado_double_cluster"; + } +} + gtm_con_string gtm_con_map_string[] = {{"Connection ok", CON_OK}, {"Connection bad", CON_BAD}, {"Connection started", CON_STARTED}, diff --git a/src/cm_ctl/ctl_param_check.cpp b/src/cm_ctl/ctl_param_check.cpp index ec0e443..20c5655 100644 --- a/src/cm_ctl/ctl_param_check.cpp +++ b/src/cm_ctl/ctl_param_check.cpp @@ -56,14 +56,14 @@ const char *g_cmaParamInfo[] = { "agent_rhb_interval|int|0,2147483647|NULL|NULL|", #ifndef ENABLE_MULTIPLE_NODES "enable_fence_dn|string|0,0|NULL|NULL|", -#endif -#ifdef ENABLE_MULTIPLE_NODES +#else "enable_cn_auto_repair|bool|0,0|NULL|NULL|", "enable_gtm_phony_dead_check|int|0,1|NULL|NULL|", "environment_threshold|string|0,0|NULL|NULL|", #endif "db_service_vip|string|0,0|NULL|NULL|", - "event_triggers|string|0,0|NULL|NULL|" + "event_triggers|string|0,0|NULL|NULL|", + "dorado_cluster_mode|int|0,2|NULL|NULL|", }; const char *g_cmsParamInfo[] = { diff --git a/src/include/cm/cm_agent/cma_global_params.h b/src/include/cm/cm_agent/cma_global_params.h index 2ff159a..7f0e142 100644 --- a/src/include/cm/cm_agent/cma_global_params.h +++ b/src/include/cm/cm_agent/cma_global_params.h @@ -231,6 +231,7 @@ extern uint32 g_dnBuildCheckTimes[CM_MAX_DATANODE_PER_NODE]; extern uint32 g_nodeIndexForCmServer[CM_PRIMARY_STANDBY_NUM]; extern uint32 g_enableE2ERto; extern DisasterRecoveryType g_disasterRecoveryType; +extern DoradoClusterMode g_doradoClusterMode; extern int g_cmShutdownLevel; /* cm_ctl stop single instance, single node or all nodes */ extern ShutdownMode g_cmShutdownMode; /* fast shutdown */ diff --git a/src/include/cm/cm_misc.h b/src/include/cm/cm_misc.h index 141b0f1..dbc9825 100644 --- a/src/include/cm/cm_misc.h +++ b/src/include/cm/cm_misc.h @@ -229,6 +229,7 @@ extern const char* datanode_wal_send_state_int_to_string(int dbstate); extern const char* datanode_dbstate_int_to_string(int dbstate); extern const char* type_int_to_string(int type); +extern const char* type_int_to_str_dorado(DoradoClusterMode dorado_type); const char* gtm_con_int_to_string(int con); extern const char* datanode_role_int_to_string(int role); extern const char* datanode_static_role_int_to_string(uint32 role); diff --git a/src/include/cm/cm_msg.h b/src/include/cm/cm_msg.h index 73338f8..5752d71 100644 --- a/src/include/cm/cm_msg.h +++ b/src/include/cm/cm_msg.h @@ -635,6 +635,12 @@ typedef enum { INSTALL_TYPE_STREAMING = 2 } ClusterInstallType; +typedef enum { + SS_DORADO_NULL = 0, + SS_DORADO_PRIMARY = 1, + SS_DORADO_STANDBY = 2 +} DoradoClusterMode; + typedef struct ctl_to_cm_set_st { int msg_type; int log_level;