|
|
@ -540,6 +540,10 @@ StandbyTimeoutHandler(void) |
|
|
|
* RelationLockList, so we can keep track of the various entries made by |
|
|
|
* RelationLockList, so we can keep track of the various entries made by |
|
|
|
* the Startup process's virtual xid in the shared lock table. |
|
|
|
* 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 |
|
|
|
* List elements use type xl_rel_lock, since the WAL record type exactly |
|
|
|
* matches the information that we need to keep track of. |
|
|
|
* matches the information that we need to keep track of. |
|
|
|
* |
|
|
|
* |
|
|
@ -673,8 +677,8 @@ StandbyReleaseAllLocks(void) |
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* StandbyReleaseOldLocks |
|
|
|
* StandbyReleaseOldLocks |
|
|
|
* Release standby locks held by XIDs that aren't running, as long |
|
|
|
* Release standby locks held by top-level XIDs that aren't running, |
|
|
|
* as they're not prepared transactions. |
|
|
|
* as long as they're not prepared transactions. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
void |
|
|
|
void |
|
|
|
StandbyReleaseOldLocks(int nxids, TransactionId *xids) |
|
|
|
StandbyReleaseOldLocks(int nxids, TransactionId *xids) |
|
|
|