Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Restore lock level to set vacuum flags
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 11 Nov 2021 14:03:29 +0000 (11:03 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 11 Nov 2021 14:03:29 +0000 (11:03 -0300)
Commit 27838981be9d mistakenly reduced the lock level from exclusive to
shared that is acquired to set PGPROC->statusFlags; this was reverted
by dcfff74fb166, but failed to do so in one spot.  Fix it.

Backpatch to 14.

Noted by Andres Freund.

Discussion: https://postgr.es/m/20211111020724.ggsfhcq3krq5r4hb@alap3.anarazel.de

src/backend/replication/slot.c

index d2a145e122325fd8947bd8bfa62bda4daeb6998d..3f348321518ede86bdfbfd989231dc64c283f7b5 100644 (file)
@@ -511,7 +511,7 @@ ReplicationSlotRelease(void)
    MyReplicationSlot = NULL;
 
    /* might not have been set when we've been a plain slot */
-   LWLockAcquire(ProcArrayLock, LW_SHARED);
+   LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE);
    MyProc->statusFlags &= ~PROC_IN_LOGICAL_DECODING;
    ProcGlobal->statusFlags[MyProc->pgxactoff] = MyProc->statusFlags;
    LWLockRelease(ProcArrayLock);