From 6f381e04a3201c6926190b234f128377ca3f84f4 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Mon, 22 Jul 2024 13:12:57 +0300 Subject: [PATCH v5 4/8] Move TRACE calls into WaitOnLock() LockAcquire is a long and complex function. Pushing more stuff to its subroutines makes it a little more manageable. --- src/backend/storage/lmgr/lock.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c index abac7134da..e82a041097 100644 --- a/src/backend/storage/lmgr/lock.c +++ b/src/backend/storage/lmgr/lock.c @@ -1051,23 +1051,8 @@ LockAcquireExtended(const LOCKTAG *locktag, * case, because while trying to go to sleep, we may discover that we * can acquire the lock immediately after all. */ - - TRACE_POSTGRESQL_LOCK_WAIT_START(locktag->locktag_field1, - locktag->locktag_field2, - locktag->locktag_field3, - locktag->locktag_field4, - locktag->locktag_type, - lockmode); - WaitOnLock(locallock, owner, dontWait); - TRACE_POSTGRESQL_LOCK_WAIT_DONE(locktag->locktag_field1, - locktag->locktag_field2, - locktag->locktag_field3, - locktag->locktag_field4, - locktag->locktag_type, - lockmode); - /* * NOTE: do not do any material change of state between here and * return. All required changes in locktable state must have been @@ -1811,6 +1796,13 @@ WaitOnLock(LOCALLOCK *locallock, ResourceOwner owner, bool dontWait) LOCKMETHODID lockmethodid = LOCALLOCK_LOCKMETHOD(*locallock); LockMethod lockMethodTable = LockMethods[lockmethodid]; + TRACE_POSTGRESQL_LOCK_WAIT_START(locallock->tag.lock.locktag_field1, + locallock->tag.lock.locktag_field2, + locallock->tag.lock.locktag_field3, + locallock->tag.lock.locktag_field4, + locallock->tag.lock.locktag_type, + locallock->tag.mode); + LOCK_PRINT("WaitOnLock: sleeping on lock", locallock->lock, locallock->tag.mode); @@ -1881,6 +1873,13 @@ WaitOnLock(LOCALLOCK *locallock, ResourceOwner owner, bool dontWait) LOCK_PRINT("WaitOnLock: wakeup on lock", locallock->lock, locallock->tag.mode); + + TRACE_POSTGRESQL_LOCK_WAIT_DONE(locallock->tag.lock.locktag_field1, + locallock->tag.lock.locktag_field2, + locallock->tag.lock.locktag_field3, + locallock->tag.lock.locktag_field4, + locallock->tag.lock.locktag_type, + locallock->tag.mode); } /* -- 2.34.1