postgres.git / summary / log / commit / refs

commit    514688656b8bca623bd2d1a28a549f8a56751612
Author:   Masahiko Sawada <msawada@postgresql.org>
Date:     Fri Aug 29 00:06:44 2025 +0000
First released in: 17.7, 18.0

    Use LW_SHARED in walsummarizer.c for WALSummarizerLock lock where possible.
    
    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 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/postmaster/walsummarizer.c b/src/backend/postmaster/walsummarizer.c index 0fec4f1f871..11857356ce4 100644 --- a/src/backend/postmaster/walsummarizer.c +++ b/src/backend/postmaster/walsummarizer.c @@ -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); [parent: 3aee6283709f]