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
7259cc1e7e
commit
b0be247e38
|
@ -8,7 +8,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.235 2006/01/08 20:04:41 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.236 2006/01/19 00:27:08 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -1795,8 +1795,6 @@ RelationCacheInvalidate(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rebuildList = list_concat(rebuildFirstList, rebuildList);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now zap any remaining smgr cache entries. This must happen before we
|
* Now zap any remaining smgr cache entries. This must happen before we
|
||||||
* start to rebuild entries, since that may involve catalog fetches which
|
* start to rebuild entries, since that may involve catalog fetches which
|
||||||
|
@ -1805,6 +1803,12 @@ RelationCacheInvalidate(void)
|
||||||
smgrcloseall();
|
smgrcloseall();
|
||||||
|
|
||||||
/* Phase 2: rebuild the items found to need rebuild in phase 1 */
|
/* 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)
|
foreach(l, rebuildList)
|
||||||
{
|
{
|
||||||
relation = (Relation) lfirst(l);
|
relation = (Relation) lfirst(l);
|
||||||
|
|
Loading…
Reference in New Issue