[entropy.client] lazy load ClientSystemSettingsPlugin

This commit is contained in:
Fabio Erculiani
2013-12-12 17:13:19 +01:00
parent 8a7afe97e8
commit 67cccf3e8a
2 changed files with 21 additions and 6 deletions

View File

@@ -765,6 +765,9 @@ class Client(Singleton, TextInterface, LoadersMixin, CacheMixin,
self._real_settings = None
self._real_settings_lock = threading.Lock()
self._real_settings_client_plg = None
self._real_settings_client_plg_lock = threading.Lock()
self._real_logger = None
self._real_logger_lock = threading.Lock()
@@ -806,9 +809,6 @@ class Client(Singleton, TextInterface, LoadersMixin, CacheMixin,
if not self.xcache and (entropy.tools.is_user_in_entropy_group()):
self.clear_cache()
# create our SystemSettings plugin
self.sys_settings_client_plugin = ClientSystemSettingsPlugin(self)
if do_validate_repo_cache:
self._validate_repositories_cache()
@@ -844,10 +844,25 @@ class Client(Singleton, TextInterface, LoadersMixin, CacheMixin,
# Make sure we connect Entropy Client plugin
# AFTER client db init
self._real_settings.add_plugin(
self.sys_settings_client_plugin)
self._settings_client_plugin)
return self._real_settings
@property
def _settings_client_plugin(self):
"""
Return the SystemSettings Entropy Client plugin.
"""
if self._real_settings_client_plg is None:
# once != None, will be always != None
with self._real_settings_client_plg_lock:
if self._real_settings_client_plg is None:
plugin = ClientSystemSettingsPlugin(self)
self._real_settings_client_plg = plugin
return self._real_settings_client_plg
@property
def _cacher(self):
"""

View File

@@ -466,7 +466,7 @@ class RepositoryMixin:
# drop from SystemSettings Client plugin, if there
try:
self.sys_settings_client_plugin._drop_package_repository(
self._settings_client_plugin._drop_package_repository(
repository_id)
except KeyError:
pass
@@ -929,7 +929,7 @@ class RepositoryMixin:
raise EntropyPackageException("error while adding repository (2)")
# add to SystemSettings
self.sys_settings_client_plugin._add_package_repository(
self._settings_client_plugin._add_package_repository(
repodata['repoid'], repodata)
repo.close()
return package_matches