diff options
author | Erik Johnston <erikj@jki.re> | 2017-03-29 11:48:27 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-29 11:48:27 +0100 |
commit | 85be3dde8147d5246a52c364fc1f824d55e8d6e8 (patch) | |
tree | e1dc392e23f51dafb9f2244165c4bc00379a09ac /synapse/federation/transaction_queue.py | |
parent | Merge pull request #2053 from matrix-org/erikj/e2e_one_time_upsert (diff) | |
download | synapse-85be3dde8147d5246a52c364fc1f824d55e8d6e8.tar.xz |
Bail early if remote wouldn't be retried (#2064)
* Bail early if remote wouldn't be retried * Don't always return true * Just use get_retry_limiter * Spelling
Diffstat (limited to 'synapse/federation/transaction_queue.py')
-rw-r--r-- | synapse/federation/transaction_queue.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/synapse/federation/transaction_queue.py b/synapse/federation/transaction_queue.py index 2c96475b2a..c27ce7c5f3 100644 --- a/synapse/federation/transaction_queue.py +++ b/synapse/federation/transaction_queue.py @@ -22,7 +22,7 @@ from .units import Transaction, Edu from synapse.api.errors import HttpResponseException from synapse.util.async import run_on_reactor from synapse.util.logcontext import preserve_context_over_fn -from synapse.util.retryutils import NotRetryingDestination +from synapse.util.retryutils import NotRetryingDestination, get_retry_limiter from synapse.util.metrics import measure_func from synapse.types import get_domain_from_id from synapse.handlers.presence import format_user_presence_state @@ -303,9 +303,15 @@ class TransactionQueue(object): ) return + pending_pdus = [] try: self.pending_transactions[destination] = 1 + # This will throw if we wouldn't retry. We do this here so we fail + # quickly, but we will later check this again in the http client, + # hence why we throw the result away. + yield get_retry_limiter(destination, self.clock, self.store) + # XXX: what's this for? yield run_on_reactor() @@ -398,7 +404,7 @@ class TransactionQueue(object): destination, e, ) - for p in pending_pdus: + for p, _ in pending_pdus: logger.info("Failed to send event %s to %s", p.event_id, destination) finally: |