diff --git a/lib/entropy/client/interfaces/client.py b/lib/entropy/client/interfaces/client.py index 2e08af996..c95af2bb6 100644 --- a/lib/entropy/client/interfaces/client.py +++ b/lib/entropy/client/interfaces/client.py @@ -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): """ diff --git a/lib/entropy/client/interfaces/methods.py b/lib/entropy/client/interfaces/methods.py index a08b430cb..2a76a90b3 100644 --- a/lib/entropy/client/interfaces/methods.py +++ b/lib/entropy/client/interfaces/methods.py @@ -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