mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Add some test scaffolding to allow cache-flush stress testing (and I do
mean stress ... system is orders of magnitude slower with this enabled).
This commit is contained in:
parent
36cdb24f31
commit
337cc41236
32
src/backend/utils/cache/inval.c
vendored
32
src/backend/utils/cache/inval.c
vendored
@ -80,7 +80,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/utils/cache/inval.c,v 1.73.2.1 2005/11/22 18:23:23 momjian Exp $
|
* $PostgreSQL: pgsql/src/backend/utils/cache/inval.c,v 1.73.2.2 2006/01/19 21:49:30 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -625,6 +625,36 @@ AcceptInvalidationMessages(void)
|
|||||||
{
|
{
|
||||||
ReceiveSharedInvalidMessages(LocalExecuteInvalidationMessage,
|
ReceiveSharedInvalidMessages(LocalExecuteInvalidationMessage,
|
||||||
InvalidateSystemCaches);
|
InvalidateSystemCaches);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Test code to force cache flushes anytime a flush could happen.
|
||||||
|
*
|
||||||
|
* If used with CLOBBER_FREED_MEMORY, CLOBBER_CACHE_ALWAYS provides a
|
||||||
|
* fairly thorough test that the system contains no cache-flush hazards.
|
||||||
|
* However, it also makes the system unbelievably slow --- the regression
|
||||||
|
* tests take about 100 times longer than normal.
|
||||||
|
*
|
||||||
|
* If you're a glutton for punishment, try CLOBBER_CACHE_RECURSIVELY.
|
||||||
|
* This slows things by at least a factor of 10000, so I wouldn't suggest
|
||||||
|
* trying to run the entire regression tests that way. It's useful to
|
||||||
|
* try a few simple tests, to make sure that cache reload isn't subject
|
||||||
|
* to internal cache-flush hazards, but after you've done a few thousand
|
||||||
|
* recursive reloads it's unlikely you'll learn more.
|
||||||
|
*/
|
||||||
|
#if defined(CLOBBER_CACHE_ALWAYS)
|
||||||
|
{
|
||||||
|
static bool in_recursion = false;
|
||||||
|
|
||||||
|
if (!in_recursion)
|
||||||
|
{
|
||||||
|
in_recursion = true;
|
||||||
|
InvalidateSystemCaches();
|
||||||
|
in_recursion = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#elif defined(CLOBBER_CACHE_RECURSIVELY)
|
||||||
|
InvalidateSystemCaches();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user