From 4e0be4a65ab53a9a01b820600d16700d42fdd975 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2026 07:46:06 +1000 Subject: [PATCH] Exception handling for data outputs (#12797) (#12800) (cherry picked from commit 4a0e28510fc5743a75fbc205a99d58238d6516e6) Co-authored-by: Oliver --- src/backend/InvenTree/report/tasks.py | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/backend/InvenTree/report/tasks.py b/src/backend/InvenTree/report/tasks.py index 71106f6ccb..e95532da8a 100644 --- a/src/backend/InvenTree/report/tasks.py +++ b/src/backend/InvenTree/report/tasks.py @@ -32,10 +32,24 @@ def print_reports( try: template = ReportTemplate.objects.get(pk=template_id) output = DataOutput.objects.get(pk=output_id) + except DataOutput.DoesNotExist: + # The DataOutput may have already been consumed and deleted by the time + # this task runs (e.g. if the background worker redelivered the task) + logger.info( + 'DataOutput %s no longer exists - skipping print_reports task', output_id + ) + return except Exception: log_error('report.tasks.print_reports') return + if output.complete: + # This task has already been processed (e.g. a redelivered/duplicate task) - skip it + logger.info( + 'DataOutput %s is already complete - skipping print_reports task', output_id + ) + return + # Fetch user information user = None @@ -86,10 +100,24 @@ def print_labels( try: template = LabelTemplate.objects.get(pk=template_id) output = DataOutput.objects.get(pk=output_id) + except DataOutput.DoesNotExist: + # The DataOutput may have already been consumed and deleted by the time + # this task runs (e.g. if the background worker redelivered the task) + logger.info( + 'DataOutput %s no longer exists - skipping print_labels task', output_id + ) + return except Exception: log_error('report.tasks.print_labels') return + if output.complete: + # This task has already been processed (e.g. a redelivered/duplicate task) - skip it + logger.info( + 'DataOutput %s is already complete - skipping print_labels task', output_id + ) + return + # Fetch user information user = None