diff options
author | Erik Johnston <erik@matrix.org> | 2018-02-14 13:52:03 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2018-04-09 11:47:01 +0100 |
commit | 145d14656b19d64a6deca8facca02508ecc751fe (patch) | |
tree | 1046dfb23f16778fc4f957430f8ec2ad11d6e961 | |
parent | Merge pull request #3046 from matrix-org/dbkr/join_group (diff) | |
download | synapse-145d14656b19d64a6deca8facca02508ecc751fe.tar.xz |
Handle exceptions in get_hosts_for_room when sending events over federation
-rw-r--r-- | synapse/federation/transaction_queue.py | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/synapse/federation/transaction_queue.py b/synapse/federation/transaction_queue.py index a141ec9953..12e8df9cc6 100644 --- a/synapse/federation/transaction_queue.py +++ b/synapse/federation/transaction_queue.py @@ -184,17 +184,22 @@ class TransactionQueue(object): if not is_mine and send_on_behalf_of is None: continue - # Get the state from before the event. - # We need to make sure that this is the state from before - # the event and not from after it. - # Otherwise if the last member on a server in a room is - # banned then it won't receive the event because it won't - # be in the room after the ban. - destinations = yield self.state.get_current_hosts_in_room( - event.room_id, latest_event_ids=[ - prev_id for prev_id, _ in event.prev_events - ], - ) + try: + # Get the state from before the event. + # We need to make sure that this is the state from before + # the event and not from after it. + # Otherwise if the last member on a server in a room is + # banned then it won't receive the event because it won't + # be in the room after the ban. + destinations = yield self.state.get_current_hosts_in_room( + event.room_id, latest_event_ids=[ + prev_id for prev_id, _ in event.prev_events + ], + ) + except Exception: + logger.exception("Failed to calculate hosts in room") + continue + destinations = set(destinations) if send_on_behalf_of is not None: |