From 5ca41dcbfd5a96c36e3461fd134e44449a74dac5 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 24 Jun 2008 05:52:48 +0000 Subject: Clear dbapi caches just after deleting the depgraph in action_build(). This trims down the heap size by a few megs, for bug #229069. svn path=/main/trunk/; revision=10769 --- pym/_emerge/__init__.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'pym/_emerge') diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 6593ac48c..ad91dde7a 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -20,6 +20,7 @@ try: except KeyboardInterrupt: sys.exit(1) +import gc import os, stat import platform @@ -8739,6 +8740,8 @@ def action_build(settings, trees, mtimedb, time.sleep(3) # allow the parent to have first fetch mymergelist = mydepgraph.altlist() del mydepgraph + clear_caches(trees) + retval = mergetask.merge(mymergelist, favorites, mtimedb) merge_count = mergetask.curval else: @@ -8780,6 +8783,8 @@ def action_build(settings, trees, mtimedb, pkglist = mydepgraph.altlist() mydepgraph.saveNomergeFavorites() del mydepgraph + clear_caches(trees) + mergetask = MergeTask(settings, trees, myopts) retval = mergetask.merge(pkglist, favorites, mtimedb) merge_count = mergetask.curval @@ -8903,6 +8908,14 @@ def validate_ebuild_environment(trees): settings = trees[myroot]["vartree"].settings settings.validate() +def clear_caches(trees): + for d in trees.itervalues(): + d["porttree"].dbapi.melt() + d["porttree"].dbapi._aux_cache.clear() + d["bintree"].dbapi._aux_cache.clear() + d["bintree"].dbapi._clear_cache() + gc.collect() + def load_emerge_config(trees=None): kwargs = {} for k, envvar in (("config_root", "PORTAGE_CONFIGROOT"), ("target_root", "ROOT")): -- cgit v1.2.3-1-g7c22