aboutsummaryrefslogtreecommitdiff
path: root/src/backend/storage/ipc/standby.c
diff options
context:
space:
mode:
authorSimon Riggs <simon@2ndQuadrant.com>2012-11-13 15:56:28 -0300
committerSimon Riggs <simon@2ndQuadrant.com>2012-11-13 15:56:28 -0300
commitf66e7ab6db30b7893493c4dfd5d642bef93b350f (patch)
tree1f983796718805dd17b4c1b5dab327f9d487bf61 /src/backend/storage/ipc/standby.c
parent8805ff6580621d0daee350826de5211d6bb36ec3 (diff)
downloadpostgresql-f66e7ab6db30b7893493c4dfd5d642bef93b350f.tar.gz
postgresql-f66e7ab6db30b7893493c4dfd5d642bef93b350f.zip
Clarify docs on hot standby lock release
Andres Freund and Simon Riggs
Diffstat (limited to 'src/backend/storage/ipc/standby.c')
-rw-r--r--src/backend/storage/ipc/standby.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/backend/storage/ipc/standby.c b/src/backend/storage/ipc/standby.c
index 8863a5c9a7f..8205b4135e4 100644
--- a/src/backend/storage/ipc/standby.c
+++ b/src/backend/storage/ipc/standby.c
@@ -510,6 +510,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.
*
@@ -643,8 +647,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)