【bugfix】 修改主备在按需回放第二阶段结束时,并发修改控制文件reform页,导致控制文件卡在in-ondemand-redo阶段的问题

This commit is contained in:
congzhou2603
2023-12-18 20:12:13 +08:00
parent 2ed9b3b5f2
commit 3fc105535a
2 changed files with 9 additions and 1 deletions

View File

@ -451,7 +451,14 @@ static int SetPrimaryIdOnStandby(int primary_id)
SS_PERFORMING_SWITCHOVER ? "switchover" : "reform", SS_MY_INST_ID, primary_id, ntries)));
return DMS_SUCCESS;
} else {
SSSavePrimaryInstId(primary_id);
if (dms_reform_failed()) {
ereport(ERROR,
(errmodule(MOD_DMS), errmsg("[SS %s] Failed to confirm new primary: %d,"
" control file indicates primary is %d; dms reform failed.",
SS_PERFORMING_SWITCHOVER ? "switchover" : "reform", (int)primary_id,
g_instance.dms_cxt.SSReformerControl.primaryInstId)));
return DMS_ERROR;
}
if (ntries >= WAIT_REFORM_CTRL_REFRESH_TRIES) {
ereport(ERROR,
(errmodule(MOD_DMS), errmsg("[SS %s] Failed to confirm new primary: %d,"

View File

@ -255,6 +255,7 @@ void SSDoradoGetXlogPathList()
void SSUpdateReformerCtrl()
{
Assert(SS_PRIMARY_MODE);
int fd = -1;
int len;
errno_t err = EOK;