From 4a0e28510fc5743a75fbc205a99d58238d6516e6 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 6 Sep 2026 21:36:01 +1000 Subject: [PATCH] Exception handling for data outputs (#12797) --- 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