From 10769ccb04f11265e00ee64812ff770bf1f636d7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 17:23:09 +1100 Subject: [PATCH] [bug] Handle TransactionManagementError (#10942) (#10943) In the case where we try to call refresh_from_db within an atomic transaction block, it will throw a TransactionManagementError (cherry picked from commit 38b27271acb3cb05c9ed002e20d25967c1a4dfce) Co-authored-by: Oliver --- src/backend/InvenTree/InvenTree/models.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/backend/InvenTree/InvenTree/models.py b/src/backend/InvenTree/InvenTree/models.py index 7a7368079e..3e1dfe9a6f 100644 --- a/src/backend/InvenTree/InvenTree/models.py +++ b/src/backend/InvenTree/InvenTree/models.py @@ -9,6 +9,7 @@ from django.core.exceptions import ValidationError from django.db import models from django.db.models import QuerySet from django.db.models.signals import post_save +from django.db.transaction import TransactionManagementError from django.dispatch import receiver from django.urls import resolve, reverse from django.urls.exceptions import NoReverseMatch @@ -757,7 +758,15 @@ class InvenTreeTree(MPTTModel): if len(trees) > 0: # A tree update was performed, so we need to refresh the instance - self.refresh_from_db() + try: + self.refresh_from_db() + except TransactionManagementError: + # If we are inside a transaction block, we cannot refresh from db + pass + except Exception as e: + # Any other error is unexpected + InvenTree.sentry.report_exception(e) + InvenTree.exceptions.log_error(f'{self.__class__.__name__}.save') def partial_rebuild(self, tree_id: int) -> bool: """Perform a partial rebuild of the tree structure.