diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/storage/lmgr/lock.c | 9 | ||||
-rw-r--r-- | src/backend/storage/lmgr/proc.c | 2 | ||||
-rw-r--r-- | src/include/storage/lock.h | 1 |
3 files changed, 12 insertions, 0 deletions
diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c index 38a5d75bbe1..002303664aa 100644 --- a/src/backend/storage/lmgr/lock.c +++ b/src/backend/storage/lmgr/lock.c @@ -1897,6 +1897,15 @@ GetAwaitedLock(void) } /* + * ResetAwaitedLock -- Forget that we are waiting on a lock. + */ +void +ResetAwaitedLock(void) +{ + awaitedLock = NULL; +} + +/* * MarkLockClear -- mark an acquired lock as "clear" * * This means that we know we have absorbed all sinval messages that other diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index e4ca861a8e6..066319afe2b 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -814,6 +814,8 @@ LockErrorCleanup(void) GrantAwaitedLock(); } + ResetAwaitedLock(); + LWLockRelease(partitionLock); RESUME_INTERRUPTS(); diff --git a/src/include/storage/lock.h b/src/include/storage/lock.h index ad4e40badbe..6f2108a44e8 100644 --- a/src/include/storage/lock.h +++ b/src/include/storage/lock.h @@ -588,6 +588,7 @@ extern bool LockCheckConflicts(LockMethod lockMethodTable, extern void GrantLock(LOCK *lock, PROCLOCK *proclock, LOCKMODE lockmode); extern void GrantAwaitedLock(void); extern LOCALLOCK *GetAwaitedLock(void); +extern void ResetAwaitedLock(void); extern void RemoveFromWaitQueue(PGPROC *proc, uint32 hashcode); extern LockData *GetLockStatusData(void); |