From fa55d7ed3319d44dcfba2f4db2ea19493e24ab6a Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Fri, 27 Oct 2017 18:14:13 -0700 Subject: [PATCH] retry_event: Remove requirement of failed_tries being already there. This fixes a bug where retries in the signups queue threw an exception. --- zerver/lib/actions.py | 1 - zerver/lib/push_notifications.py | 3 --- zerver/lib/queue.py | 3 ++- zerver/tests/test_queue_worker.py | 4 ++-- zerver/tests/test_service_bot_system.py | 3 --- 5 files changed, 4 insertions(+), 10 deletions(-) diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index 243aafc6c5..cebc6c05b1 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -1226,7 +1226,6 @@ def do_send_messages(messages_maybe_none): "message": wide_message_dict, "trigger": event['trigger'], "user_profile_id": event["user_profile_id"], - "failed_tries": 0, }, lambda x: None, call_consume_in_tests=True diff --git a/zerver/lib/push_notifications.py b/zerver/lib/push_notifications.py index 9805b6355f..1a68c858f8 100644 --- a/zerver/lib/push_notifications.py +++ b/zerver/lib/push_notifications.py @@ -522,9 +522,6 @@ def handle_push_notification(user_profile_id, missed_message): apns_payload, gcm_payload) except requests.ConnectionError: - if 'failed_tries' not in missed_message: - missed_message['failed_tries'] = 0 - def failure_processor(event): # type: (Dict[str, Any]) -> None logging.warning( diff --git a/zerver/lib/queue.py b/zerver/lib/queue.py index cd7f9848e5..2542af0ea5 100644 --- a/zerver/lib/queue.py +++ b/zerver/lib/queue.py @@ -312,7 +312,8 @@ def queue_json_publish(queue_name, event, processor, call_consume_in_tests=False def retry_event(queue_name, event, failure_processor): # type: (str, Dict[str, Any], Callable[[Dict[str, Any]], None]) -> None - assert 'failed_tries' in event + if 'failed_tries' not in event: + event['failed_tries'] = 0 event['failed_tries'] += 1 if event['failed_tries'] > MAX_REQUEST_RETRIES: failure_processor(event) diff --git a/zerver/tests/test_queue_worker.py b/zerver/tests/test_queue_worker.py index 1d17ea3571..73b080581a 100644 --- a/zerver/tests/test_queue_worker.py +++ b/zerver/tests/test_queue_worker.py @@ -67,7 +67,7 @@ class WorkerTest(ZulipTestCase): retries sending the email 3 times and then gives up.""" fake_client = self.FakeClient() - data = {'test': 'test', 'failed_tries': 0, 'id': 'test_missed'} + data = {'test': 'test', 'id': 'test_missed'} fake_client.queue.append(('missedmessage_email_senders', data)) def fake_publish(queue_name, event, processor): @@ -92,7 +92,7 @@ class WorkerTest(ZulipTestCase): fake_client = self.FakeClient() user_id = self.example_user('hamlet').id - data = {'user_id': user_id, 'failed_tries': 0, 'id': 'test_missed'} + data = {'user_id': user_id, 'id': 'test_missed'} fake_client.queue.append(('signups', data)) def fake_publish(queue_name, event, processor): diff --git a/zerver/tests/test_service_bot_system.py b/zerver/tests/test_service_bot_system.py index 0dafe04def..576877c574 100644 --- a/zerver/tests/test_service_bot_system.py +++ b/zerver/tests/test_service_bot_system.py @@ -209,7 +209,6 @@ class TestServiceBotEventTriggers(ZulipTestCase): def check_values_passed(queue_name, trigger_event, x, call_consume_in_tests): # type: (Any, Union[Mapping[Any, Any], Any], Callable[[Any], None], bool) -> None self.assertEqual(queue_name, expected_queue_name) - self.assertEqual(trigger_event["failed_tries"], 0) self.assertEqual(trigger_event["message"]["content"], content) self.assertEqual(trigger_event["message"]["display_recipient"], recipient) self.assertEqual(trigger_event["message"]["sender_email"], self.user_profile.email) @@ -264,7 +263,6 @@ class TestServiceBotEventTriggers(ZulipTestCase): self.assertEqual(queue_name, expected_queue_name) self.assertEqual(trigger_event["user_profile_id"], self.bot_profile.id) self.assertEqual(trigger_event["trigger"], "private_message") - self.assertEqual(trigger_event["failed_tries"], 0) self.assertEqual(trigger_event["message"]["sender_email"], sender_email) display_recipients = [ trigger_event["message"]["display_recipient"][0]["email"], @@ -311,7 +309,6 @@ class TestServiceBotEventTriggers(ZulipTestCase): self.assertIn(trigger_event["user_profile_id"], profile_ids) profile_ids.remove(trigger_event["user_profile_id"]) self.assertEqual(trigger_event["trigger"], "private_message") - self.assertEqual(trigger_event["failed_tries"], 0) self.assertEqual(trigger_event["message"]["sender_email"], sender_email) self.assertEqual(trigger_event["message"]["type"], u'private') mock_queue_json_publish.side_effect = check_values_passed