Efficiently recycle partial valid vdb cache when possible. This reduces disk load...
authorZac Medico <zmedico@gentoo.org>
Tue, 10 Apr 2007 06:04:10 +0000 (06:04 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 10 Apr 2007 06:04:10 +0000 (06:04 -0000)
svn path=/main/branches/2.1.2/; revision=6361

pym/portage.py

index b61b4e22f855cfe78cc78ff69f0018e8eb54e167..ebf7e3463eb469a73d8cb6cee163e0db760a509d 100644 (file)
@@ -5303,13 +5303,16 @@ class vardbapi(dbapi):
                if pkg_data:
                        cache_mtime, metadata = pkg_data
                        cache_valid = cache_mtime == mydir_mtime
-                       if cache_valid and set(metadata) != self._aux_cache_keys:
+               if cache_valid:
+                       cache_incomplete = self._aux_cache_keys.difference(metadata)
+                       if cache_incomplete:
                                # Allow self._aux_cache_keys to change without a cache version
-                               # bump.
+                               # bump and efficiently recycle partial cache whenever possible.
                                cache_valid = False
-               if cache_valid:
+                               pull_me = cache_incomplete.union(wants)
+                       else:
+                               pull_me = set(wants).difference(self._aux_cache_keys)
                        mydata.update(metadata)
-                       pull_me = set(wants).difference(self._aux_cache_keys)
                else:
                        pull_me = self._aux_cache_keys.union(wants)
                if pull_me: