From 371a3d6f5a06093e3e2c302500d3f90761fae3ca Mon Sep 17 00:00:00 2001 From: dongning12 Date: Sat, 17 Jun 2023 14:32:44 +0800 Subject: [PATCH] =?UTF-8?q?[=E8=B5=84=E6=BA=90=E6=B1=A0=E5=8C=96]6.17?= =?UTF-8?q?=E4=BF=AE=E5=A4=8DDMS=E7=89=88=E6=9C=AC=E7=9A=84=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ddes/adapter/ss_dms_callback.cpp | 4 ++-- src/gausskernel/ddes/ddes_commit_id | 2 +- src/include/ddes/dms/dms_api.h | 18 +++++++++++++----- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/gausskernel/ddes/adapter/ss_dms_callback.cpp b/src/gausskernel/ddes/adapter/ss_dms_callback.cpp index 0abe109109..a9fb5b67dc 100644 --- a/src/gausskernel/ddes/adapter/ss_dms_callback.cpp +++ b/src/gausskernel/ddes/adapter/ss_dms_callback.cpp @@ -425,7 +425,7 @@ static int SetPrimaryIdOnStandby(int primary_id) /* called on both new primary and all standby nodes to refresh status */ static int CBSaveStableList(void *db_handle, unsigned long long list_stable, unsigned char reformer_id, - unsigned int save_ctrl) + unsigned long long list_in, unsigned int save_ctrl) { int primary_id = (int)reformer_id; g_instance.dms_cxt.SSReformerControl.primaryInstId = primary_id; @@ -827,7 +827,7 @@ static int CBSetBufLoadStatus(dms_buf_ctrl_t *buf_ctrl, dms_buf_load_status_t dm return DMS_SUCCESS; } -static void *CBGetHandle(unsigned int *db_handle_index) +static void *CBGetHandle(unsigned int *db_handle_index, dms_session_type_e session_type) { void *db_handle = g_instance.proc_base->allProcs[g_instance.dms_cxt.dmsProcSid]; *db_handle_index = pg_atomic_fetch_add_u32(&g_instance.dms_cxt.dmsProcSid, 1); diff --git a/src/gausskernel/ddes/ddes_commit_id b/src/gausskernel/ddes/ddes_commit_id index 5d69c027b6..bd2e01fd37 100644 --- a/src/gausskernel/ddes/ddes_commit_id +++ b/src/gausskernel/ddes/ddes_commit_id @@ -1,2 +1,2 @@ -dms_commit_id=1ecf0da9c6bafe2731d75fbddac09e54cc7bfd44 +dms_commit_id=8f11876adedc59140b721663c9a6fad1e1f5a723 dss_commit_id=a62ccb6571d5448df3e91b95f788501836779625 diff --git a/src/include/ddes/dms/dms_api.h b/src/include/ddes/dms/dms_api.h index 51bac53312..2e59137bc6 100644 --- a/src/include/ddes/dms/dms_api.h +++ b/src/include/ddes/dms/dms_api.h @@ -190,6 +190,7 @@ typedef struct st_dms_xmap_ctx { typedef struct st_dms_context { unsigned int inst_id; // current instance id unsigned int sess_id; // current session id + unsigned int rmid; // current rm id dms_session_e sess_type; // request page: recovery session flag void *db_handle; unsigned char is_try; @@ -236,9 +237,9 @@ typedef struct dms_opengauss_txn_snapshot { } dms_opengauss_txn_snapshot_t; typedef struct dms_opengauss_txn_sw_info { - unsigned long long sxid; - unsigned int scid; - unsigned int server_proc_slot; + unsigned long long sxid; // transaction id of master, used for standby write feature + unsigned int scid; // command id of master, used for standby write feature + unsigned int server_proc_slot; // backend slot of master, used for standby write feature } dms_opengauss_txn_sw_info_t; typedef enum dms_opengauss_lock_req_type { @@ -489,6 +490,13 @@ typedef enum en_dms_status { DMS_STATUS_IN = 3 } dms_status_t; // used in database startup +typedef enum st_dms_session_type { + DMS_SESSION_TYPE_NONE = 0, + DMS_SESSION_TYPE_WORKER = 1, + DMS_SESSION_TYPE_FULL_RCY = 2, + DMS_SESSION_TYPE_FULL_RCY_PARAL = 3, +}dms_session_type_e; + #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 { @@ -499,7 +507,7 @@ typedef struct st_dcs_batch_buf { typedef int(*dms_get_list_stable)(void *db_handle, unsigned long long *list_stable, unsigned char *reformer_id); typedef int(*dms_save_list_stable)(void *db_handle, unsigned long long list_stable, unsigned char reformer_id, - unsigned int save_ctrl); + unsigned long long list_in, unsigned int save_ctrl); typedef int(*dms_get_dms_status)(void *db_handle); typedef void(*dms_set_dms_status)(void *db_handle, int status); typedef int(*dms_confirm_converting)(void *db_handle, char *pageid, unsigned char smon_chk, @@ -544,7 +552,7 @@ typedef void(*dms_leave_local_page)(void *db_handle, dms_buf_ctrl_t *buf_ctrl); typedef void(*dms_get_pageid)(dms_buf_ctrl_t *buf_ctrl, char **pageid, unsigned int *size); typedef char *(*dms_get_page)(dms_buf_ctrl_t *buf_ctrl); typedef int (*dms_invalidate_page)(void *db_handle, char pageid[DMS_PAGEID_SIZE], unsigned char invld_owner); -typedef void *(*dms_get_db_handle)(unsigned int *db_handle_index); +typedef void *(*dms_get_db_handle)(unsigned int *db_handle_index, dms_session_type_e session_type); typedef void (*dms_release_db_handle)(void *db_handle); typedef void *(*dms_stack_push_cr_cursor)(void *db_handle); typedef void (*dms_stack_pop_cr_cursor)(void *db_handle); -- Gitee