From 12b27883f6ed8023a0b91b29fa45e7e8b1b7a1f9 Mon Sep 17 00:00:00 2001 From: diptanilsaha Date: Fri, 10 Apr 2026 17:01:25 +0530 Subject: [PATCH] fix: added exception handling on service level agreement apply hook (#50096) (#54192) Co-authored-by: Ankush Menat (cherry picked from commit 21311dab861f5024b37300156dfad3b497686d5b) --- .../service_level_agreement.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 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 e984f927fa6..c608c08d55c 100644 --- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py +++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py @@ -449,10 +449,16 @@ def get_documents_with_active_service_level_agreement(): 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) + try: + active = frozenset( + sla.document_type for sla in frappe.get_all("Service Level Agreement", fields=["document_type"]) + ) + frappe.cache().hset("service_level_agreement", "active", active) + except (frappe.DoesNotExistError, frappe.db.TableMissingError): + # This happens during install / uninstall when wildcard hook for SLA intercepts some doc action. + # In both cases, the error can be safely ignored. + active = frozenset() + return active