diff --git a/zerver/lib/events.py b/zerver/lib/events.py index b530604114..ff07213095 100644 --- a/zerver/lib/events.py +++ b/zerver/lib/events.py @@ -1531,6 +1531,9 @@ def apply_event( # possible, but the worst expected outcome is that the client # retains the old JS instead of reloading. logging.warning("Got a web_reload_client event during apply_events") + elif event["type"] == "restart": + # The Tornado process restarted. This has no effect; we ignore it. + pass else: raise AssertionError("Unexpected event type {}".format(event["type"])) diff --git a/zerver/tests/test_events.py b/zerver/tests/test_events.py index 3a8a49ccec..fcf407abf0 100644 --- a/zerver/tests/test_events.py +++ b/zerver/tests/test_events.py @@ -248,6 +248,7 @@ from zerver.tornado.event_queue import ( clear_client_event_queues_for_testing, create_heartbeat_event, mark_clients_to_reload, + send_restart_events, send_web_reload_client_events, ) from zerver.views.realm_playgrounds import access_playground_by_id @@ -3478,6 +3479,13 @@ class NormalActionsTest(BaseAction): events = self.verify_action(lambda: do_set_zoom_token(self.user_profile, None)) check_has_zoom_token("events[0]", events[0], value=False) + def test_restart_event(self) -> None: + self.verify_action( + lambda: send_restart_events(), + num_events=1, + state_change_expected=False, + ) + def test_web_reload_client_event(self) -> None: self.verify_action( lambda: send_web_reload_client_events(),