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]