Update outdated comment on WAL-logged locks with invalid XID
authorHeikki Linnakangas <[email protected]>
Mon, 21 Oct 2024 11:28:43 +0000 (14:28 +0300)
committerHeikki Linnakangas <[email protected]>
Mon, 21 Oct 2024 11:28:43 +0000 (14:28 +0300)
We haven't generated those for a long time.

Discussion: https://www.postgresql.org/message-id/b439edfc-c5e5-43a9-802d-4cb51ec20646@iki.fi

src/backend/storage/ipc/standby.c

index 872679ca44788cff113840cc0ab62f6bfb691b2c..25267f0f85d1a8b1d60906ea7576205960e05d9a 100644 (file)
@@ -1121,6 +1121,9 @@ StandbyReleaseAllLocks(void)
  * StandbyReleaseOldLocks
  *     Release standby locks held by top-level XIDs that aren't running,
  *     as long as they're not prepared transactions.
+ *
+ * This is needed to prune the locks of crashed transactions, which didn't
+ * write an ABORT/COMMIT record.
  */
 void
 StandbyReleaseOldLocks(TransactionId oldxid)
@@ -1266,13 +1269,6 @@ standby_redo(XLogReaderState *record)
  * transactions already committed, since those commits raced ahead when
  * making WAL entries.
  *
- * The loose timing also means that locks may be recorded that have a
- * zero xid, since xids are removed from procs before locks are removed.
- * So we must prune the lock list down to ensure we hold locks only for
- * currently running xids, performed by StandbyReleaseOldLocks().
- * Zero xids should no longer be possible, but we may be replaying WAL
- * from a time when they were possible.
- *
  * For logical decoding only the running xacts information is needed;
  * there's no need to look at the locking information, but it's logged anyway,
  * as there's no independent knob to just enable logical decoding. For