diff --git a/src/gausskernel/ddes/adapter/ss_dms_callback.cpp b/src/gausskernel/ddes/adapter/ss_dms_callback.cpp index e214593e8..0308d8971 100644 --- a/src/gausskernel/ddes/adapter/ss_dms_callback.cpp +++ b/src/gausskernel/ddes/adapter/ss_dms_callback.cpp @@ -374,6 +374,9 @@ static int CBSwitchoverDemote(void *db_handle) return DMS_SUCCESS; } else { if (ntries >= WAIT_DEMOTE || dms_reform_failed()) { + SpinLockAcquire(&t_thrd.walsender_cxt.WalSndCtl->mutex); + t_thrd.walsender_cxt.WalSndCtl->demotion = NoDemote; + SpinLockRelease(&t_thrd.walsender_cxt.WalSndCtl->mutex); ereport(WARNING, (errmodule(MOD_DMS), errmsg("[SS switchover] Failure in %s primary demote, need reform recovery.", DemoteModeDesc(demote_mode))));