comments.patch.txt

text/plain

Filename: comments.patch.txt
Type: text/plain
Part: 0
Message: Re: A recent message added to pg_upgade
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 91568024aed..304b60933c9 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -8131,25 +8131,22 @@ KeepLogSeg(XLogRecPtr recptr, XLogSegNo *logSegNo)
 	XLByteToSeg(recptr, currSegNo, wal_segment_size);
 	segno = currSegNo;
 
-	/*
-	 * Calculate how many segments are kept by slots first, adjusting for
-	 * max_slot_wal_keep_size.
-	 */
+	/* Calculate how many segments are kept by slots. */
 	keep = XLogGetReplicationSlotMinimumLSN();
 	if (keep != InvalidXLogRecPtr && keep < recptr)
 	{
 		XLByteToSeg(keep, segno, wal_segment_size);
 
 		/*
-		 * Avoid  WAL removal by the checkpointer process during Binary
-		 * upgrade.  If WALs required by logical replication slots are removed,
-		 * the slots are unusable.
+		 * Account for max_slot_wal_keep_size to avoid keeping more than
+		 * configured.  However, don't do that during a binary upgrade: if
+		 * slots were to be invalidated because of this, it would not be
+		 * possible to preserve logical ones during the upgrade.
 		 */
 		if (max_slot_wal_keep_size_mb >= 0 && !IsBinaryUpgrade)
 		{
 			uint64		slot_keep_segs;
 
-			/* Cap by max_slot_wal_keep_size ... */
 			slot_keep_segs =
 				ConvertToXSegs(max_slot_wal_keep_size_mb, wal_segment_size);
 
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index 82c7d263f94..0e1e85d52cf 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -2036,7 +2036,7 @@ restart:
 		if (!s->in_use)
 			continue;
 
-		/* Prevent logical slot invalidation during binary upgrade. */
+		/* Prevent invalidation of logical slots during binary upgrade. */
 		if (SlotIsLogical(s) && IsBinaryUpgrade)
 			continue;