diff options
-rw-r--r-- | pym/portage/dbapi/vartree.py | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 87fff90d1..ecd17f81e 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -612,6 +612,7 @@ class vardbapi(dbapi): raise KeyError(mycpv) mydir_mtime = long(mydir_stat.st_mtime) pkg_data = self._aux_cache["packages"].get(mycpv) + pull_me = cache_these.union(wants) mydata = {} cache_valid = False cache_incomplete = False @@ -630,23 +631,15 @@ class vardbapi(dbapi): cache_mtime, metadata = pkg_data cache_valid = cache_mtime == mydir_mtime if cache_valid: - cache_incomplete = cache_these.difference(metadata) - if cache_incomplete: - # Allow self._aux_cache_keys to change without a cache version - # bump and efficiently recycle partial cache whenever possible. - pull_me = cache_incomplete.union(wants) - else: - pull_me = set(wants).difference(cache_these) mydata.update(metadata) - else: - pull_me = cache_these.union(wants) + pull_me.difference_update(metadata) if pull_me: # pull any needed data and cache it aux_keys = list(pull_me) for k, v in izip(aux_keys, self._aux_get(mycpv, aux_keys)): mydata[k] = v - if not cache_valid or cache_incomplete: + if not cache_valid or cache_these.difference(metadata): cache_data = {} if cache_valid and metadata: cache_data.update(metadata) |