Commit 5a3c16e4 authored by Jérome Perrin's avatar Jérome Perrin

ERP5Type: Don't log when cache factory is not found

This should prevent all the warnings like

    WARNING Cache.__call__ Factory erp5_content_medium not found, method <function getTypeList at 0x7fd8b2ce4cd0> executed without cache
    WARNING Cache.__call__ Factory erp5_content_long not found, method <function _getPortalGroupedTypeSet at 0x7fd8bc613750> executed without cache

we have during startup.

This code tried to detect the case where cache system was not
fully initialized an only log in this case, but there does not seem to
be a reliable way to detect that cache is supposed to be ready and that
log was not really useful - If some methods are executed without cache
for some reason (which as far as I know never happens), then we should
be able to notice the problem because it's slow.
parent f5d883c0
...@@ -43,29 +43,25 @@ from warnings import warn ...@@ -43,29 +43,25 @@ from warnings import warn
DEFAULT_CACHE_SCOPE = 'GLOBAL' DEFAULT_CACHE_SCOPE = 'GLOBAL'
DEFAULT_CACHE_FACTORY = 'erp5_ui_short' DEFAULT_CACHE_FACTORY = 'erp5_ui_short'
is_cache_initialized = 0 is_cache_initialized = False
is_cache_ready = 0
def initializePortalCachingProperties(self): def initializePortalCachingProperties(self):
""" Init CachingMethod properties.""" """ Init CachingMethod properties."""
## check if global CachingMethod is initialized in RAM for this ERP5 site. If not init it ## check if global CachingMethod is initialized in RAM for this ERP5 site. If not init it
global is_cache_initialized global is_cache_initialized
global is_cache_ready
if not is_cache_initialized: if not is_cache_initialized:
portal_caches = getattr(self.getPortalObject(), 'portal_caches', None) portal_caches = getattr(self.getPortalObject(), 'portal_caches', None)
if portal_caches is None: if portal_caches is None:
return return
# we set is_cache_initialized right now to prevent infinite loops # we set is_cache_initialized right now to prevent infinite loops
is_cache_initialized = 1 is_cache_initialized = True
## update cache structure from portal_caches ## update cache structure from portal_caches
try: try:
portal_caches.updateCache() portal_caches.updateCache()
except AttributeError: except AttributeError:
is_cache_initialized = 0 is_cache_initialized = False
return return
# we mark the cache as ready after initialization, because initialization
# itself will cause cache misses that we want to ignore
is_cache_ready = 1
class ZODBCookie(Persistent): class ZODBCookie(Persistent):
...@@ -272,12 +268,8 @@ class CachingMethod: ...@@ -272,12 +268,8 @@ class CachingMethod:
# on CachingMethod instead of self, we want a global variable # on CachingMethod instead of self, we want a global variable
cache_factory = CachingMethod.factories[self.cache_factory] cache_factory = CachingMethod.factories[self.cache_factory]
except KeyError: except KeyError:
global is_cache_ready # No cache factory ready, execute without cache. This happens during
if is_cache_ready: # initialisation
## no caching enabled for this site or no such cache factory
LOG("Cache.__call__", WARNING,
"Factory %s not found, method %s executed without cache" % (
self.cache_factory, self.callable_object))
value = self.callable_object(*args, **kwd) value = self.callable_object(*args, **kwd)
else: else:
value = cache_factory( value = cache_factory(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment