[entropy.client] avoid races in Entropy Client @property methods

This commit is contained in:
Fabio Erculiani
2014-01-05 13:59:14 +01:00
parent 881f8831cf
commit 301aa281d5

View File

@@ -155,14 +155,15 @@ class Client(Singleton, TextInterface, LoadersMixin, CacheMixin,
with self._real_settings_lock:
if self._real_settings is None:
self._real_settings = SystemSettings()
real_settings = SystemSettings()
const_debug_write(__name__, "SystemSettings loaded")
# add our SystemSettings plugin
# Make sure we connect Entropy Client plugin
# AFTER client db init
self._real_settings.add_plugin(
real_settings.add_plugin(
self._settings_client_plugin)
self._real_settings = real_settings
return self._real_settings
@@ -191,17 +192,19 @@ class Client(Singleton, TextInterface, LoadersMixin, CacheMixin,
with self._real_cacher_lock:
if self._real_cacher is None:
self._real_cacher = EntropyCacher()
real_cacher = EntropyCacher()
const_debug_write(__name__, "EntropyCacher loaded")
# needs to be started here otherwise repository
# cache will be always dropped
if self.xcache:
self._real_cacher.start()
real_cacher.start()
else:
# disable STASHING_CACHE or we leak
EntropyCacher.STASHING_CACHE = False
self._real_cacher = real_cacher
return self._real_cacher
@property
@@ -214,11 +217,12 @@ class Client(Singleton, TextInterface, LoadersMixin, CacheMixin,
with self._real_logger_lock:
if self._real_logger is None:
self._real_logger = LogFile(
real_logger = LogFile(
level = self._settings['system']['log_level'],
filename = etpConst['entropylogfile'],
header = "[client]")
const_debug_write(__name__, "Logger loaded")
self._real_logger = real_logger
return self._real_logger