summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/portage/dbapi/_MergeProcess.py3
-rw-r--r--pym/portage/dbapi/vartree.py8
2 files changed, 10 insertions, 1 deletions
diff --git a/pym/portage/dbapi/_MergeProcess.py b/pym/portage/dbapi/_MergeProcess.py
index afb2e084d..12a0baf55 100644
--- a/pym/portage/dbapi/_MergeProcess.py
+++ b/pym/portage/dbapi/_MergeProcess.py
@@ -176,6 +176,9 @@ class MergeProcess(SpawnProcess):
# is triggered when mylink._scheduler is None.
mylink._scheduler = None
+ # Avoid wastful updates of the vdb cache.
+ self.vartree.dbapi._flush_cache_enabled = False
+
# In this subprocess we don't want PORTAGE_BACKGROUND to
# suppress stdout/stderr output since they are pipes. We
# also don't want to open PORTAGE_LOG_FILE, since it will
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
index a34f1ec01..c81e99b9e 100644
--- a/pym/portage/dbapi/vartree.py
+++ b/pym/portage/dbapi/vartree.py
@@ -108,6 +108,11 @@ class vardbapi(dbapi):
# have been added or removed.
self._pkgs_changed = False
+ # The _aux_cache_threshold doesn't work as designed
+ # if the cache is flushed from a subprocess, so we
+ # use this to avoid waste vdb cache updates.
+ self._flush_cache_enabled = True
+
#cache for category directory mtimes
self.mtdircache = {}
@@ -467,7 +472,8 @@ class vardbapi(dbapi):
superuser privileges (since that's required to obtain a lock), but all
users have read access and benefit from faster metadata lookups (as
long as at least part of the cache is still valid)."""
- if self._aux_cache is not None and \
+ if self._flush_cache_enabled and \
+ self._aux_cache is not None and \
len(self._aux_cache["modified"]) >= self._aux_cache_threshold and \
secpass >= 2:
self._owners.populate() # index any unindexed contents