From 791d18b4ecc44cfe01a1b8123d3c4bf2672020ab Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Mon, 2 Dec 2024 11:48:26 -0800 Subject: [PATCH] fix logic --- app/celery/tasks.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/celery/tasks.py b/app/celery/tasks.py index c8ad8cc6d..63d4fdc09 100644 --- a/app/celery/tasks.py +++ b/app/celery/tasks.py @@ -347,14 +347,13 @@ def save_api_email_or_sms(self, encrypted_notification): document_download_count=notification["document_download_count"], ) - provider_task.apply_async([notification["id"]], queue=q) - current_app.logger.debug( - f"{notification['notification_type']} {notification['id']} has been persisted and sent to delivery queue." - ) except IntegrityError: current_app.logger.info( f"{notification['notification_type']} {notification['id']} already exists." ) + # If we don't have the return statement here, we will fall through and end + # up retrying because IntegrityError is a subclass of SQLAlchemyError + return except SQLAlchemyError: try: @@ -363,6 +362,10 @@ def save_api_email_or_sms(self, encrypted_notification): current_app.logger.exception( f"Max retry failed Failed to persist notification {notification['id']}", ) + provider_task.apply_async([notification["id"]], queue=q) + current_app.logger.debug( + f"{notification['notification_type']} {notification['id']} has been persisted and sent to delivery queue." + ) def handle_exception(task, notification, notification_id, exc):