Move lwlock-release probe back where it belongs
authorPeter Eisentraut <peter@eisentraut.org>
Sun, 21 Mar 2021 07:02:30 +0000 (08:02 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Sun, 21 Mar 2021 07:02:30 +0000 (08:02 +0100)
The documentation specifically states that lwlock-release fires before
any released waiters have been awakened.  It worked that way until
ab5194e6f617a9a9e7aadb3dd1cee948a42d0755, where is seems to have been
misplaced accidentally.  Move it back where it belongs.

Author: Craig Ringer <craig.ringer@enterprisedb.com>
Discussion: https://www.postgresql.org/message-id/CAGRY4nwxKUS_RvXFW-ugrZBYxPFFM5kjwKT5O+0+Stuga5b4+Q@mail.gmail.com

src/backend/storage/lmgr/lwlock.c

index adf19aba75938870c893e2bbdee1519672312623..975d547f34b1e47baaced44e4ee1246746c82c08 100644 (file)
@@ -1840,6 +1840,7 @@ LWLockRelease(LWLock *lock)
        /* nobody else can have that kind of lock */
        Assert(!(oldstate & LW_VAL_EXCLUSIVE));
 
+       TRACE_POSTGRESQL_LWLOCK_RELEASE(T_NAME(lock));
 
        /*
         * We're still waiting for backends to get scheduled, don't wake them up
@@ -1863,8 +1864,6 @@ LWLockRelease(LWLock *lock)
                LWLockWakeup(lock);
        }
 
-       TRACE_POSTGRESQL_LWLOCK_RELEASE(T_NAME(lock));
-
        /*
         * Now okay to allow cancel/die interrupts.
         */