From 4f3505328ff0dceeafd98d5d9c1d1722689a7170 Mon Sep 17 00:00:00 2001 From: chenchao <1790599142@qq.com> Date: Tue, 31 Jan 2023 11:08:57 +0800 Subject: [PATCH] =?UTF-8?q?dss=E6=94=AF=E6=8C=81=E4=B8=BB=E5=A4=87?= =?UTF-8?q?=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ddes/adapter/ss_dms_callback.cpp | 17 ++--------------- src/gausskernel/ddes/ddes_commit_id | 2 +- .../process/postmaster/postmaster.cpp | 10 +--------- src/gausskernel/storage/dss/dss_adaptor.cpp | 2 +- src/gausskernel/storage/dss/fio_dss.cpp | 8 ++------ src/include/storage/dss/dss_adaptor.h | 4 ++-- src/include/storage/dss/dss_api_def.h | 2 +- src/include/storage/dss/fio_dss.h | 2 +- 8 files changed, 11 insertions(+), 36 deletions(-) diff --git a/src/gausskernel/ddes/adapter/ss_dms_callback.cpp b/src/gausskernel/ddes/adapter/ss_dms_callback.cpp index 4f86860a1..c636ea82c 100644 --- a/src/gausskernel/ddes/adapter/ss_dms_callback.cpp +++ b/src/gausskernel/ddes/adapter/ss_dms_callback.cpp @@ -274,15 +274,6 @@ static int CBSwitchoverDemote(void *db_handle) SpinLockAcquire(&t_thrd.walsender_cxt.WalSndCtl->mutex); t_thrd.walsender_cxt.WalSndCtl->demotion = NoDemote; SpinLockRelease(&t_thrd.walsender_cxt.WalSndCtl->mutex); - - if (dss_set_server_status_wrapper(false) != GS_SUCCESS) { - ereport(PANIC, - (errmodule(MOD_DMS), - errmsg("[SS switchover] set dssserver standby failed, vgname: \"%s\", socketpath: \"%s\"", - g_instance.attr.attr_storage.dss_attr.ss_dss_vg_name, - g_instance.attr.attr_storage.dss_attr.ss_dss_conn_path), - errhint("Check vgname and socketpath and restart later."))); - } ereport(LOG, (errmodule(MOD_DMS), errmsg("[SS switchover] Success in %s primary demote, running as standby," " waiting for reformer setting new role.", DemoteModeDesc(demote_mode)))); @@ -320,7 +311,7 @@ static int CBSwitchoverPromote(void *db_handle, unsigned char origPrimaryId) ereport(LOG, (errmodule(MOD_DMS), errmsg("[SS switchover] Starting to promote standby."))); /* since original primary must have demoted, it is safe to allow promting standby write */ - if (dss_set_server_status_wrapper(true) != GS_SUCCESS) { + if (dss_set_server_status_wrapper() != GS_SUCCESS) { ereport(PANIC, (errmodule(MOD_DMS), errmsg("Could not set dssserver flag, vgname: \"%s\", socketpath: \"%s\"", g_instance.attr.attr_storage.dss_attr.ss_dss_vg_name, g_instance.attr.attr_storage.dss_attr.ss_dss_conn_path), @@ -1412,13 +1403,9 @@ static void CBReformStartNotify(void *db_handle, dms_role_t role, unsigned char ereport(LOG, (errmodule(MOD_DMS), errmsg("[SS reform] dms reform start, role:%d, reform type:%d", role, (int)ss_reform_type))); if (reform_info->dms_role == DMS_ROLE_REFORMER) { - if (dss_set_server_status_wrapper(true) != GS_SUCCESS) { + if (dss_set_server_status_wrapper() != GS_SUCCESS) { ereport(PANIC, (errmodule(MOD_DMS), errmsg("[SS reform] Could not set dssserver flag=read_write"))); } - } else { - if (dss_set_server_status_wrapper(false) != GS_SUCCESS) { - ereport(PANIC, (errmodule(MOD_DMS), errmsg("[SS reform] Could not set dssserver flag=read_only"))); - } } /* cluster has no transactions during startup reform */ diff --git a/src/gausskernel/ddes/ddes_commit_id b/src/gausskernel/ddes/ddes_commit_id index 1f2736108..9f9cc07ce 100644 --- a/src/gausskernel/ddes/ddes_commit_id +++ b/src/gausskernel/ddes/ddes_commit_id @@ -1,2 +1,2 @@ dms_commit_id=d5674265647286594922e5033142cfee9cbfdcfb -dss_commit_id=5444f9b4715bd78c9c6b4757475e07ac6398ed6e \ No newline at end of file +dss_commit_id=5cbcec9ce4b88f85a83d229a118d31db6ed1fea2 \ No newline at end of file diff --git a/src/gausskernel/process/postmaster/postmaster.cpp b/src/gausskernel/process/postmaster/postmaster.cpp index 60cb40ac5..44a3f7c7a 100644 --- a/src/gausskernel/process/postmaster/postmaster.cpp +++ b/src/gausskernel/process/postmaster/postmaster.cpp @@ -2432,21 +2432,13 @@ int PostmasterMain(int argc, char* argv[]) } if (SS_PRIMARY_MODE) { - if (dss_set_server_status_wrapper(true) != GS_SUCCESS) { + if (dss_set_server_status_wrapper() != GS_SUCCESS) { ereport(FATAL, (errmsg("Could not set dssserver flag, vgname: \"%s\", socketpath: \"%s\"", g_instance.attr.attr_storage.dss_attr.ss_dss_vg_name, g_instance.attr.attr_storage.dss_attr.ss_dss_conn_path), errhint("Check vgname and socketpath and restart later."))); } ereport(LOG, (errmsg("set dss server status as primary"))); - } else if (SS_STANDBY_MODE) { - if (dss_set_server_status_wrapper(false) != GS_SUCCESS) { - ereport(FATAL, (errmsg("Could not set dssserver flag, vgname: \"%s\", socketpath: \"%s\"", - g_instance.attr.attr_storage.dss_attr.ss_dss_vg_name, - g_instance.attr.attr_storage.dss_attr.ss_dss_conn_path), - errhint("Check vgname and socketpath and restart later."))); - } - ereport(LOG, (errmsg("set dss server status as standby"))); } /* diff --git a/src/gausskernel/storage/dss/dss_adaptor.cpp b/src/gausskernel/storage/dss/dss_adaptor.cpp index 7d429a08a..1ee5d875e 100644 --- a/src/gausskernel/storage/dss/dss_adaptor.cpp +++ b/src/gausskernel/storage/dss/dss_adaptor.cpp @@ -125,7 +125,7 @@ int dss_device_init(const char *conn_path, bool enable_dss) SS_RETURN_IFERR(dss_load_symbol(device_op.handle, "dss_lstat", (void **)&device_op.dss_lstat)); SS_RETURN_IFERR(dss_load_symbol(device_op.handle, "dss_fstat", (void **)&device_op.dss_fstat)); SS_RETURN_IFERR( - dss_load_symbol(device_op.handle, "dss_set_server_status", (void **)&device_op.dss_set_server_status)); + dss_load_symbol(device_op.handle, "dss_set_main_inst", (void **)&device_op.dss_set_main_inst)); SS_RETURN_IFERR(dss_load_symbol(device_op.handle, "dss_set_svr_path", (void **)&device_op.dss_set_svr_path)); SS_RETURN_IFERR( dss_load_symbol(device_op.handle, "dss_register_log_callback", (void **)&device_op.dss_register_log_callback)); diff --git a/src/gausskernel/storage/dss/fio_dss.cpp b/src/gausskernel/storage/dss/fio_dss.cpp index 5fff27857..b0000366b 100644 --- a/src/gausskernel/storage/dss/fio_dss.cpp +++ b/src/gausskernel/storage/dss/fio_dss.cpp @@ -689,13 +689,9 @@ int dss_pwrite_file_by_zero(int handle, off_t offset, off_t len) return GS_SUCCESS; } -int dss_set_server_status_wrapper(bool is_master) +int dss_set_server_status_wrapper() { - if (is_master) { - return g_dss_device_op.dss_set_server_status(DSS_STATUS_READWRITE); - } else { - return g_dss_device_op.dss_set_server_status(DSS_STATUS_READONLY); - } + return g_dss_device_op.dss_set_main_inst(); } int dss_remove_dev(const char *name) diff --git a/src/include/storage/dss/dss_adaptor.h b/src/include/storage/dss/dss_adaptor.h index a4cf8bb62..d386382cf 100644 --- a/src/include/storage/dss/dss_adaptor.h +++ b/src/include/storage/dss/dss_adaptor.h @@ -62,7 +62,6 @@ typedef int (*dss_read_device_link)(const char *path, char *buf, int bufsize); typedef int (*dss_stat_device)(const char *path, dss_stat_info_t item); typedef int (*dss_lstat_device)(const char *path, dss_stat_info_t item); typedef int (*dss_fstat_device)(int handle, dss_stat_info_t item); -typedef int (*dss_set_status)(dss_server_status_t status); typedef void (*dss_device_size)(const char *fname, long *fsize); typedef void (*dss_error_info)(int *errorcode, const char **errormsg); typedef void (*dss_svr_path)(const char *conn_path); @@ -72,6 +71,7 @@ typedef int (*dss_aio_prep_pwrite_device)(void *iocb, int handle, void *buf, siz typedef int (*dss_aio_prep_pread_device)(void *iocb, int handle, void *buf, size_t count, long long offset); typedef int (*dss_init_logger_t)(char *log_home, unsigned int log_level, unsigned int log_backup_file_count, unsigned long long log_max_file_size); typedef void (*dss_refresh_logger_t)(char *log_field, unsigned long long *value); +typedef int (*dss_set_main)(void); typedef struct st_dss_device_op_t { bool inited; void *handle; @@ -105,7 +105,6 @@ typedef struct st_dss_device_op_t { dss_stat_device dss_stat; dss_lstat_device dss_lstat; dss_fstat_device dss_fstat; - dss_set_status dss_set_server_status; dss_svr_path dss_set_svr_path; dss_log_callback dss_register_log_callback; dss_version dss_get_version; @@ -113,6 +112,7 @@ typedef struct st_dss_device_op_t { dss_aio_prep_pread_device dss_aio_pread; dss_init_logger_t dss_init_logger; dss_refresh_logger_t dss_refresh_logger; + dss_set_main dss_set_main_inst; } dss_device_op_t; void dss_register_log_callback(dss_log_output cb_log_output); diff --git a/src/include/storage/dss/dss_api_def.h b/src/include/storage/dss/dss_api_def.h index e326a8d2a..b615db70e 100644 --- a/src/include/storage/dss/dss_api_def.h +++ b/src/include/storage/dss/dss_api_def.h @@ -84,7 +84,7 @@ typedef void (*dss_log_output)(dss_log_id_t log_type, dss_log_level_t log_level, #define DSS_LOCAL_MINOR_VER_WEIGHT 1000 #define DSS_LOCAL_MAJOR_VERSION 0 #define DSS_LOCAL_MINOR_VERSION 0 -#define DSS_LOCAL_VERSION 2 +#define DSS_LOCAL_VERSION 3 #define DSS_SUCCESS 0 #define DSS_ERROR (-1) diff --git a/src/include/storage/dss/fio_dss.h b/src/include/storage/dss/fio_dss.h index 21f7458e3..ba46ae09b 100644 --- a/src/include/storage/dss/fio_dss.h +++ b/src/include/storage/dss/fio_dss.h @@ -76,7 +76,7 @@ int dss_stat_file(const char *path, struct stat *buf); int dss_lstat_file(const char *path, struct stat *buf); int dss_fstat_file(int handle, struct stat *buf); int dss_chmod_file(const char* path, mode_t mode); -int dss_set_server_status_wrapper(bool is_master); +int dss_set_server_status_wrapper(); int dss_remove_dev(const char *name); int dss_aio_prep_pwrite(void *iocb, int fd, void *buf, size_t count, long long offset);