@ -1249,12 +1249,10 @@ static int CBRecoveryStandby(void *db_handle, int inst_id)
|
||||
Assert(inst_id == g_instance.attr.attr_storage.dms_attr.instance_id);
|
||||
ereport(LOG, (errmsg("[SS reform] Recovery as standby")));
|
||||
|
||||
g_instance.dms_cxt.SSRecoveryInfo.skip_redo_replay = true;
|
||||
if (!SSRecoveryNodes()) {
|
||||
ereport(WARNING, (errmodule(MOD_DMS), errmsg("Recovery failed in startup first")));
|
||||
return GS_ERROR;
|
||||
}
|
||||
g_instance.dms_cxt.SSRecoveryInfo.skip_redo_replay = false;
|
||||
|
||||
return GS_SUCCESS;
|
||||
}
|
||||
@ -1263,7 +1261,6 @@ static int CBRecoveryPrimary(void *db_handle, int inst_id)
|
||||
{
|
||||
Assert(g_instance.dms_cxt.SSReformerControl.primaryInstId == inst_id ||
|
||||
g_instance.dms_cxt.SSReformerControl.primaryInstId == -1);
|
||||
g_instance.dms_cxt.SSRecoveryInfo.skip_redo_replay = false;
|
||||
g_instance.dms_cxt.SSRecoveryInfo.in_flushcopy = false;
|
||||
ereport(LOG, (errmsg("[SS reform] Recovery as primary, will replay xlog from inst:%d",
|
||||
g_instance.dms_cxt.SSReformerControl.primaryInstId)));
|
||||
|
@ -99,7 +99,7 @@ bool SSRecoveryNodes()
|
||||
return result;
|
||||
}
|
||||
|
||||
bool SSRecoveryApplyDelay(const XLogReaderState *record)
|
||||
bool SSRecoveryApplyDelay()
|
||||
{
|
||||
if (!ENABLE_REFORM) {
|
||||
return false;
|
||||
|
@ -183,7 +183,6 @@ static void knl_g_dms_init(knl_g_dms_context *dms_cxt)
|
||||
dms_cxt->SSRecoveryInfo.recovery_pause_flag = true;
|
||||
dms_cxt->SSRecoveryInfo.failover_triggered = false;
|
||||
dms_cxt->SSRecoveryInfo.new_primary_reset_walbuf_flag = false;
|
||||
dms_cxt->SSRecoveryInfo.skip_redo_replay = false;
|
||||
dms_cxt->SSRecoveryInfo.ready_to_startup = false;
|
||||
dms_cxt->SSRecoveryInfo.startup_reform = true;
|
||||
dms_cxt->SSRecoveryInfo.restart_failover_flag = false;
|
||||
|
@ -9914,7 +9914,8 @@ void StartupXLOG(void)
|
||||
}
|
||||
}
|
||||
|
||||
if (SSSKIP_REDO_REPLAY && t_thrd.xlog_cxt.InRecovery == true) {
|
||||
if (SS_STANDBY_MODE && t_thrd.xlog_cxt.InRecovery == true) {
|
||||
SSRecoveryApplyDelay();
|
||||
/* do not need replay anything in SS standby mode */
|
||||
ereport(LOG, (errmsg("[SS] Skip redo replay in standby mode")));
|
||||
t_thrd.xlog_cxt.InRecovery = false;
|
||||
@ -10326,7 +10327,7 @@ void StartupXLOG(void)
|
||||
CountRedoTime(t_thrd.xlog_cxt.timeCost[TIME_COST_STEP_2]);
|
||||
#endif
|
||||
|
||||
if (ENABLE_DMS && !SS_PERFORMING_SWITCHOVER && SSRecoveryApplyDelay(xlogreader)) {
|
||||
if (ENABLE_DMS && !SS_PERFORMING_SWITCHOVER && SSRecoveryApplyDelay()) {
|
||||
if (xlogctl->recoveryPause) {
|
||||
recoveryPausesHere();
|
||||
}
|
||||
|
@ -30,7 +30,6 @@
|
||||
|
||||
#define RECOVERY_WAIT_TIME 10000
|
||||
#define SSFAILOVER_TRIGGER (ENABLE_DMS && g_instance.dms_cxt.SSRecoveryInfo.failover_triggered == true)
|
||||
#define SSSKIP_REDO_REPLAY (ENABLE_DMS && g_instance.dms_cxt.SSRecoveryInfo.skip_redo_replay == true)
|
||||
#define SS_BEFORE_RECOVERY (ENABLE_DMS && g_instance.dms_cxt.SSReformInfo.in_reform == true \
|
||||
&& g_instance.dms_cxt.SSRecoveryInfo.recovery_pause_flag == true)
|
||||
#define SS_IN_FAILOVER (ENABLE_DMS && g_instance.dms_cxt.SSRecoveryInfo.in_failover == true)
|
||||
@ -50,7 +49,6 @@ typedef struct ss_recovery_info {
|
||||
bool recovery_pause_flag;
|
||||
volatile bool failover_triggered;
|
||||
char recovery_xlogDir[MAXPGPATH];
|
||||
bool skip_redo_replay;
|
||||
LWLock* update_seg_lock;
|
||||
bool new_primary_reset_walbuf_flag;
|
||||
bool ready_to_startup; // when DB start (except failover), the flag will set true
|
||||
@ -68,7 +66,7 @@ extern int SSGetPrimaryInstId();
|
||||
extern void SSSavePrimaryInstId(int id);
|
||||
extern void SSReadControlFile(int id, bool updateDmsCtx = false);
|
||||
extern void SSWriteReformerControlPages(void);
|
||||
extern bool SSRecoveryApplyDelay(const XLogReaderState *record);
|
||||
extern bool SSRecoveryApplyDelay();
|
||||
extern void SShandle_promote_signal();
|
||||
extern void SSTriggerFailover();
|
||||
extern void ss_failover_dw_init();
|
||||
|
Reference in New Issue
Block a user