summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erikj@jki.re>2017-03-29 11:48:27 +0100
committerGitHub <noreply@github.com>2017-03-29 11:48:27 +0100
commit85be3dde8147d5246a52c364fc1f824d55e8d6e8 (patch)
treee1dc392e23f51dafb9f2244165c4bc00379a09ac
parentMerge pull request #2053 from matrix-org/erikj/e2e_one_time_upsert (diff)
downloadsynapse-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
-rw-r--r--synapse/federation/transaction_queue.py10
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: