mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Limit depth of forced recursion for CLOBBER_CACHE_RECURSIVELY.
It's somewhat surprising that we got away with this before. (Actually, since nobody tests this routinely AFAIK, it might've been broken for awhile. But it's definitely broken in the wake of commit f868a8143.) It seems sufficient to limit the forced recursion to a small number of levels. Back-patch to all supported branches, like the preceding patch. Discussion: https://postgr.es/m/12259.1532117714@sss.pgh.pa.us
This commit is contained in:
		
							
								
								
									
										12
									
								
								src/backend/utils/cache/inval.c
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								src/backend/utils/cache/inval.c
									
									
									
									
										vendored
									
									
								
							@@ -699,7 +699,17 @@ AcceptInvalidationMessages(void)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
#elif defined(CLOBBER_CACHE_RECURSIVELY)
 | 
					#elif defined(CLOBBER_CACHE_RECURSIVELY)
 | 
				
			||||||
	InvalidateSystemCaches();
 | 
						{
 | 
				
			||||||
 | 
							static int	recursion_depth = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/* Maximum depth is arbitrary depending on your threshold of pain */
 | 
				
			||||||
 | 
							if (recursion_depth < 3)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								recursion_depth++;
 | 
				
			||||||
 | 
								InvalidateSystemCaches();
 | 
				
			||||||
 | 
								recursion_depth--;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user