From f7c9f5b5fac3d9bbbb247eaa681c69126140176c Mon Sep 17 00:00:00 2001 From: openGaussDev Date: Tue, 21 Mar 2023 19:35:12 +0800 Subject: [PATCH] Added the function of verifying the recovery_redo_workers parameter Match-id-afa9095e1443afcaf16aece152e86ae65d1b1607 --- src/gausskernel/process/postmaster/postmaster.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/gausskernel/process/postmaster/postmaster.cpp b/src/gausskernel/process/postmaster/postmaster.cpp index 0630cc3e0..d0842f5be 100644 --- a/src/gausskernel/process/postmaster/postmaster.cpp +++ b/src/gausskernel/process/postmaster/postmaster.cpp @@ -3335,6 +3335,21 @@ static void CheckExtremeRtoGUCConflicts(void) errhint("Either turn off extreme rto, or turn off hot_standby."))); } #endif + +#ifdef ENABLE_LITE_MODE + int recovery_parse_workers = g_instance.attr.attr_storage.recovery_parse_workers; + int recovery_redo_workers = g_instance.attr.attr_storage.recovery_redo_workers_per_paser_worker; + if (recovery_parse_workers * recovery_redo_workers + recovery_parse_workers + recovery_parse_workers + + TRXN_REDO_MANAGER_NUM + TRXN_REDO_WORKER_NUM + XLOG_READER_NUM >= + MAX_RECOVERY_THREAD_NUM) { + ereport( + ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("In lite mode, (recovery_parse_workers * (recovery_redo_workers + 2) + %d) cannot be greater than " + "or equal to %d.", + TRXN_REDO_MANAGER_NUM + TRXN_REDO_WORKER_NUM + XLOG_READER_NUM, MAX_RECOVERY_THREAD_NUM))); + } +#endif } static void CheckRecoveryParaConflict() {