Cleanup VirtualXact at end of Hot Standby

Resolves bug 7572 reported by Daniele Varrazzo
This commit is contained in:
Simon Riggs 2012-11-29 22:17:15 +00:00
parent fdac4e2ba2
commit edfc84b878
3 changed files with 5 additions and 2 deletions

View File

@ -103,6 +103,9 @@ ShutdownRecoveryTransactionEnvironment(void)
/* Release all locks the tracked transactions were holding */ /* Release all locks the tracked transactions were holding */
StandbyReleaseAllLocks(); StandbyReleaseAllLocks();
/* Cleanup our VirtualTransaction */
VirtualXactLockTableCleanup();
} }

View File

@ -209,7 +209,6 @@ static bool FastPathUnGrantRelationLock(Oid relid, LOCKMODE lockmode);
static bool FastPathTransferRelationLocks(LockMethod lockMethodTable, static bool FastPathTransferRelationLocks(LockMethod lockMethodTable,
const LOCKTAG *locktag, uint32 hashcode); const LOCKTAG *locktag, uint32 hashcode);
static PROCLOCK *FastPathGetRelationLockEntry(LOCALLOCK *locallock); static PROCLOCK *FastPathGetRelationLockEntry(LOCALLOCK *locallock);
static void VirtualXactLockTableCleanup(void);
/* /*
* To make the fast-path lock mechanism work, we must have some way of * To make the fast-path lock mechanism work, we must have some way of
@ -3734,7 +3733,7 @@ VirtualXactLockTableInsert(VirtualTransactionId vxid)
* Check whether a VXID lock has been materialized; if so, release it, * Check whether a VXID lock has been materialized; if so, release it,
* unblocking waiters. * unblocking waiters.
*/ */
static void void
VirtualXactLockTableCleanup() VirtualXactLockTableCleanup()
{ {
bool fastpath; bool fastpath;

View File

@ -544,6 +544,7 @@ extern void DumpAllLocks(void);
/* Lock a VXID (used to wait for a transaction to finish) */ /* Lock a VXID (used to wait for a transaction to finish) */
extern void VirtualXactLockTableInsert(VirtualTransactionId vxid); extern void VirtualXactLockTableInsert(VirtualTransactionId vxid);
extern void VirtualXactLockTableCleanup(void);
extern bool VirtualXactLock(VirtualTransactionId vxid, bool wait); extern bool VirtualXactLock(VirtualTransactionId vxid, bool wait);
#endif /* LOCK_H */ #endif /* LOCK_H */