retry_event: Remove requirement of failed_tries being already there.

This fixes a bug where retries in the signups queue threw an exception.
This commit is contained in:
Tim Abbott
2017-10-27 18:14:13 -07:00
parent 8b6b4e043f
commit fa55d7ed33
5 changed files with 4 additions and 10 deletions

View File

@@ -1226,7 +1226,6 @@ def do_send_messages(messages_maybe_none):
"message": wide_message_dict, "message": wide_message_dict,
"trigger": event['trigger'], "trigger": event['trigger'],
"user_profile_id": event["user_profile_id"], "user_profile_id": event["user_profile_id"],
"failed_tries": 0,
}, },
lambda x: None, lambda x: None,
call_consume_in_tests=True call_consume_in_tests=True

View File

@@ -522,9 +522,6 @@ def handle_push_notification(user_profile_id, missed_message):
apns_payload, apns_payload,
gcm_payload) gcm_payload)
except requests.ConnectionError: except requests.ConnectionError:
if 'failed_tries' not in missed_message:
missed_message['failed_tries'] = 0
def failure_processor(event): def failure_processor(event):
# type: (Dict[str, Any]) -> None # type: (Dict[str, Any]) -> None
logging.warning( logging.warning(

View File

@@ -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): def retry_event(queue_name, event, failure_processor):
# type: (str, Dict[str, Any], Callable[[Dict[str, Any]], None]) -> None # 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 event['failed_tries'] += 1
if event['failed_tries'] > MAX_REQUEST_RETRIES: if event['failed_tries'] > MAX_REQUEST_RETRIES:
failure_processor(event) failure_processor(event)

View File

@@ -67,7 +67,7 @@ class WorkerTest(ZulipTestCase):
retries sending the email 3 times and then gives up.""" retries sending the email 3 times and then gives up."""
fake_client = self.FakeClient() 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)) fake_client.queue.append(('missedmessage_email_senders', data))
def fake_publish(queue_name, event, processor): def fake_publish(queue_name, event, processor):
@@ -92,7 +92,7 @@ class WorkerTest(ZulipTestCase):
fake_client = self.FakeClient() fake_client = self.FakeClient()
user_id = self.example_user('hamlet').id 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)) fake_client.queue.append(('signups', data))
def fake_publish(queue_name, event, processor): def fake_publish(queue_name, event, processor):

View File

@@ -209,7 +209,6 @@ class TestServiceBotEventTriggers(ZulipTestCase):
def check_values_passed(queue_name, trigger_event, x, call_consume_in_tests): 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 # type: (Any, Union[Mapping[Any, Any], Any], Callable[[Any], None], bool) -> None
self.assertEqual(queue_name, expected_queue_name) 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"]["content"], content)
self.assertEqual(trigger_event["message"]["display_recipient"], recipient) self.assertEqual(trigger_event["message"]["display_recipient"], recipient)
self.assertEqual(trigger_event["message"]["sender_email"], self.user_profile.email) 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(queue_name, expected_queue_name)
self.assertEqual(trigger_event["user_profile_id"], self.bot_profile.id) self.assertEqual(trigger_event["user_profile_id"], self.bot_profile.id)
self.assertEqual(trigger_event["trigger"], "private_message") 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"]["sender_email"], sender_email)
display_recipients = [ display_recipients = [
trigger_event["message"]["display_recipient"][0]["email"], trigger_event["message"]["display_recipient"][0]["email"],
@@ -311,7 +309,6 @@ class TestServiceBotEventTriggers(ZulipTestCase):
self.assertIn(trigger_event["user_profile_id"], profile_ids) self.assertIn(trigger_event["user_profile_id"], profile_ids)
profile_ids.remove(trigger_event["user_profile_id"]) profile_ids.remove(trigger_event["user_profile_id"])
self.assertEqual(trigger_event["trigger"], "private_message") 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"]["sender_email"], sender_email)
self.assertEqual(trigger_event["message"]["type"], u'private') self.assertEqual(trigger_event["message"]["type"], u'private')
mock_queue_json_publish.side_effect = check_values_passed mock_queue_json_publish.side_effect = check_values_passed