Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Merge pull request #3903 from matrix-org/rav/increase_get_missing_eve…
Browse files Browse the repository at this point in the history
…nts_timeout

Bump timeout on get_missing_events request
  • Loading branch information
hawkowl committed Sep 19, 2018
2 parents a219ce8 + 8565d9a commit f773ecb
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
1 change: 1 addition & 0 deletions changelog.d/3903.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Increase the timeout when filling missing events in federation requests
31 changes: 30 additions & 1 deletion synapse/handlers/federation.py
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,35 @@ def _get_missing_events_for_pdu(self, origin, pdu, prevs, min_depth):
# apparently.
#
# see https://github.com/matrix-org/synapse/pull/1744
#
# ----
#
# Update richvdh 2018/09/18: There are a number of problems with timing this
# request out agressively on the client side:
#
# - it plays badly with the server-side rate-limiter, which starts tarpitting you
# if you send too many requests at once, so you end up with the server carefully
# working through the backlog of your requests, which you have already timed
# out.
#
# - for this request in particular, we now (as of
# https://github.com/matrix-org/synapse/pull/3456) reject any PDUs where the
# server can't produce a plausible-looking set of prev_events - so we becone
# much more likely to reject the event.
#
# - contrary to what it says above, we do *not* fall back to fetching fresh state
# for the room if get_missing_events times out. Rather, we give up processing
# the PDU whose prevs we are missing, which then makes it much more likely that
# we'll end up back here for the *next* PDU in the list, which exacerbates the
# problem.
#
# - the agressive 10s timeout was introduced to deal with incoming federation
# requests taking 8 hours to process. It's not entirely clear why that was going
# on; certainly there were other issues causing traffic storms which are now
# resolved, and I think in any case we may be more sensible about our locking
# now. We're *certainly* more sensible about our logging.
#
# All that said: Let's try increasing the timout to 60s and see what happens.

missing_events = yield self.federation_client.get_missing_events(
origin,
Expand All @@ -368,7 +397,7 @@ def _get_missing_events_for_pdu(self, origin, pdu, prevs, min_depth):
latest_events=[pdu],
limit=10,
min_depth=min_depth,
timeout=10000,
timeout=60000,
)

logger.info(
Expand Down

0 comments on commit f773ecb

Please sign in to comment.