mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Warn if LOCKTAG_TUPLE is held at commit, under debug_assertions.
The current use always releases this locktag. A planned use will continue that intent. It will involve more areas of code, making unlock omissions easier. Warn under debug_assertions, like we do for various resource leaks. Back-patch to v12 (all supported versions), the plan for the commit of the new use. Reviewed by Heikki Linnakangas. Discussion: https://postgr.es/m/20240512232923.aa.nmisch@google.com
This commit is contained in:
		@@ -2251,6 +2251,16 @@ LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks)
 | 
			
		||||
				locallock->numLockOwners = 0;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
#ifdef USE_ASSERT_CHECKING
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * Tuple locks are currently held only for short durations within a
 | 
			
		||||
		 * transaction. Check that we didn't forget to release one.
 | 
			
		||||
		 */
 | 
			
		||||
		if (LOCALLOCK_LOCKTAG(*locallock) == LOCKTAG_TUPLE && !allLocks)
 | 
			
		||||
			elog(WARNING, "tuple lock held at commit");
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * If the lock or proclock pointers are NULL, this lock was taken via
 | 
			
		||||
		 * the relation fast-path (and is not known to have been transferred).
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user