settings: re-use attached request global config for performance...
bart -
r4200:007322e6 stable
Not Reviewed
Show More
Add another comment
TODOs: 0 unresolved 0 Resolved
COMMENTS: 0 General 0 Inline
@@ -288,7 +288,7
288 """
288 """
289 config = request.registry.settings
289 config = request.registry.settings
290
290
291 rc_config = SettingsModel().get_all_settings(cache=True)
291 rc_config = SettingsModel().get_all_settings(cache=True, from_request=False)
292 context.rc_config = rc_config
292 context.rc_config = rc_config
293 context.rhodecode_version = rhodecode.__version__
293 context.rhodecode_version = rhodecode.__version__
294 context.rhodecode_edition = config.get('rhodecode.edition')
294 context.rhodecode_edition = config.get('rhodecode.edition')
@@ -24,6 +24,7
24 from collections import namedtuple
24 from collections import namedtuple
25 from functools import wraps
25 from functools import wraps
26 import bleach
26 import bleach
27 from pyramid.threadlocal import get_current_request
27
28
28 from rhodecode.lib import rc_cache
29 from rhodecode.lib import rc_cache
29 from rhodecode.lib.utils2 import (
30 from rhodecode.lib.utils2 import (
@@ -210,7 +211,21
210 invalidation_namespace = CacheKey.SETTINGS_INVALIDATION_NAMESPACE
211 invalidation_namespace = CacheKey.SETTINGS_INVALIDATION_NAMESPACE
211 CacheKey.set_invalidate(invalidation_namespace)
212 CacheKey.set_invalidate(invalidation_namespace)
212
213
213 def get_all_settings(self, cache=False):
214 def get_all_settings(self, cache=False, from_request=True):
215 # defines if we use GLOBAL, or PER_REPO
216 repo = self._get_repo(self.repo) if self.repo else None
217 key = "settings_repo.{}".format(repo.repo_id) if repo else "settings_app"
218
219 # initially try the requests context, this is the fastest
220 # we only fetch global config
221 if from_request:
222 request = get_current_request()
223
224 if request and not repo and hasattr(request, 'call_context') and hasattr(request.call_context, 'rc_config'):
225 rc_config = request.call_context.rc_config
226 if rc_config:
227 return rc_config
228
214 region = rc_cache.get_or_create_region('sql_cache_short')
229 region = rc_cache.get_or_create_region('sql_cache_short')
215 invalidation_namespace = CacheKey.SETTINGS_INVALIDATION_NAMESPACE
230 invalidation_namespace = CacheKey.SETTINGS_INVALIDATION_NAMESPACE
216
231
@@ -226,9 +241,6
226 }
241 }
227 return settings
242 return settings
228
243
229 repo = self._get_repo(self.repo) if self.repo else None
230 key = "settings_repo.{}".format(repo.repo_id) if repo else "settings_app"
231
232 inv_context_manager = rc_cache.InvalidationContext(
244 inv_context_manager = rc_cache.InvalidationContext(
233 uid='cache_settings', invalidation_namespace=invalidation_namespace)
245 uid='cache_settings', invalidation_namespace=invalidation_namespace)
234 with inv_context_manager as invalidation_context:
246 with inv_context_manager as invalidation_context:
Comments 0
You need to be logged in to leave comments. Login now