mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	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
This commit is contained in:
		@@ -641,7 +641,7 @@ SetWalSummarizerLatch(void)
 | 
			
		||||
	if (WalSummarizerCtl == NULL)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	LWLockAcquire(WALSummarizerLock, LW_EXCLUSIVE);
 | 
			
		||||
	LWLockAcquire(WALSummarizerLock, LW_SHARED);
 | 
			
		||||
	pgprocno = WalSummarizerCtl->summarizer_pgprocno;
 | 
			
		||||
	LWLockRelease(WALSummarizerLock);
 | 
			
		||||
 | 
			
		||||
@@ -682,7 +682,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);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user