diff options
author | Richard van der Hoff <richard@matrix.org> | 2017-03-23 11:10:36 +0000 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2017-03-23 12:23:22 +0000 |
commit | 5a16cb4bf036c6b1914d6c6248ed640c289b59e3 (patch) | |
tree | 10fd4e468223f0a47e273905d7ed83a297559ee2 /synapse/util | |
parent | push federation retry limiter down to matrixfederationclient (diff) | |
download | synapse-5a16cb4bf036c6b1914d6c6248ed640c289b59e3.tar.xz |
Ignore backoff history for invites, aliases, and roomdirs
Add a param to the federation client which lets us ignore historical backoff data for federation queries, and set it for a handful of operations.
Diffstat (limited to 'synapse/util')
-rw-r--r-- | synapse/util/retryutils.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/synapse/util/retryutils.py b/synapse/util/retryutils.py index 7e5a952584..7f5299bd32 100644 --- a/synapse/util/retryutils.py +++ b/synapse/util/retryutils.py @@ -35,7 +35,8 @@ class NotRetryingDestination(Exception): @defer.inlineCallbacks -def get_retry_limiter(destination, clock, store, **kwargs): +def get_retry_limiter(destination, clock, store, ignore_backoff=False, + **kwargs): """For a given destination check if we have previously failed to send a request there and are waiting before retrying the destination. If we are not ready to retry the destination, this will raise a @@ -43,6 +44,14 @@ def get_retry_limiter(destination, clock, store, **kwargs): that will mark the destination as down if an exception is thrown (excluding CodeMessageException with code < 500) + Args: + destination (str): name of homeserver + clock (synapse.util.clock): timing source + store (synapse.storage.transactions.TransactionStore): datastore + ignore_backoff (bool): true to ignore the historical backoff data and + try the request anyway. We will still update the next + retry_interval on success/failure. + Example usage: try: @@ -66,7 +75,7 @@ def get_retry_limiter(destination, clock, store, **kwargs): now = int(clock.time_msec()) - if retry_last_ts + retry_interval > now: + if not ignore_backoff and retry_last_ts + retry_interval > now: raise NotRetryingDestination( retry_last_ts=retry_last_ts, retry_interval=retry_interval, |