diff --git a/src/gausskernel/storage/replication/libpqwalreceiver.cpp b/src/gausskernel/storage/replication/libpqwalreceiver.cpp index 9fa54babb..32efa053e 100755 --- a/src/gausskernel/storage/replication/libpqwalreceiver.cpp +++ b/src/gausskernel/storage/replication/libpqwalreceiver.cpp @@ -1392,7 +1392,8 @@ bool libpqrcv_receive(int timeout, unsigned char *type, char **buffer, int *len) retcode = MAKE_SQLSTATE(sqlstate[0], sqlstate[1], sqlstate[2], sqlstate[3], sqlstate[4]); } if (retcode == ERRCODE_UNDEFINED_FILE) { - if (t_thrd.role != APPLY_WORKER) { + /* in SS dorado standby cluster, the walreceiver not need to receive wal */ + if (t_thrd.role != APPLY_WORKER && !SS_DORADO_STANDBY_CLUSTER) { ha_set_rebuild_connerror(WALSEGMENT_REBUILD, REPL_INFO_ERROR); } SpinLockAcquire(&walrcv->mutex); diff --git a/src/gausskernel/storage/smgr/segment/segbuffer.cpp b/src/gausskernel/storage/smgr/segment/segbuffer.cpp index 85bbe77e1..144f661b0 100644 --- a/src/gausskernel/storage/smgr/segment/segbuffer.cpp +++ b/src/gausskernel/storage/smgr/segment/segbuffer.cpp @@ -33,7 +33,7 @@ #include "utils/resowner.h" #include "pgstat.h" #include "ddes/dms/ss_dms_bufmgr.h" - +#include "replication/ss_disaster_cluster.h" /* * Segment buffer, used for segment meta data, e.g., segment head, space map head. We separate segment * meta data buffer and normal data buffer (in bufmgr.cpp) to avoid potential dead locks. @@ -323,7 +323,7 @@ void SegFlushCheckDiskLSN(SegSpace *spc, RelFileNode rNode, ForkNumber forknum, BufferDesc *buf_desc, char *buf) { #ifndef USE_ASSERT_CHECKING - if (!IsInitdb && !RecoveryInProgress() && !SS_IN_ONDEMAND_RECOVERY && ENABLE_DSS) { + if (!IsInitdb && !RecoveryInProgress() && !SS_IN_ONDEMAND_RECOVERY && ENABLE_DSS && !SS_DISASTER_STANDBY_CLUSTER) { dms_buf_ctrl_t *buf_ctrl = GetDmsBufCtrl(buf_desc->buf_id); XLogRecPtr lsn_on_mem = PageGetLSN(buf); /* latest page must satisfy condition: page lsn_on_disk bigger than transfered page which is latest page */ @@ -335,7 +335,7 @@ void SegFlushCheckDiskLSN(SegSpace *spc, RelFileNode rNode, ForkNumber forknum, } } #else - if (!RecoveryInProgress() && !SS_IN_ONDEMAND_RECOVERY && ENABLE_DSS && ENABLE_VERIFY_PAGE_VERSION) { + if (!RecoveryInProgress() && !SS_IN_ONDEMAND_RECOVERY && ENABLE_DSS && ENABLE_VERIFY_PAGE_VERSION && !SS_DISASTER_STANDBY_CLUSTER) { char *origin_buf = (char *)palloc(BLCKSZ + ALIGNOF_BUFFER); char *temp_buf = (char *)BUFFERALIGN(origin_buf); seg_physical_read(spc, rNode, forknum, blocknum, temp_buf);