diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index d3e623b845..31e12e4043 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -714,6 +714,7 @@ ReplicationSlotsComputeRequiredXmin(bool already_locked)
 		ReplicationSlot *s = &ReplicationSlotCtl->replication_slots[i];
 		TransactionId effective_xmin;
 		TransactionId effective_catalog_xmin;
+		XLogRecPtr	restart_lsn;
 
 		if (!s->in_use)
 			continue;
@@ -721,8 +722,13 @@ ReplicationSlotsComputeRequiredXmin(bool already_locked)
 		SpinLockAcquire(&s->mutex);
 		effective_xmin = s->effective_xmin;
 		effective_catalog_xmin = s->effective_catalog_xmin;
+		restart_lsn = s->data.restart_lsn;
 		SpinLockRelease(&s->mutex);
 
+		/* is slot still relevant? */
+		if (restart_lsn == InvalidXLogRecPtr)
+			continue;
+
 		/* check the data xmin */
 		if (TransactionIdIsValid(effective_xmin) &&
 			(!TransactionIdIsValid(agg_xmin) ||
