解决按需回放部分问题:

1.回放drop类型操作时的空指针异常;
2.按需回放故障内又故障时,第二次故障禁用按需回放;
3.按需回放阶段被恢复节点不允许加入集群,由打印warning并在后台等待修改为退出,避免normal reform时集群卡住
This commit is contained in:
chendong76
2023-07-08 16:33:55 +08:00
committed by zhang_xubo
parent a6573a6bc3
commit c077603b7a
7 changed files with 58 additions and 18 deletions

View File

@ -242,7 +242,11 @@ void WaitAllRedoWorkerQueueEmpty();
void WaitAllReplayWorkerIdle();
void DispatchClosefdMarkToAllRedoWorker();
void DispatchCleanInvalidPageMarkToAllRedoWorker(RepairFileKey key);
void ClearRecoveryThreadHashTbl(const RelFileNode &node, ForkNumber forknum, BlockNumber minblkno,
bool segment_shrink);
void BatchClearRecoveryThreadHashTbl(Oid spcNode, Oid dbNode);
void RecordBadBlockAndPushToRemote(XLogBlockDataParse *datadecode, PageErrorType error_type,
XLogRecPtr old_lsn, XLogPhyBlock pblk);
const char *RedoWokerRole2Str(RedoRole role);
} // namespace ondemand_extreme_rto

View File

@ -143,7 +143,8 @@
#define SS_PRIMARY_STANDBY_CLUSTER_NORMAL_STANDBY \
(SS_NORMAL_STANDBY && (g_instance.attr.attr_storage.xlog_file_path != 0))
#define SS_CLUSTER_NOT_NORAML (ENABLE_DMS && (g_instance.dms_cxt.SSReformerControl.clusterStatus != CLUSTER_NORMAL))
#define SS_CLUSTER_ONDEMAND_NOT_NORAML \
(ENABLE_DMS && (g_instance.dms_cxt.SSReformerControl.clusterStatus != CLUSTER_NORMAL))
#define SS_CLUSTER_ONDEMAND_BUILD \
(ENABLE_DMS && (g_instance.dms_cxt.SSReformerControl.clusterStatus == CLUSTER_IN_ONDEMAND_BUILD))
#define SS_CLUSTER_ONDEMAND_RECOVERY \