fix: Flushall shouldn't attempt reading keys
This commit is contained in:
parent
b5e2569c0c
commit
33bd1bc09b
2 changed files with 31 additions and 0 deletions
|
|
@ -44,6 +44,36 @@ class TestClientCache(IntegrationTestCase):
|
|||
self.assertEqual(frappe.client_cache.statistics.misses, 1)
|
||||
self.assertEqual(frappe.client_cache.statistics.hit_ratio, 0.5)
|
||||
|
||||
def test_delete_invalidates(self):
|
||||
val = frappe.generate_hash()
|
||||
frappe.client_cache.set_value(TEST_KEY, val)
|
||||
self.assertEqual(frappe.client_cache.get_value(TEST_KEY), val)
|
||||
|
||||
val = frappe.generate_hash()
|
||||
frappe.cache.delete_value(TEST_KEY)
|
||||
# This is almost instant, but obviously not as fast as running the next instruction in
|
||||
# current thread. So we wait.
|
||||
time.sleep(0.1)
|
||||
|
||||
with self.assertRedisCallCounts(1, exact=True):
|
||||
self.assertIsNone(frappe.client_cache.get_value(TEST_KEY))
|
||||
|
||||
# Flushall should have results
|
||||
frappe.client_cache.set_value(TEST_KEY, val)
|
||||
self.assertEqual(frappe.client_cache.get_value(TEST_KEY), val)
|
||||
frappe.cache.flushall()
|
||||
time.sleep(0.1)
|
||||
with self.assertRedisCallCounts(1, exact=True):
|
||||
self.assertIsNone(frappe.client_cache.get_value(TEST_KEY))
|
||||
|
||||
# frappe.clear_cache should have same results
|
||||
frappe.client_cache.set_value(TEST_KEY, val)
|
||||
self.assertEqual(frappe.client_cache.get_value(TEST_KEY), val)
|
||||
frappe.clear_cache()
|
||||
time.sleep(0.1)
|
||||
with self.assertRedisCallCounts(1, exact=True):
|
||||
self.assertIsNone(frappe.client_cache.get_value(TEST_KEY))
|
||||
|
||||
def test_client_local_cache_ttl(self):
|
||||
c = ClientCache(ttl=1)
|
||||
c.set_value(TEST_KEY, 42)
|
||||
|
|
|
|||
|
|
@ -542,6 +542,7 @@ class ClientCache:
|
|||
if message["data"] is None:
|
||||
# Flushall
|
||||
self.clear_cache()
|
||||
return
|
||||
with self.lock:
|
||||
for key in message["data"]:
|
||||
self.cache.pop(key, None)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue