feat: Keep certain keys persistent in cache
This commit is contained in:
parent
45026aed37
commit
8ab308838b
3 changed files with 18 additions and 1 deletions
|
|
@ -1049,7 +1049,11 @@ def clear_cache(user: str | None = None, doctype: str | None = None):
|
|||
frappe.cache_manager.clear_user_cache(user)
|
||||
else: # everything
|
||||
# Delete ALL keys associated with this site.
|
||||
frappe.cache.delete_keys("")
|
||||
keys_to_delete = set(frappe.cache.get_keys(""))
|
||||
for key in frappe.get_hooks("persistent_cache_keys"):
|
||||
keys_to_delete.difference_update(frappe.cache.get_keys(key))
|
||||
frappe.cache.delete_value(list(keys_to_delete), make_keys=False)
|
||||
|
||||
reset_metadata_version()
|
||||
local.cache = {}
|
||||
local.new_doc_templates = {}
|
||||
|
|
|
|||
|
|
@ -546,3 +546,10 @@ default_log_clearing_doctypes = {
|
|||
"Activity Log": 90,
|
||||
"Route History": 90,
|
||||
}
|
||||
|
||||
# These keys will not be erased when doing frappe.clear_cache()
|
||||
persistent_cache_keys = [
|
||||
"update-user-set",
|
||||
"update-info",
|
||||
"insert_queue_for_*", # Deferred Insert
|
||||
]
|
||||
|
|
|
|||
|
|
@ -10,3 +10,9 @@ class TestDeferredInsert(FrappeTestCase):
|
|||
|
||||
save_to_db()
|
||||
self.assertTrue(frappe.db.exists("Route History", route_history))
|
||||
|
||||
route_history = {"route": frappe.generate_hash(), "user": "Administrator"}
|
||||
deferred_insert("Route History", [route_history])
|
||||
frappe.clear_cache() # deferred_insert cache keys are supposed to be persistent
|
||||
save_to_db()
|
||||
self.assertTrue(frappe.db.exists("Route History", route_history))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue