diff options
author | Richard van der Hoff <richard@matrix.org> | 2017-04-21 01:50:36 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2017-04-21 01:50:36 +0100 |
commit | 91b39818007e955b15407c3dd9fd2d310d08842b (patch) | |
tree | 3c451c0b6b32ecf15c9fdce28291d7310cc4c5fc /synapse/federation/transport | |
parent | Remove redundant try/except clauses (diff) | |
download | synapse-91b39818007e955b15407c3dd9fd2d310d08842b.tar.xz |
Try harder when sending leave events
When we're rejecting invites, ignore the backoff data, so that we have a better chance of not getting the room out of sync.
Diffstat (limited to 'synapse/federation/transport')
-rw-r--r-- | synapse/federation/transport/client.py | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/synapse/federation/transport/client.py b/synapse/federation/transport/client.py index 8887c624da..52b2a717d2 100644 --- a/synapse/federation/transport/client.py +++ b/synapse/federation/transport/client.py @@ -221,11 +221,23 @@ class TransportLayerClient(object): ) path = PREFIX + "/make_%s/%s/%s" % (membership, room_id, user_id) + ignore_backoff = False + retry_on_dns_fail = False + + if membership == Membership.LEAVE: + # we particularly want to do our best to send leave events. The + # problem is that if it fails, we won't retry it later, so if the + # remote server was just having a momentary blip, the room will be + # out of sync. + ignore_backoff = True + retry_on_dns_fail = True + content = yield self.client.get_json( destination=destination, path=path, - retry_on_dns_fail=False, + retry_on_dns_fail=retry_on_dns_fail, timeout=20000, + ignore_backoff=ignore_backoff, ) defer.returnValue(content) @@ -252,6 +264,12 @@ class TransportLayerClient(object): destination=destination, path=path, data=content, + + # we want to do our best to send this through. The problem is + # that if it fails, we won't retry it later, so if the remote + # server was just having a momentary blip, the room will be out of + # sync. + ignore_backoff=True, ) defer.returnValue(response) |