Fix a tiny memory leak (one List header) in RelationCacheInvalidate().
This is utterly insignificant in normal operation, but it becomes a problem during cache inval stress testing. The original coding in fact had no leak --- the 8.0 List rewrite created the issue. I wonder whether list_concat should pfree the discarded header?
This commit is contained in:
parent
2e2c4f424f
commit
49a263011a
10
src/backend/utils/cache/relcache.c
vendored
10
src/backend/utils/cache/relcache.c
vendored
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.230.2.1 2005/11/22 18:23:23 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.230.2.2 2006/01/19 00:27:27 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1786,8 +1786,6 @@ RelationCacheInvalidate(void)
|
||||
}
|
||||
}
|
||||
|
||||
rebuildList = list_concat(rebuildFirstList, rebuildList);
|
||||
|
||||
/*
|
||||
* Now zap any remaining smgr cache entries. This must happen before we
|
||||
* start to rebuild entries, since that may involve catalog fetches which
|
||||
@ -1796,6 +1794,12 @@ RelationCacheInvalidate(void)
|
||||
smgrcloseall();
|
||||
|
||||
/* Phase 2: rebuild the items found to need rebuild in phase 1 */
|
||||
foreach(l, rebuildFirstList)
|
||||
{
|
||||
relation = (Relation) lfirst(l);
|
||||
RelationClearRelation(relation, true);
|
||||
}
|
||||
list_free(rebuildFirstList);
|
||||
foreach(l, rebuildList)
|
||||
{
|
||||
relation = (Relation) lfirst(l);
|
||||
|
Loading…
x
Reference in New Issue
Block a user