mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	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:
		@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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):
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user