From ca21957b8a4942e829050834297afb290338c120 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Mon, 2 Jul 2018 13:56:08 +0100 Subject: 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, -- cgit 1.5.1 From bf425e533ed678c6e22e2d8655263f4ab6d1edc6 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Tue, 3 Jul 2018 10:11:09 +0100 Subject: Fix PEP8 --- synapse/handlers/room_member.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py index e0950288df..7d509f9e08 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py @@ -249,11 +249,11 @@ class RoomMemberHandler(object): then = self.clock.time_msec() with (yield self.member_limiter.queue(as_id)): - diff = self.clock.time_msec() - then + 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") + 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 -- cgit 1.5.1