Author: gjm
Date: Sat Jul 19 17:07:48 2014
New Revision: 1611921
URL: http://svn.apache.org/r1611921
Log:
clearing the lru_cache close to the beginning of a request to limit impact of
caching errors in multi process/threaded web serving - towards #613
Modified:
bloodhound/trunk/bloodhound_multiproduct/multiproduct/env.py
bloodhound/trunk/bloodhound_multiproduct/multiproduct/hooks.py
Modified: bloodhound/trunk/bloodhound_multiproduct/multiproduct/env.py
URL:
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_multiproduct/multiproduct/env.py?rev=1611921&r1=1611920&r2=1611921&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_multiproduct/multiproduct/env.py (original)
+++ bloodhound/trunk/bloodhound_multiproduct/multiproduct/env.py Sat Jul 19
17:07:48 2014
@@ -365,6 +365,8 @@ class ProductEnvironment(Component, Comp
g_env = env.parent if isinstance(env,
ProductEnvironment) else env
return f(self, g_env, *args, **kwargs)
+ __call__.clear = f.clear
+
return __call__
def product_env_keymap(args, kwds, kwd_mark):
@@ -397,6 +399,10 @@ class ProductEnvironment(Component, Comp
setup_participants = ExtensionPoint(trac.env.IEnvironmentSetupParticipant)
multi_product_support_components =
ExtensionPoint(ISupportMultiProductEnvironment)
+ @classmethod
+ def clear_env_cache(cls):
+ cls.__metaclass__.__call__.clear()
+
@property
def product_setup_participants(self):
return [
Modified: bloodhound/trunk/bloodhound_multiproduct/multiproduct/hooks.py
URL:
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_multiproduct/multiproduct/hooks.py?rev=1611921&r1=1611920&r2=1611921&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_multiproduct/multiproduct/hooks.py (original)
+++ bloodhound/trunk/bloodhound_multiproduct/multiproduct/hooks.py Sat Jul 19
17:07:48 2014
@@ -37,6 +37,8 @@ PRODUCT_RE = re.compile(r'^/products(?:/
class MultiProductEnvironmentFactory(EnvironmentFactoryBase):
def open_environment(self, environ, env_path, global_env, use_cache=False):
+ # clearing product environment cache - bh:ticket:613
+ multiproduct.env.ProductEnvironment.clear_env_cache()
environ.setdefault('SCRIPT_NAME', '') # bh:ticket:594
env = pid = product_path = None