From 1765fd4becba9161a3a031c43c85763b3de38dac Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Tue, 28 Jun 2011 11:07:55 +0200 Subject: [PATCH] [entropy.client] close_repositories() is called by __del__, so make it fault tolerant --- libraries/entropy/client/interfaces/methods.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/entropy/client/interfaces/methods.py b/libraries/entropy/client/interfaces/methods.py index 150ad0efc..af34c65fa 100644 --- a/libraries/entropy/client/interfaces/methods.py +++ b/libraries/entropy/client/interfaces/methods.py @@ -161,7 +161,8 @@ class RepositoryMixin: @keyword mask_clear: clear package masking information if True @type mask_clear: bool """ - for item in sorted(self._repodb_cache.keys()): + repo_cache = getattr(self, "_repodb_cache", {}) + for item, val in repo_cache.items(): repository_id, root = item # in-memory repositories cannot be closed # otherwise everything will be lost, to @@ -170,11 +171,11 @@ class RepositoryMixin: if item in self._memory_db_instances: continue try: - self._repodb_cache.pop(item).close(_token = repository_id) + repo_cache.pop(item).close(_token = repository_id) except OperationalError as err: # wtf! sys.stderr.write("!!! Cannot close Entropy repos: %s\n" % ( err,)) - self._repodb_cache.clear() + repo_cache.clear() # disable hooks during SystemSettings cleanup # otherwise it makes entropy.client.interfaces.repository crazy