diff --git a/src/bin/pg_ctl/pg_ctl.cpp b/src/bin/pg_ctl/pg_ctl.cpp index d9e56ec312e08c4e37c3f1f266821829dec348f5..2665fc7df7ad4ccbfc27589dbfa6d55d0ad93ef4 100755 --- a/src/bin/pg_ctl/pg_ctl.cpp +++ b/src/bin/pg_ctl/pg_ctl.cpp @@ -2768,7 +2768,7 @@ static void do_switchover(uint32 term) } pg_log(PG_PRINT, _("\n")); if ((origin_run_mode == STANDBY_MODE && run_mode != PRIMARY_MODE && run_mode != MAIN_STANDBY_MODE) || - (origin_run_mode == CASCADE_STANDBY_MODE && run_mode != STANDBY_MODE)) { + (origin_run_mode == CASCADE_STANDBY_MODE && run_mode != STANDBY_MODE && run_mode != MAIN_STANDBY_MODE)) { pg_log(PG_WARNING, _("\n switchover timeout after %d seconds. please manually check the cluster status or backtrack log.\n"), wait_seconds); if ((sofile = fopen(switchover_timeout_file, "w")) == NULL) { diff --git a/src/gausskernel/process/postmaster/postmaster.cpp b/src/gausskernel/process/postmaster/postmaster.cpp index 6f7195da12969dcf15af3ec19c4ee6c737dfbb54..859e37a8c8ab5bc482b6d1a068d8427f7cfb0cb9 100644 --- a/src/gausskernel/process/postmaster/postmaster.cpp +++ b/src/gausskernel/process/postmaster/postmaster.cpp @@ -6597,6 +6597,9 @@ static void PrepareDemoteResponse(void) /* A standby instance will be demote to a cascade standby */ SpinLockAcquire(&hashmdata->mutex); hashmdata->current_mode = STANDBY_MODE; + if (hashmdata->is_hadr_main_standby) { + hashmdata->is_hadr_main_standby = false; + } hashmdata->is_cascade_standby = true; SpinLockRelease(&hashmdata->mutex);