【资源池化】【同步DMS点】修复dms_context_t未初始化问题

This commit is contained in:
18305199258
2024-03-11 19:19:42 +08:00
parent 468853d438
commit 950d968d50
3 changed files with 55 additions and 10 deletions

View File

@ -74,6 +74,9 @@ void InitDmsContext(dms_context_t *dmsContext)
void InitDmsBufContext(dms_context_t* dmsBufCxt, BufferTag buftag)
{
int32 ret = memset_sp(dmsBufCxt, sizeof(dms_context_t), 0, sizeof(dms_context_t));
securec_check(ret, "", "");
InitDmsContext(dmsBufCxt);
dmsBufCxt->len = DMS_PAGEID_SIZE;
dmsBufCxt->type = (unsigned char)DRC_RES_PAGE_TYPE;

View File

@ -1,3 +1,3 @@
dms_commit_id=89300f79fcd70380afe7ee4484ae8f4352fc5ede
dms_commit_id=81a037bc72626c213d556c2d49633dd428301ce2
dss_commit_id=f5bc787a052e458243b5205c6ce060d74967fdd6
cbb_commit_id=e9bdc7fa253fb0817d81bc8e680db6f67b9f5ee5

View File

@ -1,4 +1,4 @@
/*
/*
* Copyright (c) 2022 Huawei Technologies Co.,Ltd.
*
* DMS is licensed under Mulan PSL v2.
@ -33,7 +33,7 @@ extern "C" {
#define DMS_LOCAL_MINOR_VER_WEIGHT 1000
#define DMS_LOCAL_MAJOR_VERSION 0
#define DMS_LOCAL_MINOR_VERSION 0
#define DMS_LOCAL_VERSION 130
#define DMS_LOCAL_VERSION 133
#define DMS_SUCCESS 0
#define DMS_ERROR (-1)
@ -99,6 +99,8 @@ typedef enum en_dms_dr_type {
DMS_DR_TYPE_MAX,
} dms_dr_type_t;
#define DMS_DR_IS_TABLE_TYPE(type) ((type) == DMS_DR_TYPE_TABLE || (type) == DMS_DR_TYPE_PART_TABLE)
// persistent distributed resource id
typedef enum en_dms_persistent_id {
DMS_ID_DATABASE_CTRL = 0,
@ -245,6 +247,7 @@ typedef struct st_dms_cr_assist_t {
char wxid[DMS_XID_SIZE]; /* OUT parameter */
char entry[DMS_PAGEID_SIZE]; /* IN parameter */
char profile[DMS_INDEX_PROFILE_SIZE]; /* IN parameter */
char rowid[DMS_ROWID_SIZE]; /* IN parameter */
unsigned int check_restart; /* IN parameter */
unsigned int *check_found; /* IN & OUT parameter */
dms_cr_phase_t phase; /* OUT parameter */
@ -291,7 +294,6 @@ typedef struct st_dms_xmap_ctx {
typedef struct st_dms_process_context {
void *db_handle;
unsigned int sess_id; // current session id
unsigned int rmid; // current rm id
unsigned int inst_id; // current instance id
} dms_process_context_t;
@ -308,7 +310,6 @@ typedef struct st_dms_context {
struct {
void *db_handle;
unsigned int sess_id; // current session id
unsigned int rmid; // current rm id
unsigned int inst_id; // current instance id
};
dms_process_context_t proc_ctx;
@ -327,6 +328,8 @@ typedef struct st_dms_context {
unsigned char edp_inst;
drc_global_xid_t global_xid;
};
unsigned char intercept_type;
unsigned char curr_mode; // used for table lock
} dms_context_t;
typedef struct st_dms_cr {
@ -651,6 +654,9 @@ typedef enum st_dms_session_type {
DMS_SESSION_TYPE_FULL_RCY_PARAL = 3,
}dms_session_type_e;
#define DMS_RES_INTERCEPT_TYPE_NONE 0
#define DMS_RES_INTERCEPT_TYPE_BIZ_SESSION 1
#define DCS_BATCH_BUF_SIZE (1024 * 30)
#define DCS_RLS_OWNER_BATCH_SIZE (DCS_BATCH_BUF_SIZE / DMS_PAGEID_SIZE)
typedef struct st_dcs_batch_buf {
@ -726,6 +732,7 @@ typedef int(*dms_confirm_converting)(void *db_handle, char *pageid, unsigned cha
typedef int(*dms_confirm_owner)(void *db_handle, char *pageid, unsigned char *lock_mode, unsigned char *is_edp,
unsigned long long *lsn);
typedef int(*dms_flush_copy)(void *db_handle, char *pageid);
typedef int(*dms_flush_copy_check_lsn)(void *db_handle, char *pageid, unsigned long long lsn);
typedef int(*dms_need_flush)(void *db_handle, char *pageid, unsigned char *is_edp);
typedef int(*dms_edp_to_owner)(void *db_handle, char *pageid, unsigned char *is_edp);
typedef int(*dms_edp_lsn)(void *db_handle, char *pageid, unsigned long long *lsn);
@ -742,6 +749,7 @@ typedef void(*dms_reform_start_notify)(void *db_handle, dms_reform_start_context
typedef int(*dms_undo_init)(void *db_handle, unsigned char inst_id);
typedef int(*dms_tx_area_init)(void *db_handle, unsigned char inst_id);
typedef int(*dms_tx_area_load)(void *db_handle, unsigned char inst_id);
typedef int(*dms_tx_rollback_start)(void *db_handle, unsigned char inst_id);
typedef int(*dms_convert_to_readwrite)(void *db_handle);
typedef int(*dms_tx_rollback_finish)(void *db_handle, unsigned char inst_id);
typedef unsigned char(*dms_recovery_in_progress)(void *db_handle);
@ -814,6 +822,9 @@ typedef char *(*dms_display_rowid)(char *display_buf, unsigned int count, char *
typedef int (*dms_check_session_invalid)(unsigned int sid);
typedef int (*dms_drc_buf_res_rebuild)(void *db_handle);
typedef int (*dms_drc_buf_res_rebuild_parallel)(void *db_handle, unsigned char thread_index, unsigned char thread_num);
typedef int (*dms_drc_tlock_rebuild_parallel)(void *db_handle, unsigned char thread_index, unsigned char thread_num);
typedef int (*dms_drc_validate_page)(void *db_handle, unsigned char thread_index, unsigned char thread_num);
typedef int (*dms_drc_validate_tlock)(void *db_handle, unsigned char thread_index, unsigned char thread_num);
typedef int(*dms_ctl_rcy_clean_parallel_t)(void *db_handle, unsigned char thread_index, unsigned char thread_num);
typedef unsigned char(*dms_ckpt_session)(void *db_handle);
typedef void (*dms_check_if_build_complete)(void *db_handle, unsigned int *build_complete);
@ -873,11 +884,16 @@ typedef void (*dms_get_buf_info)(char* resid, stat_buf_info_t *buf_info);
typedef int (*dms_end_xa)(void *db_handle, void *knl_xa_xid, unsigned long long flags, unsigned long long scn,
unsigned char is_commit);
typedef unsigned char (*dms_xa_inuse)(void *db_handle, void *knl_xa_xid);
typedef int (*dms_get_part_changed)(void *db_handle, char* resid);
typedef int (*dms_ddl_2phase_rcy)(void *db_handle, unsigned long long inst_remove_bitmap);
typedef int (*dms_reform_is_need_ddl_2phase_rcy)(void *db_handle);
typedef void (*dms_buf_ctrl_recycle)(void *db_handle);
typedef void *(*dms_malloc_prot_proc)(size_t size);
typedef void (*dms_free_prot_proc)(void *ptr);
typedef int (*dms_get_kernel_error_code)();
typedef int (*dms_lsn_validate)(void *db_handle, char *pageid, unsigned long long lsn, unsigned char in_recovery);
typedef int (*dms_invld_tlock_ownership)(void *db_handle, char *resid, unsigned char req_mode, unsigned char is_try);
typedef int (*dms_get_tlock_mode)(void *db_handle, char *resid);
typedef struct st_dms_callback {
// used in reform
dms_get_list_stable get_list_stable;
@ -887,6 +903,7 @@ typedef struct st_dms_callback {
dms_confirm_owner confirm_owner;
dms_confirm_converting confirm_converting;
dms_flush_copy flush_copy;
dms_flush_copy_check_lsn flush_copy_check_lsn;
dms_need_flush need_flush;
dms_edp_to_owner edp_to_owner;
dms_edp_lsn edp_lsn;
@ -900,11 +917,15 @@ typedef struct st_dms_callback {
dms_undo_init undo_init;
dms_tx_area_init tx_area_init;
dms_tx_area_load tx_area_load;
dms_tx_rollback_start tx_rollback_start;
dms_convert_to_readwrite convert_to_readwrite;
dms_tx_rollback_finish tx_rollback_finish;
dms_recovery_in_progress recovery_in_progress;
dms_drc_buf_res_rebuild dms_reform_rebuild_buf_res;
dms_drc_buf_res_rebuild_parallel dms_reform_rebuild_parallel;
dms_drc_tlock_rebuild_parallel dms_reform_rebuild_tlock_parallel;
dms_drc_validate_page validate_page;
dms_drc_validate_tlock validate_table_lock;
dms_ctl_rcy_clean_parallel_t dms_ctl_rcy_clean_parallel;
dms_check_if_build_complete check_if_build_complete;
dms_check_if_restore_recover check_if_restore_recover;
@ -1026,12 +1047,16 @@ typedef struct st_dms_callback {
dms_get_buf_info get_buf_info;
dms_end_xa end_xa;
dms_xa_inuse xa_inuse;
dms_get_part_changed get_part_changed;
dms_ddl_2phase_rcy ddl_2phase_rcy;
dms_reform_is_need_ddl_2phase_rcy reform_is_need_ddl_2phase_rcy;
dms_buf_ctrl_recycle buf_ctrl_recycle;
dms_malloc_prot_proc dms_malloc_prot;
dms_free_prot_proc dms_free_prot;
dms_get_kernel_error_code db_get_kernel_error_code;
dms_lsn_validate lsn_validate;
dms_invld_tlock_ownership invld_tlock_ownership;
dms_get_tlock_mode get_tlock_mode;
} dms_callback_t;
typedef struct st_dms_instance_net_addr {
@ -1121,13 +1146,11 @@ typedef struct st_drc_local_lock_res_result {
char lock_id[DMS_MAX_NAME_LEN];
unsigned char is_owner;
unsigned char is_locked;
unsigned short count;
unsigned char releasing;
unsigned char unused;
unsigned short shared_count;
unsigned short stat;
unsigned short sid;
unsigned short rmid;
unsigned short rmid_sum;
unsigned char lock_mode;
unsigned char is_valid;
} drc_local_lock_res_result_t;
@ -1136,6 +1159,9 @@ typedef enum en_reform_callback_stat {
REFORM_CALLBACK_STAT_CKPT_LATCH = 0,
REFORM_CALLBACK_STAT_BUCKET_LOCK,
REFORM_CALLBACK_STAT_SS_READ_LOCK,
REFORM_CALLBACK_STAT_ENTRY_TLOCK,
REFORM_CALLBACK_STAT_PART_ENTRY_TLOCK,
REFORM_CALLBACK_STAT_REBUILD_TLOCK_REMOTE,
REFORM_CALLBACK_STAT_GET_DISK_LSN,
REFORM_CALLBACK_STAT_DRC_EXIST,
REFORM_CALLBACK_STAT_CLEAN_EDP,
@ -1149,10 +1175,26 @@ typedef enum en_reform_callback_stat {
REFORM_MES_TASK_STAT_NEED_FLUSH_SS_READ_LOCK,
REFORM_MES_TASK_STAT_EDP_TO_OWNER_GET_DISK_LSN,
REFORM_MES_TASK_STAT_EDP_TO_OWNER_ALLOC_CTRL,
REFORM_CALLBACK_STAT_VALIDATE_DRC_PAGE_BUCKET_LOCK,
REFORM_CALLBACK_STAT_VALIDATE_DRC_PAGE_SS_READ_LOCK,
REFORM_CALLBACK_STAT_VALIDATE_DRC_PAGE_REMOTE,
REFORM_CALLBACK_STAT_VALIDATE_DRC_ENTRY_TLOCK,
REFORM_CALLBACK_STAT_VALIDATE_DRC_PART_ENTRY_TLOCK,
REFORM_CALLBACK_STAT_VALIDATE_DRC_TLOCK_REMOTE,
REFORM_MES_TASK_STAT_VALIDATE_LSN_GET_CTRL,
REFORM_MES_TASK_STAT_VALIDATE_LSN_GET_CTRL_TIMEOUT,
REFORM_MES_TASK_STAT_VALIDATE_LSN_GET_DISK_LSN,
REFORM_MES_TASK_STAT_VALIDATE_LSN_BUF_UNLATCH,
REFORM_CALLBACK_STAT_COUNT
} reform_callback_stat_e;
typedef struct st_dms_tlock_info {
dms_drid_t resid;
unsigned char lock_mode;
unsigned char unused[3];
} dms_tlock_info_t;
#ifdef __cplusplus
}
#endif