From 9c136d811a3854fbaa45dc0a740a95ef11c35b31 Mon Sep 17 00:00:00 2001 From: z00848344 Date: Thu, 13 Mar 2025 10:30:41 +0800 Subject: [PATCH] On branch test_archive Your branch is up to date with 'origin/test_archive'. Changes to be committed: modified: src/gausskernel/process/postmaster/pgarch.cpp --- src/gausskernel/process/postmaster/pgarch.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gausskernel/process/postmaster/pgarch.cpp b/src/gausskernel/process/postmaster/pgarch.cpp index f2a51255f4..8753fd07db 100755 --- a/src/gausskernel/process/postmaster/pgarch.cpp +++ b/src/gausskernel/process/postmaster/pgarch.cpp @@ -1196,9 +1196,11 @@ static WalSnd* pgarch_chooseWalsnd(XLogRecPtr targetLsn) if (t_thrd.arch.sync_walsender_idx >= 0) { walsnd = &t_thrd.walsender_cxt.WalSndCtl->walsnds[t_thrd.arch.sync_walsender_idx]; SpinLockAcquire(&walsnd->mutex); + volatile int *slotIdx = &walsnd->slot_idx; + ReplicationSlot *slot = &t_thrd.slot_cxt.ReplicationSlotCtl->replication_slots[*slotIdx]; if (walsnd->pid != 0 && ((walsnd->sendRole & SNDROLE_PRIMARY_STANDBY) == walsnd->sendRole) && !XLogRecPtrIsInvalid(walsnd->flush) && XLByteLE(targetLsn, walsnd->flush) && - walsnd->is_cross_cluster == false) { + walsnd->is_cross_cluster == false && slot->archive_config != NULL) { SpinLockRelease(&walsnd->mutex); if (g_instance.roach_cxt.isXLogForceRecycled) { ereport(LOG, (errmsg("pgarch choose walsender index:%d and pid is %ld, when force advance slot", @@ -1215,8 +1217,11 @@ static WalSnd* pgarch_chooseWalsnd(XLogRecPtr targetLsn) SpinLockAcquire(&walsnd->mutex); + volatile int *slotIdx = &walsnd->slot_idx; + ReplicationSlot *slot = &t_thrd.slot_cxt.ReplicationSlotCtl->replication_slots[*slotIdx]; + if (walsnd->pid != 0 && ((walsnd->sendRole & SNDROLE_PRIMARY_STANDBY) == walsnd->sendRole) && - walsnd->is_cross_cluster == false) { + walsnd->is_cross_cluster == false && slot->archive_config != NULL) { if (XLByteLE(targetLsn, walsnd->flush)) { SpinLockRelease(&walsnd->mutex); ArchiveTaskStatus *archive_status = NULL; -- Gitee