【资源池化】【同步DMS点】修复dms_context_t未初始化问题
This commit is contained in:
@ -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;
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
dms_commit_id=89300f79fcd70380afe7ee4484ae8f4352fc5ede
|
||||
dms_commit_id=81a037bc72626c213d556c2d49633dd428301ce2
|
||||
dss_commit_id=f5bc787a052e458243b5205c6ce060d74967fdd6
|
||||
cbb_commit_id=e9bdc7fa253fb0817d81bc8e680db6f67b9f5ee5
|
||||
@ -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
|
||||
|
||||
Reference in New Issue
Block a user