]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Use LW_SHARED in walsummarizer.c for WALSummarizerLock lock where possible.
authorMasahiko Sawada <msawada@postgresql.org>
Fri, 29 Aug 2025 00:06:42 +0000 (17:06 -0700)
committerMasahiko Sawada <msawada@postgresql.org>
Fri, 29 Aug 2025 00:06:42 +0000 (17:06 -0700)
Previously, we used LW_EXCLUSIVE in several places despite only reading
WalSummarizerCtl fields. This patch reduces the lock level to LW_SHARED
where we are only reading the shared fields.

Backpatch to 17, where wal summarization was introduced.

Reviewed-by: Nathan Bossart <nathandbossart@gmail.com>
Discussion: https://postgr.es/m/CAD21AoDdKhf_9oriEYxY-JCdF+Oe_muhca3pcdkMEdBMzyHyKw@mail.gmail.com
Backpatch-through: 17

src/backend/postmaster/walsummarizer.c

index 777c9a8d5553b6fdb01738b37c503a99fda7687a..e1f142f20c7a0af20804326711011a040f23acf1 100644 (file)
@@ -644,7 +644,7 @@ WakeupWalSummarizer(void)
        if (WalSummarizerCtl == NULL)
                return;
 
-       LWLockAcquire(WALSummarizerLock, LW_EXCLUSIVE);
+       LWLockAcquire(WALSummarizerLock, LW_SHARED);
        pgprocno = WalSummarizerCtl->summarizer_pgprocno;
        LWLockRelease(WALSummarizerLock);
 
@@ -685,7 +685,7 @@ WaitForWalSummarization(XLogRecPtr lsn)
                /*
                 * If the LSN summarized on disk has reached the target value, stop.
                 */
-               LWLockAcquire(WALSummarizerLock, LW_EXCLUSIVE);
+               LWLockAcquire(WALSummarizerLock, LW_SHARED);
                summarized_lsn = WalSummarizerCtl->summarized_lsn;
                pending_lsn = WalSummarizerCtl->pending_lsn;
                LWLockRelease(WALSummarizerLock);