From ca21957b8a4942e829050834297afb290338c120 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Mon, 2 Jul 2018 13:56:08 +0100 Subject: [PATCH] Timeout membership requests after 90s This is a hacky fix to try and stop in flight requests from building up --- synapse/handlers/room_member.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py index edc33e466a..e0950288df 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py @@ -246,8 +246,22 @@ class RoomMemberHandler(object): if requester.app_service: as_id = requester.app_service.id + then = self.clock.time_msec() + with (yield self.member_limiter.queue(as_id)): + diff = self.clock.time_msec() - then + + if diff > 90 * 1000: + # haproxy would have timed the request out anyway... + raise SynapseError(504, "took to long to process") + with (yield self.member_linearizer.queue(key)): + diff = self.clock.time_msec() - then + + if diff > 90 * 1000: + # haproxy would have timed the request out anyway... + raise SynapseError(504, "took to long to process") + result = yield self._update_membership( requester, target,