From 7b53ca733ef58b2e533d95bdb8dd8ff94f4ac250 Mon Sep 17 00:00:00 2001 From: Ankush Date: Mon, 9 Aug 2021 22:15:49 +0530 Subject: [PATCH] perf(cache): fix active SLA doctype caching (#26861) If no SLA is configured then this query runs on EVERY `validate` call. Root cause: if not active SLA doctypes exist then `not []` evalutes to true and causes query to run again. --- .../service_level_agreement/service_level_agreement.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py index 8739cb2364c4..cfa264feb54f 100644 --- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py +++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py @@ -281,15 +281,18 @@ def get_repeated(values): def get_documents_with_active_service_level_agreement(): - if not frappe.cache().hget("service_level_agreement", "active"): - set_documents_with_active_service_level_agreement() + sla_doctypes = frappe.cache().hget("service_level_agreement", "active") + + if sla_doctypes is None: + return set_documents_with_active_service_level_agreement() - return frappe.cache().hget("service_level_agreement", "active") + return sla_doctypes def set_documents_with_active_service_level_agreement(): active = [sla.document_type for sla in frappe.get_all("Service Level Agreement", fields=["document_type"])] frappe.cache().hset("service_level_agreement", "active", active) + return active def apply(doc, method=None):