Skip to content

Commit

Permalink
feat: Keep certain keys persistent in cache
Browse files Browse the repository at this point in the history
  • Loading branch information
ankush committed May 4, 2024
1 parent 2167ce3 commit ce58432
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 1 deletion.
6 changes: 5 additions & 1 deletion frappe/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {}
Expand Down
7 changes: 7 additions & 0 deletions frappe/hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -545,3 +545,10 @@
"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
]
6 changes: 6 additions & 0 deletions frappe/tests/test_deferred_insert.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,9 @@ def test_deferred_insert(self):

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))

0 comments on commit ce58432

Please sign in to comment.