mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2024-10-01 11:49:51 -04:00
Change jitter to be a factor rather than absolute value
This commit is contained in:
parent
861d663c15
commit
1dec31560e
@ -32,8 +32,8 @@ from synapse.util.metrics import Measure
|
|||||||
# period to cache .well-known results for by default
|
# period to cache .well-known results for by default
|
||||||
WELL_KNOWN_DEFAULT_CACHE_PERIOD = 24 * 3600
|
WELL_KNOWN_DEFAULT_CACHE_PERIOD = 24 * 3600
|
||||||
|
|
||||||
# jitter to add to the .well-known default cache ttl
|
# jitter factor to add to the .well-known default cache ttls
|
||||||
WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER = 10 * 60
|
WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER = 0.1
|
||||||
|
|
||||||
# period to cache failure to fetch .well-known for
|
# period to cache failure to fetch .well-known for
|
||||||
WELL_KNOWN_INVALID_CACHE_PERIOD = 1 * 3600
|
WELL_KNOWN_INVALID_CACHE_PERIOD = 1 * 3600
|
||||||
@ -133,16 +133,14 @@ class WellKnownResolver(object):
|
|||||||
# We have recently seen a valid well-known record for this
|
# We have recently seen a valid well-known record for this
|
||||||
# server, so we cache the lack of well-known for a shorter time.
|
# server, so we cache the lack of well-known for a shorter time.
|
||||||
cache_period = WELL_KNOWN_DOWN_CACHE_PERIOD
|
cache_period = WELL_KNOWN_DOWN_CACHE_PERIOD
|
||||||
cache_period += random.uniform(
|
|
||||||
0, WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
# add some randomness to the TTL to avoid a stampeding herd every hour
|
|
||||||
# after startup
|
|
||||||
cache_period = WELL_KNOWN_INVALID_CACHE_PERIOD
|
cache_period = WELL_KNOWN_INVALID_CACHE_PERIOD
|
||||||
cache_period += random.uniform(
|
|
||||||
0, WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER
|
# add some randomness to the TTL to avoid a stampeding herd
|
||||||
)
|
cache_period *= random.uniform(
|
||||||
|
1 - WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER,
|
||||||
|
1 + WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER,
|
||||||
|
)
|
||||||
|
|
||||||
if cache_period > 0:
|
if cache_period > 0:
|
||||||
self._well_known_cache.set(server_name, result, cache_period)
|
self._well_known_cache.set(server_name, result, cache_period)
|
||||||
@ -194,7 +192,10 @@ class WellKnownResolver(object):
|
|||||||
cache_period = WELL_KNOWN_DEFAULT_CACHE_PERIOD
|
cache_period = WELL_KNOWN_DEFAULT_CACHE_PERIOD
|
||||||
# add some randomness to the TTL to avoid a stampeding herd every 24 hours
|
# add some randomness to the TTL to avoid a stampeding herd every 24 hours
|
||||||
# after startup
|
# after startup
|
||||||
cache_period += random.uniform(0, WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER)
|
cache_period *= random.uniform(
|
||||||
|
1 - WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER,
|
||||||
|
1 + WELL_KNOWN_DEFAULT_CACHE_PERIOD_JITTER,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
cache_period = min(cache_period, WELL_KNOWN_MAX_CACHE_PERIOD)
|
cache_period = min(cache_period, WELL_KNOWN_MAX_CACHE_PERIOD)
|
||||||
cache_period = max(cache_period, WELL_KNOWN_MIN_CACHE_PERIOD)
|
cache_period = max(cache_period, WELL_KNOWN_MIN_CACHE_PERIOD)
|
||||||
|
@ -551,7 +551,7 @@ class MatrixFederationAgentTests(TestCase):
|
|||||||
self.assertEqual(self.well_known_cache[b"testserv"], b"target-server")
|
self.assertEqual(self.well_known_cache[b"testserv"], b"target-server")
|
||||||
|
|
||||||
# check the cache expires
|
# check the cache expires
|
||||||
self.reactor.pump((25 * 3600,))
|
self.reactor.pump((48 * 3600,))
|
||||||
self.well_known_cache.expire()
|
self.well_known_cache.expire()
|
||||||
self.assertNotIn(b"testserv", self.well_known_cache)
|
self.assertNotIn(b"testserv", self.well_known_cache)
|
||||||
|
|
||||||
@ -639,7 +639,7 @@ class MatrixFederationAgentTests(TestCase):
|
|||||||
self.assertEqual(self.well_known_cache[b"testserv"], b"target-server")
|
self.assertEqual(self.well_known_cache[b"testserv"], b"target-server")
|
||||||
|
|
||||||
# check the cache expires
|
# check the cache expires
|
||||||
self.reactor.pump((25 * 3600,))
|
self.reactor.pump((48 * 3600,))
|
||||||
self.well_known_cache.expire()
|
self.well_known_cache.expire()
|
||||||
self.assertNotIn(b"testserv", self.well_known_cache)
|
self.assertNotIn(b"testserv", self.well_known_cache)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user