diff --git a/src/gausskernel/po/zh_CN.po b/src/gausskernel/po/zh_CN.po index 2ea29c836c6eaf796bfb54293351c9b4c5d932eb..64d3f450eddde83b0e89cf08f160ba44dd354b99 100644 --- a/src/gausskernel/po/zh_CN.po +++ b/src/gausskernel/po/zh_CN.po @@ -69183,7 +69183,7 @@ msgstr "checkpointer启动, CheckPointTimeout为%d" #: process/postmaster/checkpointer.cpp:419 #, c-format -msgid "database first startup and recovery finish,so do checkpointer" +msgid "database first startup and recovery finish, so do checkpointer" msgstr "数据库第一次启动和恢复完成, 所以运行checkpointer" #: process/postmaster/checkpointer.cpp:508 diff --git a/src/gausskernel/process/postmaster/checkpointer.cpp b/src/gausskernel/process/postmaster/checkpointer.cpp index 4d8b765ff4ee6530688f897cdfddf9e7ae9cf44f..557d767c5257b7c3fe4e8f896aeeb97274229d77 100755 --- a/src/gausskernel/process/postmaster/checkpointer.cpp +++ b/src/gausskernel/process/postmaster/checkpointer.cpp @@ -416,7 +416,7 @@ void CheckpointerMain(void) t_thrd.checkpoint_cxt.checkpoint_requested = true; flags = CHECKPOINT_IMMEDIATE; bgwriter_first_startup = false; - ereport(LOG, (errmsg("database first startup and recovery finish,so do checkpointer"))); + ereport(LOG, (errmsg("database first startup and recovery finish, so do checkpointer"))); } if (t_thrd.checkpoint_cxt.checkpoint_requested) { diff --git a/src/gausskernel/process/postmaster/postmaster.cpp b/src/gausskernel/process/postmaster/postmaster.cpp index 6a733dc5edfbdbcdb31011c130b0fdd09757d1f5..a4e9630e719c88756eb48ccedb4eb0f5d596ae2c 100644 --- a/src/gausskernel/process/postmaster/postmaster.cpp +++ b/src/gausskernel/process/postmaster/postmaster.cpp @@ -341,6 +341,7 @@ volatile uint64 sync_system_identifier = 0; bool FencedUDFMasterMode = false; bool PythonFencedMasterModel = false; static pid_t fencedMasterPID = 0; +static ClusterRunMode ss_disaster_mode = RUN_MODE_PRIMARY; extern char* optarg; extern int optind, opterr; @@ -1839,7 +1840,6 @@ int PostmasterMain(int argc, char* argv[]) char* userDoption = NULL; int use_pooler_port = -1; int i; - ClusterRunMode ss_dorado_mode = RUN_MODE_PRIMARY; OptParseContext optCtxt; errno_t rc = 0; Port port; @@ -2126,14 +2126,14 @@ int PostmasterMain(int argc, char* argv[]) case 'z': if (0 == strncmp(optCtxt.optarg, "cluster_primary", strlen("cluster_primary")) && '\0' == optCtxt.optarg[strlen("cluster_primary")]) { - ss_dorado_mode = RUN_MODE_PRIMARY; + ss_disaster_mode = RUN_MODE_PRIMARY; } else if (0 == strncmp(optCtxt.optarg, "cluster_standby", strlen("cluster_standby")) && '\0' == optCtxt.optarg[strlen("cluster_standby")]) { - ss_dorado_mode = RUN_MODE_STANDBY; + ss_disaster_mode = RUN_MODE_STANDBY; } else { ereport(FATAL, (errmsg("the options of -z is not recognized"))); } - ereport(LOG, (errmsg("Set dorado cluster run mode %d", ss_dorado_mode))); + ereport(LOG, (errmsg("[SS] Set disaster cluster run mode %d in enable dms", ss_disaster_mode))); break; case 'c': case '-': { @@ -3074,7 +3074,7 @@ int PostmasterMain(int argc, char* argv[]) SSReadReformerCtrl(); if (SS_DISASTER_CLUSTER) { /* fresh ss dorado cluster run mode */ - g_instance.dms_cxt.SSReformerControl.clusterRunMode = ss_dorado_mode; + g_instance.dms_cxt.SSReformerControl.clusterRunMode = ss_disaster_mode; SSDisasterRefreshMode(); } int src_id = g_instance.dms_cxt.SSReformerControl.primaryInstId; @@ -3457,11 +3457,13 @@ static void CheckExtremeRtoGUCConflicts(void) errmsg("ondemand extreme rto only support in shared storage mode."), errhint("Either turn on ss_enable_dms, or turn off ss_enable_ondemand_recovery."))); } - - if (SS_DISASTER_CLUSTER) { - ereport(ERROR, + + /* In shared storage double cluster, only primary cluster support ondemand extreme. */ + if (g_instance.attr.attr_storage.recovery_parse_workers > 1 && ss_disaster_mode == RUN_MODE_STANDBY) { + ereport(WARNING, (errcode(ERRCODE_SYSTEM_ERROR), - errmsg("ondemand extreme rto not support in shared storage double cluster mode."), + errmsg("ondemand extreme not support in standby cluster for shared storage double cluster." + "ondemand extreme will not take effect in standby cluster if ondemand extreme is on."), errhint("Either turn ss_disaster_mode to single, or turn off ss_enable_ondemand_recovery."))); } diff --git a/src/gausskernel/storage/access/transam/xlog.cpp b/src/gausskernel/storage/access/transam/xlog.cpp index 90450750e1a142d33aacd27242416cc7448144b2..ec3dd7a94f2f9d9f216bfef3b77677b47ba945e5 100755 --- a/src/gausskernel/storage/access/transam/xlog.cpp +++ b/src/gausskernel/storage/access/transam/xlog.cpp @@ -4600,6 +4600,8 @@ static int XLogFileRead(XLogSegNo segno, int emode, TimeLineID tli, int source, t_thrd.xlog_cxt.restoredFromArchive = RestoreArchivedFile(path, xlogfname, "RECOVERYXLOG", XLogSegSize); if (!t_thrd.xlog_cxt.restoredFromArchive) { + ereport(LOG, (errcode_for_file_access(), errmsg("XLogFileRead: file \"%s\" (log segment %s): %s. ", + path, XLogFileNameP(t_thrd.xlog_cxt.ThisTimeLineID, segno), TRANSLATE_ERRNO))); return -1; } break; @@ -4630,6 +4632,8 @@ static int XLogFileRead(XLogSegNo segno, int emode, TimeLineID tli, int source, } fd = BasicOpenFile(path, O_RDONLY | PG_BINARY, 0); + ereport(LOG, (errcode_for_file_access(), errmsg("XLogFileRead: (log segment %s): %s, fd: %d, source: %u", + XLogFileNameP(t_thrd.xlog_cxt.ThisTimeLineID, segno), TRANSLATE_ERRNO, fd, source))); if (fd >= 0) { /* Success! */ @@ -4650,9 +4654,10 @@ static int XLogFileRead(XLogSegNo segno, int emode, TimeLineID tli, int source, return fd; } - + if (!FILE_POSSIBLY_DELETED(errno) || !notfoundOk) { /* unexpected failure? */ - ereport(PANIC, (errcode_for_file_access(), errmsg("could not open file \"%s\" (log segment %s): %s", path, + ereport(PANIC, (errcode_for_file_access(), errmsg("XLogFileRead: could not open file \"%s\" ", + "(log segment %s): %s", path, XLogFileNameP(t_thrd.xlog_cxt.ThisTimeLineID, segno), TRANSLATE_ERRNO))); } return -1; @@ -4691,6 +4696,8 @@ int XLogFileReadAnyTLI(XLogSegNo segno, int emode, uint32 sources) ereport(DEBUG1, (errmsg("got WAL segment from archive"))); return fd; } + ereport(LOG, (errcode_for_file_access(), errmsg("XLogFileReadAnyTLI-XLOG_FROM_ARCHIVE: (log segment %s): %s, fd: %d, source: %u", + XLogFileNameP(tli, segno), TRANSLATE_ERRNO, fd, sources))); } if (sources & XLOG_FROM_PG_XLOG) { @@ -4698,6 +4705,8 @@ int XLogFileReadAnyTLI(XLogSegNo segno, int emode, uint32 sources) if (fd != -1) { return fd; } + ereport(LOG, (errcode_for_file_access(), errmsg("XLogFileReadAnyTLI-XLOG_FROM_PG_XLOG: (log segment %s): %s, fd: %d, source: %u", + XLogFileNameP(tli, segno), TRANSLATE_ERRNO, fd, sources))); } } @@ -4707,10 +4716,14 @@ int XLogFileReadAnyTLI(XLogSegNo segno, int emode, uint32 sources) (uint32)((segno) % XLogSegmentsPerXLogId)); securec_check_ss(errorno, "", ""); - errno = ENOENT; + ereport(LOG, (errcode_for_file_access(), errmsg("XLogFileReadAnyTLI: (log segment %s): %s, fd: %d, sources: %d", + XLogFileNameP(t_thrd.xlog_cxt.ThisTimeLineID, segno), TRANSLATE_ERRNO, fd, sources))); + + //errno = ENOENT; if (!SS_ONDEMAND_REALTIME_BUILD_NORMAL) { - ereport(emode, (errcode_for_file_access(), errmsg("could not open file \"%s\" (log segment %s): %s", path, - XLogFileNameP(t_thrd.xlog_cxt.ThisTimeLineID, segno), TRANSLATE_ERRNO))); + ereport(emode, (errcode_for_file_access(), errmsg("XLogFileReadAnyTLI: could not open file \"%s\" " + "(log segment: %s, fd: %d, sources: %u): %s", path, + XLogFileNameP(t_thrd.xlog_cxt.ThisTimeLineID, segno), fd, sources, TRANSLATE_ERRNO))); } return -1; @@ -9719,6 +9732,7 @@ void StartupXLOG(void) !XLByteEQ(t_thrd.shemem_ptr_cxt.ControlFile->backupEndPoint, InvalidXLogRecPtr) || t_thrd.shemem_ptr_cxt.ControlFile->state == DB_SHUTDOWNED)) { t_thrd.xlog_cxt.InArchiveRecovery = true; + ereport(LOG, (errmsg_internal("StartupXLOG: archive recovery set true"))); if (t_thrd.xlog_cxt.StandbyModeRequested) { t_thrd.xlog_cxt.StandbyMode = true; } @@ -11061,7 +11075,7 @@ void StartupXLOG(void) SSRecheckBufferPool(); ereport(LOG, (errmodule(MOD_DMS), errmsg("[SS reform][SS failover][SS switchover] finished full checkpoint" - "and update control file"))); + " and update control file"))); } } @@ -20029,6 +20043,8 @@ static int SSDoradoReadXLog(XLogReaderState *xlogreader, XLogRecPtr targetPagePt uint32 sources; uint32 actualBytes; + ereport(LOG, (errmsg("SSDoradoReadXLog start, sources: %d", sources))); + #ifdef USE_ASSERT_CHECKING XLogSegNo targetSegNo; @@ -20126,6 +20142,8 @@ retry: havedata = false; } } + + ereport(LOG, (errmsg("havedata: %d, sources: %d", havedata, sources))); if (havedata) { t_thrd.xlog_cxt.readSource = XLOG_FROM_STREAM; t_thrd.xlog_cxt.XLogReceiptSource = XLOG_FROM_STREAM; @@ -20284,6 +20302,7 @@ retry: } needread: + ereport(LOG, (errmsg("open file start, sources: %d", sources))); if (t_thrd.xlog_cxt.readFile < 0) { t_thrd.xlog_cxt.readFile = XLogFileReadAnyTLI(t_thrd.xlog_cxt.readSegNo, emode, sources); if (t_thrd.xlog_cxt.readFile < 0) {