diff --git a/src/gausskernel/process/postmaster/postmaster.cpp b/src/gausskernel/process/postmaster/postmaster.cpp index 0a7d80096..31f38fcef 100644 --- a/src/gausskernel/process/postmaster/postmaster.cpp +++ b/src/gausskernel/process/postmaster/postmaster.cpp @@ -91,6 +91,7 @@ #include "commands/verify.h" #include "catalog/pg_control.h" #include "dbmind/hypopg_index.h" +#include "ddes/dms/ss_dms.h" #include "instruments/instr_unique_sql.h" #include "instruments/instr_user.h" #include "instruments/percentile.h" @@ -3981,8 +3982,9 @@ static int ServerLoop(void) result = BackendStartup(port, isConnectHaPort); } - if (SS_CLUSTER_ONDEMAND_RECOVERY && SS_IN_REFORM && - result != STATUS_OK && pmState == PM_WAIT_BACKENDS) { + if (SS_IN_ONDEMAND_RECOVERY && SS_IN_REFORM && + result != STATUS_OK && pmState == PM_WAIT_BACKENDS && + (dms_reform_failed() || dms_reform_last_failed())) { SSOndemandProcExitIfStayWaitBackends(); } if (result != STATUS_OK) { @@ -15123,10 +15125,10 @@ void SSOndemandProcExitIfStayWaitBackends() failTimes++; } if (pmState == PM_WAIT_BACKENDS) { - ereport(WARNING, (errmsg("Proc exit because pmState stay %s for %d times, " - "when reform failed and in ondemand recovery, " - "to avoid pmState being stuck in PM_WAIT_BACKENDS.", - GetPMState(pmState), WAIT_PMSTATE_UPDATE_TRIES))); - proc_exit(1); + ereport(WARNING, (errmodule(MOD_DMS), + errmsg("[On-demand] Proc exit because pmState stay PM_WAIT_BACKENDS for %d times, " + "when reform failed and in ondemand recovery, to avoid pmState being stuck in PM_WAIT_BACKENDS.", + WAIT_PMSTATE_UPDATE_TRIES))); + _exit(0); } }