Clarify docs on hot standby lock release

Andres Freund and Simon Riggs
This commit is contained in:
Simon Riggs 2012-11-13 15:58:35 -03:00
parent bb745dc462
commit 759340c8f5
2 changed files with 11 additions and 2 deletions

View File

@ -1394,6 +1394,11 @@ GetSnapshotData(Snapshot snapshot)
* We don't worry about updating other counters, we want to keep this as
* simple as possible and leave GetSnapshotData() as the primary code for
* that bookkeeping.
*
* Note that if any transaction has overflowed its cached subtransactions
* then there is no real need include any subtransactions. That isn't a
* common enough case to worry about optimising the size of the WAL record,
* and we may wish to see that data for diagnostic purposes anyway.
*/
RunningTransactions
GetRunningTransactionData(void)

View File

@ -513,6 +513,10 @@ CheckRecoveryConflictDeadlock(void)
* RelationLockList, so we can keep track of the various entries made by
* the Startup process's virtual xid in the shared lock table.
*
* We record the lock against the top-level xid, rather than individual
* subtransaction xids. This means AccessExclusiveLocks held by aborted
* subtransactions are not released as early as possible on standbys.
*
* List elements use type xl_rel_lock, since the WAL record type exactly
* matches the information that we need to keep track of.
*
@ -646,8 +650,8 @@ StandbyReleaseAllLocks(void)
/*
* StandbyReleaseOldLocks
* Release standby locks held by XIDs that aren't running, as long
* as they're not prepared transactions.
* Release standby locks held by top-level XIDs that aren't running,
* as long as they're not prepared transactions.
*/
void
StandbyReleaseOldLocks(int nxids, TransactionId *xids)