diff --git a/pisi/api.py b/pisi/api.py index b1b14040..c51f85be 100644 --- a/pisi/api.py +++ b/pisi/api.py @@ -693,13 +693,13 @@ def update_repos(repos, force=False): pisi.db.historydb.HistoryDB().create_history("repoupdate") for repo in repos: __update_repo(repo, force) - pisi.db.flush_caches() + pisi.db.regenerate_caches() @locked def update_repo(repo, force=False): pisi.db.historydb.HistoryDB().create_history("repoupdate") __update_repo(repo, force) - pisi.db.flush_caches() + pisi.db.regenerate_caches() def __update_repo(repo, force=False): ctx.ui.info(_('* Updating repository: %s') % repo) diff --git a/pisi/db/__init__.py b/pisi/db/__init__.py index f4a90329..72f2fe05 100644 --- a/pisi/db/__init__.py +++ b/pisi/db/__init__.py @@ -29,3 +29,10 @@ def update_caches(): installdb.InstallDB(), groupdb.GroupDB()]: if db.is_initialized(): db.cache_save() + +def regenerate_caches(): + flush_caches() + # Invalidate and flush caches to re-generate them when needed + for db in [packagedb.PackageDB(), sourcedb.SourceDB(), + componentdb.ComponentDB(), groupdb.GroupDB()]: + db.cache_regenerate() diff --git a/pisi/db/lazydb.py b/pisi/db/lazydb.py index 1995ca5f..16ecb074 100644 --- a/pisi/db/lazydb.py +++ b/pisi/db/lazydb.py @@ -68,6 +68,12 @@ class LazyDB(Singleton): def invalidate(self): self._delete() + def cache_regenerate(self): + try: + self.this_attr_does_not_exist() + except AttributeError: + pass + def __init(self): if not self.cache_load(): self.init()