From 7dcd0e95299263187eb1f03812f8321b2612ee5c Mon Sep 17 00:00:00 2001 From: Shveta Malik Date: Tue, 26 Mar 2024 14:42:25 +0530 Subject: [PATCH v1] inactive_since for synced slots. inactive_since is updated for synced slots: 1) at the time of creation of slot. 2) during server restart. 3) during promotion. --- src/backend/replication/logical/slotsync.c | 1 + src/backend/replication/slot.c | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/backend/replication/logical/slotsync.c b/src/backend/replication/logical/slotsync.c index bbf9a2c485..6114895dca 100644 --- a/src/backend/replication/logical/slotsync.c +++ b/src/backend/replication/logical/slotsync.c @@ -628,6 +628,7 @@ synchronize_one_slot(RemoteSlot *remote_slot, Oid remote_dbid) SpinLockAcquire(&slot->mutex); slot->effective_catalog_xmin = xmin_horizon; slot->data.catalog_xmin = xmin_horizon; + slot->inactive_since = GetCurrentTimestamp(); SpinLockRelease(&slot->mutex); ReplicationSlotsComputeRequiredXmin(true); LWLockRelease(ProcArrayLock); diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c index d0a2f440ef..f2a57a14ec 100644 --- a/src/backend/replication/slot.c +++ b/src/backend/replication/slot.c @@ -628,7 +628,10 @@ retry: * now. */ SpinLockAcquire(&s->mutex); - s->inactive_since = 0; + + if (!(RecoveryInProgress() && s->data.synced)) + s->inactive_since = 0; + SpinLockRelease(&s->mutex); if (am_walsender) @@ -704,14 +707,20 @@ ReplicationSlotRelease(void) */ SpinLockAcquire(&slot->mutex); slot->active_pid = 0; - slot->inactive_since = now; + + if (!(RecoveryInProgress() && slot->data.synced)) + slot->inactive_since = now; + SpinLockRelease(&slot->mutex); ConditionVariableBroadcast(&slot->active_cv); } else { SpinLockAcquire(&slot->mutex); - slot->inactive_since = now; + + if (!(RecoveryInProgress() && slot->data.synced)) + slot->inactive_since = now; + SpinLockRelease(&slot->mutex); } -- 2.34.1