From ec504c99072c5e2dbe03549f7bc0296fadf38e0a Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Fri, 13 Jul 2018 18:39:52 +0200 Subject: [PATCH] caches: use delete_multi for clearing out cache keys. - This is a safer and more efficient way of purging many keys. - For file based cache it only opens the DB once --- rhodecode/lib/rc_cache/utils.py | 3 +-- rhodecode/tests/lib/test_caches.py | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/rhodecode/lib/rc_cache/utils.py b/rhodecode/lib/rc_cache/utils.py index d3fc5b06..b538fc04 100644 --- a/rhodecode/lib/rc_cache/utils.py +++ b/rhodecode/lib/rc_cache/utils.py @@ -102,6 +102,5 @@ def get_or_create_region(region_name, region_namespace=None): def clear_cache_namespace(cache_region, cache_namespace_uid): region = get_or_create_region(cache_region, cache_namespace_uid) cache_keys = region.backend.list_keys(prefix=cache_namespace_uid) - for k in cache_keys: - region.delete(k) + region.delete_multi(cache_keys) return len(cache_keys) diff --git a/rhodecode/tests/lib/test_caches.py b/rhodecode/tests/lib/test_caches.py index c90ba5f1..dab4aba0 100644 --- a/rhodecode/tests/lib/test_caches.py +++ b/rhodecode/tests/lib/test_caches.py @@ -74,8 +74,7 @@ class TestCaches(object): def test_store_value_in_cache(self): cache_region = rc_cache.get_or_create_region('cache_perms') # make sure we empty the cache now - for key in cache_region.backend.list_keys(): - cache_region.delete(key) + cache_region.delete_multi(cache_region.backend.list_keys()) assert cache_region.backend.list_keys() == []