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 1c6c0c7ce27bc23af246a8e793e51fadc5610de8..e4f5c6fb362c69081eaa88ddda0afb48dec90a15 100644 (file)
@@ -512,7 +512,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);