diff --git a/synapse/http/federation/matrix_federation_agent.py b/synapse/http/federation/matrix_federation_agent.py
index eeb3665f7d..26649e70be 100644
--- a/synapse/http/federation/matrix_federation_agent.py
+++ b/synapse/http/federation/matrix_federation_agent.py
@@ -298,16 +298,18 @@ class MatrixFederationAgent(object):
response = yield make_deferred_yieldable(
self._well_known_agent.request(b"GET", uri),
)
+ body = yield make_deferred_yieldable(readBody(response))
+ if response.code != 200:
+ raise Exception("Non-200 response %s" % (response.code, ))
except Exception as e:
- logger.info("Connection error fetching %s: %s", uri_str, e)
- self._well_known_cache.set(server_name, None, WELL_KNOWN_INVALID_CACHE_PERIOD)
- defer.returnValue(None)
+ logger.info("Error fetching %s: %s", uri_str, e)
- body = yield make_deferred_yieldable(readBody(response))
+ # add some randomness to the TTL to avoid a stampeding herd every hour
+ # after startup
+ cache_period = WELL_KNOWN_INVALID_CACHE_PERIOD
+ cache_period += random.uniform(0, WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER)
- if response.code != 200:
- logger.info("Error response %i from %s", response.code, uri_str)
- self._well_known_cache.set(server_name, None, WELL_KNOWN_INVALID_CACHE_PERIOD)
+ self._well_known_cache.set(server_name, None, cache_period)
defer.returnValue(None)
try:
@@ -328,8 +330,8 @@ class MatrixFederationAgent(object):
)
if cache_period is None:
cache_period = WELL_KNOWN_DEFAULT_CACHE_PERIOD
- # add some randomness to the TTL to avoid a stampeding herd every hour after
- # startup
+ # add some randomness to the TTL to avoid a stampeding herd every 24 hours
+ # after startup
cache_period += random.uniform(0, WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER)
else:
cache_period = min(cache_period, WELL_KNOWN_MAX_CACHE_PERIOD)
|