From 884982cf5b37bd787a98019c3f9867aa69363fc0 Mon Sep 17 00:00:00 2001 From: chenzhikai <895543892@qq.com> Date: Sat, 3 Aug 2024 16:03:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=8C=E9=9B=86=E7=BE=A4?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gausskernel/storage/replication/libpqwalreceiver.cpp | 3 ++- src/gausskernel/storage/smgr/segment/segbuffer.cpp | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) 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 448f6acb6..02c61d172 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);