From 84ef2cc89ce141b12c14a77b5dd3926faee114b6 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Sat, 3 Jun 2023 21:54:05 +0530 Subject: [PATCH] fix: reliable cache clearing for doctype reclear cache after commit to prevent stale caching. --- frappe/cache_manager.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/frappe/cache_manager.py b/frappe/cache_manager.py index eee703bcf9..9c1754148a 100644 --- a/frappe/cache_manager.py +++ b/frappe/cache_manager.py @@ -123,13 +123,21 @@ def clear_defaults_cache(user=None): def clear_doctype_cache(doctype=None): clear_controller_cache(doctype) + + _clear_doctype_cache_form_redis() + if hasattr(frappe.db, "after_commit"): + frappe.db.after_commit.add(_clear_doctype_cache_form_redis) + frappe.db.after_rollback.add(_clear_doctype_cache_form_redis) + + +def _clear_doctype_cache_form_redis(doctype: str | None = None): cache = frappe.cache() for key in ("is_table", "doctype_modules"): cache.delete_value(key) - cache.delete_keys("document_cache") def clear_single(dt): + frappe.clear_document_cache(dt) for name in doctype_cache_keys: cache.hdel(name, dt) @@ -156,6 +164,7 @@ def clear_doctype_cache(doctype=None): # clear all for name in doctype_cache_keys: cache.delete_value(name) + cache.delete_keys("document_cache::") def clear_controller_cache(doctype=None):