File tree Expand file tree Collapse file tree 2 files changed +11
-2
lines changed Expand file tree Collapse file tree 2 files changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -1394,6 +1394,11 @@ GetSnapshotData(Snapshot snapshot)
1394
1394
* We don't worry about updating other counters, we want to keep this as
1395
1395
* simple as possible and leave GetSnapshotData() as the primary code for
1396
1396
* that bookkeeping.
1397
+ *
1398
+ * Note that if any transaction has overflowed its cached subtransactions
1399
+ * then there is no real need include any subtransactions. That isn't a
1400
+ * common enough case to worry about optimising the size of the WAL record,
1401
+ * and we may wish to see that data for diagnostic purposes anyway.
1397
1402
*/
1398
1403
RunningTransactions
1399
1404
GetRunningTransactionData (void )
Original file line number Diff line number Diff line change @@ -513,6 +513,10 @@ CheckRecoveryConflictDeadlock(void)
513
513
* RelationLockList, so we can keep track of the various entries made by
514
514
* the Startup process's virtual xid in the shared lock table.
515
515
*
516
+ * We record the lock against the top-level xid, rather than individual
517
+ * subtransaction xids. This means AccessExclusiveLocks held by aborted
518
+ * subtransactions are not released as early as possible on standbys.
519
+ *
516
520
* List elements use type xl_rel_lock, since the WAL record type exactly
517
521
* matches the information that we need to keep track of.
518
522
*
@@ -646,8 +650,8 @@ StandbyReleaseAllLocks(void)
646
650
647
651
/*
648
652
* StandbyReleaseOldLocks
649
- * Release standby locks held by XIDs that aren't running, as long
650
- * as they're not prepared transactions.
653
+ * Release standby locks held by top-level XIDs that aren't running,
654
+ * as long as they're not prepared transactions.
651
655
*/
652
656
void
653
657
StandbyReleaseOldLocks (int nxids , TransactionId * xids )
You can’t perform that action at this time.
0 commit comments