diff --git a/app/__init__.py b/app/__init__.py index dd4d89b2c..9cc2e64fb 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -381,7 +381,7 @@ def setup_sqlalchemy_events(app): 'host': current_app.config['NOTIFY_APP_NAME'], # worker name 'url_rule': current_task.name, # task name } - # anything else. migrations possibly. + # anything else. migrations possibly, or flask cli commands. else: current_app.logger.warning('Checked out sqlalchemy connection from outside of request/task') connection_record.info['request_data'] = { diff --git a/app/celery/broadcast_message_tasks.py b/app/celery/broadcast_message_tasks.py index 1458852bc..0713ec381 100644 --- a/app/celery/broadcast_message_tasks.py +++ b/app/celery/broadcast_message_tasks.py @@ -52,11 +52,11 @@ def check_provider_message_should_send(broadcast_event, provider): """ current_provider_message = broadcast_event.get_provider_message(provider) # if this is the first time a task is being executed, it won't have a provider message yet - if current_provider_message and current_provider_message.status == BroadcastProviderMessageStatus.TECHNICAL_FAILURE: + if current_provider_message and current_provider_message.status != BroadcastProviderMessageStatus.SENDING: raise CBCProxyFatalException( f'Cannot send broadcast_event {broadcast_event.id} ' + f'to provider {provider}: ' + - 'It is already in status technical-failure' + f'It is in status {current_provider_message.status}' ) if broadcast_event.transmitted_finishes_at < datetime.utcnow(): diff --git a/tests/app/celery/test_broadcast_message_tasks.py b/tests/app/celery/test_broadcast_message_tasks.py index 5e4f167dd..8b859c10c 100644 --- a/tests/app/celery/test_broadcast_message_tasks.py +++ b/tests/app/celery/test_broadcast_message_tasks.py @@ -701,15 +701,20 @@ def test_check_provider_message_should_send_doesnt_raise_if_newer_event_not_acke @pytest.mark.parametrize('existing_message_status', [ BroadcastProviderMessageStatus.SENDING, - BroadcastProviderMessageStatus.ACK, - BroadcastProviderMessageStatus.ERR, - + pytest.param( + BroadcastProviderMessageStatus.ACK, + marks=pytest.mark.xfail(raises=CBCProxyFatalException) + ), + pytest.param( + BroadcastProviderMessageStatus.ERR, + marks=pytest.mark.xfail(raises=CBCProxyFatalException) + ), pytest.param( BroadcastProviderMessageStatus.TECHNICAL_FAILURE, marks=pytest.mark.xfail(raises=CBCProxyFatalException) ), ]) -def test_check_provider_message_should_send_doesnt_raise_if_current_event_already_has_provider_message( +def test_check_provider_message_should_send_raises_if_current_event_already_has_provider_message_not_in_sending( sample_template, existing_message_status ):