caches: introduce invalidation as a safer ways to expire keys, deleting them are more problematic.
This commit is contained in:
parent
81ea8edd0b
commit
3ce837d046
3 changed files with 12 additions and 7 deletions
|
|
@ -41,13 +41,14 @@ def trigger_user_permission_flush(event):
|
|||
automatic flush of permission caches, so the users affected receive new permissions
|
||||
Right Away
|
||||
"""
|
||||
|
||||
invalidate = True
|
||||
affected_user_ids = set(event.user_ids)
|
||||
for user_id in affected_user_ids:
|
||||
for cache_namespace_uid_tmpl in cache_namespaces:
|
||||
cache_namespace_uid = cache_namespace_uid_tmpl.format(user_id)
|
||||
del_keys = rc_cache.clear_cache_namespace('cache_perms', cache_namespace_uid)
|
||||
log.debug('Deleted %s cache keys for user_id: %s and namespace %s',
|
||||
del_keys = rc_cache.clear_cache_namespace(
|
||||
'cache_perms', cache_namespace_uid, invalidate=invalidate)
|
||||
log.debug('Invalidated %s cache keys for user_id: %s and namespace %s',
|
||||
del_keys, user_id, cache_namespace_uid)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -261,12 +261,15 @@ def get_or_create_region(region_name, region_namespace=None):
|
|||
return region_obj
|
||||
|
||||
|
||||
def clear_cache_namespace(cache_region, cache_namespace_uid):
|
||||
def clear_cache_namespace(cache_region, cache_namespace_uid, invalidate=False):
|
||||
region = get_or_create_region(cache_region, cache_namespace_uid)
|
||||
cache_keys = region.backend.list_keys(prefix=cache_namespace_uid)
|
||||
num_delete_keys = len(cache_keys)
|
||||
if num_delete_keys:
|
||||
region.delete_multi(cache_keys)
|
||||
if invalidate:
|
||||
region.invalidate(hard=False)
|
||||
else:
|
||||
if num_delete_keys:
|
||||
region.delete_multi(cache_keys)
|
||||
return num_delete_keys
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -285,7 +285,8 @@ class ScmModel(BaseModel):
|
|||
repo.update_commit_cache(config=config, cs_cache=None)
|
||||
if delete:
|
||||
cache_namespace_uid = 'cache_repo.{}'.format(repo_id)
|
||||
rc_cache.clear_cache_namespace('cache_repo', cache_namespace_uid)
|
||||
rc_cache.clear_cache_namespace(
|
||||
'cache_repo', cache_namespace_uid, invalidate=True)
|
||||
|
||||
def toggle_following_repo(self, follow_repo_id, user_id):
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue