summary refs log tree commit diff
path: root/tests/federation
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2021-03-15 14:42:40 +0000
committerGitHub <noreply@github.com>2021-03-15 14:42:40 +0000
commit026503fa3b90c03996a64be95432e345434b4a82 (patch)
treec1cee50bb946cc4256338d1152dc195df3aa8a1d /tests/federation
parentOptimise missing prev_event handling (#9601) (diff)
downloadsynapse-026503fa3b90c03996a64be95432e345434b4a82.tar.xz
Don't go into federation catch up mode so easily (#9561)
Federation catch up mode is very inefficient if the number of events
that the remote server has missed is small, since handling gaps can be
very expensive, c.f. #9492.

Instead of going into catch up mode whenever we see an error, we instead
do so only if we've backed off from trying the remote for more than an
hour (the assumption being that in such a case it is more than a
transient failure).
Diffstat (limited to 'tests/federation')
-rw-r--r--tests/federation/test_federation_catch_up.py3
1 files changed, 2 insertions, 1 deletions
diff --git a/tests/federation/test_federation_catch_up.py b/tests/federation/test_federation_catch_up.py
index 1a3ccb263d..6f96cd7940 100644
--- a/tests/federation/test_federation_catch_up.py
+++ b/tests/federation/test_federation_catch_up.py
@@ -7,6 +7,7 @@ from synapse.federation.sender import PerDestinationQueue, TransactionManager
 from synapse.federation.units import Edu
 from synapse.rest import admin
 from synapse.rest.client.v1 import login, room
+from synapse.util.retryutils import NotRetryingDestination
 
 from tests.test_utils import event_injection, make_awaitable
 from tests.unittest import FederatingHomeserverTestCase, override_config
@@ -49,7 +50,7 @@ class FederationCatchUpTestCases(FederatingHomeserverTestCase):
         else:
             data = json_cb()
             self.failed_pdus.extend(data["pdus"])
-            raise IOError("Failed to connect because this is a test!")
+            raise NotRetryingDestination(0, 24 * 60 * 60 * 1000, txn.destination)
 
     def get_destination_room(self, room: str, destination: str = "host2") -> dict:
         """