From d9be5d149c847b7515abfae2886d5ebb7590309b Mon Sep 17 00:00:00 2001 From: chentingting <2393940156@qq.com> Date: Mon, 26 Jun 2023 09:45:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=81=E6=AD=A2=E5=8F=82=E6=95=B0=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E8=BF=87=E5=A4=A7=E5=AF=BC=E8=87=B4mes=20waiting=20ro?= =?UTF-8?q?om=E8=AE=BF=E9=97=AE=E8=B6=8A=E7=95=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gausskernel/ddes/adapter/ss_dms.cpp | 6 ++++++ src/gausskernel/ddes/adapter/ss_init.cpp | 8 ++++++++ src/gausskernel/ddes/ddes_commit_id | 4 ++-- src/include/ddes/dms/dms_api.h | 8 +++++++- src/include/ddes/dms/ss_dms.h | 2 ++ 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/gausskernel/ddes/adapter/ss_dms.cpp b/src/gausskernel/ddes/adapter/ss_dms.cpp index 684bf922f2..3987c1b455 100644 --- a/src/gausskernel/ddes/adapter/ss_dms.cpp +++ b/src/gausskernel/ddes/adapter/ss_dms.cpp @@ -126,6 +126,7 @@ int ss_dms_func_init() SS_RETURN_IFERR(DMS_LOAD_SYMBOL_FUNC(dms_refresh_logger)); SS_RETURN_IFERR(DMS_LOAD_SYMBOL_FUNC(dms_validate_drc)); SS_RETURN_IFERR(DMS_LOAD_SYMBOL_FUNC(dms_reform_req_opengauss_ondemand_redo_buffer)); + SS_RETURN_IFERR(DMS_LOAD_SYMBOL_FUNC(dms_get_mes_max_watting_rooms)); g_ss_dms_func.inited = true; return DMS_SUCCESS; } @@ -339,3 +340,8 @@ int dms_reform_req_opengauss_ondemand_redo_buffer(dms_context_t *dms_ctx, void * { return g_ss_dms_func.dms_reform_req_opengauss_ondemand_redo_buffer(dms_ctx, block_key, key_len, redo_status); } + +unsigned int dms_get_mes_max_watting_rooms(void) +{ + return g_ss_dms_func.dms_get_mes_max_watting_rooms(); +} diff --git a/src/gausskernel/ddes/adapter/ss_init.cpp b/src/gausskernel/ddes/adapter/ss_init.cpp index b9ec4ada75..36eefcf53b 100644 --- a/src/gausskernel/ddes/adapter/ss_init.cpp +++ b/src/gausskernel/ddes/adapter/ss_init.cpp @@ -41,6 +41,7 @@ #define FIXED_NUM_OF_INST_IP_PORT 3 #define BYTES_PER_KB 1024 +#define NON_PROC_NUM 4 const int MAX_CPU_STR_LEN = 5; @@ -395,6 +396,13 @@ void DMSInit() ereport(FATAL, (errmsg("failed to register dms memcxt callback!"))); } + uint32 TotalProcs = (uint32)(GLOBAL_ALL_PROCS); + uint32 MesMaxRooms = dms_get_mes_max_watting_rooms(); + if (TotalProcs + NON_PROC_NUM >= MesMaxRooms) { + ereport(FATAL, (errmsg("The thread ID range is too large when dms enable. Please set the related GUC " + "parameters to a smaller value."))); + } + dms_profile_t profile; errno_t rc = memset_s(&profile, sizeof(dms_profile_t), 0, sizeof(dms_profile_t)); securec_check(rc, "\0", "\0"); diff --git a/src/gausskernel/ddes/ddes_commit_id b/src/gausskernel/ddes/ddes_commit_id index 1423a03299..cf134156fb 100644 --- a/src/gausskernel/ddes/ddes_commit_id +++ b/src/gausskernel/ddes/ddes_commit_id @@ -1,2 +1,2 @@ -dms_commit_id=cf6200a73770c7e5a5a8d12d8d060bf32032735a -dss_commit_id=97deeec25d7ec4ee0c92b5bc0bcc50eaa3ae64af +dms_commit_id=ede9efeda8ed0ab2ad79f119b619c8a063023683 +dss_commit_id=97deeec25d7ec4ee0c92b5bc0bcc50eaa3ae64af \ No newline at end of file diff --git a/src/include/ddes/dms/dms_api.h b/src/include/ddes/dms/dms_api.h index ee3e50c71a..3bfe5f4f5e 100644 --- a/src/include/ddes/dms/dms_api.h +++ b/src/include/ddes/dms/dms_api.h @@ -833,6 +833,7 @@ typedef struct st_dms_profile { unsigned char scrlock_server_bind_core_start; unsigned char scrlock_server_bind_core_end; unsigned char parallel_thread_num; + unsigned int max_wait_time; } dms_profile_t; typedef struct st_logger_param { @@ -846,11 +847,16 @@ typedef struct st_logger_param { ((ctrl)->lock_mode == DMS_LOCK_SHARE)) #define DMS_BUF_CTRL_NOT_LOCK(ctrl) ((ctrl)->lock_mode == DMS_LOCK_NULL) +typedef enum en_dms_info_id { + DMS_INFO_REFORM_CURRENT = 0, + DMS_INFO_REFORM_LAST = 1, +} dms_info_id_e; + #define DMS_LOCAL_MAJOR_VER_WEIGHT 1000000 #define DMS_LOCAL_MINOR_VER_WEIGHT 1000 #define DMS_LOCAL_MAJOR_VERSION 0 #define DMS_LOCAL_MINOR_VERSION 0 -#define DMS_LOCAL_VERSION 73 +#define DMS_LOCAL_VERSION 76 #ifdef __cplusplus } diff --git a/src/include/ddes/dms/ss_dms.h b/src/include/ddes/dms/ss_dms.h index 5384666ec4..534ed7834a 100644 --- a/src/include/ddes/dms/ss_dms.h +++ b/src/include/ddes/dms/ss_dms.h @@ -81,6 +81,7 @@ typedef struct st_ss_dms_func { unsigned char is_dirty); int (*dms_reform_req_opengauss_ondemand_redo_buffer)(dms_context_t *dms_ctx, void *block_key, unsigned int key_len, int *redo_status); + unsigned int (*dms_get_mes_max_watting_rooms)(void); } ss_dms_func_t; int ss_dms_func_init(); @@ -125,6 +126,7 @@ void dms_pre_uninit(void); void dms_validate_drc(dms_context_t *dms_ctx, dms_buf_ctrl_t *ctrl, unsigned long long lsn, unsigned char is_dirty); int dms_reform_req_opengauss_ondemand_redo_buffer(dms_context_t *dms_ctx, void *block_key, unsigned int key_len, int *redo_status); +unsigned int dms_get_mes_max_watting_rooms(void); #ifdef __cplusplus } #endif -- Gitee