fix: reliable cache clearing for doctype

reclear cache after commit to prevent stale caching.
This commit is contained in:
Ankush Menat 2023-06-03 21:54:05 +05:30 committed by Ankush Menat
parent 7d50ef19d3
commit 84ef2cc89c

View file

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