diff options
author | Erik Johnston <erik@matrix.org> | 2020-05-27 12:04:37 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-27 12:04:37 +0100 |
commit | eefc6b3a0d08cd2a64be7c78c0a4a651cc965be9 (patch) | |
tree | ca91c6cf8a1b5639668f68f639c99a1c1ff32b3b | |
parent | Ensure ReplicationStreamer is always started when replication enabled. (#7579) (diff) | |
download | synapse-eefc6b3a0d08cd2a64be7c78c0a4a651cc965be9.tar.xz |
Don't apply cache factor to event cache. (#7578)
This is already correctly done when we instansiate the cache, but wasn't when it got reloaded (which always happens at least once on startup).
-rw-r--r-- | changelog.d/7578.bugfix | 1 | ||||
-rw-r--r-- | synapse/util/caches/lrucache.py | 4 | ||||
-rw-r--r-- | tests/config/test_cache.py | 16 |
3 files changed, 21 insertions, 0 deletions
diff --git a/changelog.d/7578.bugfix b/changelog.d/7578.bugfix new file mode 100644 index 0000000000..cd29307361 --- /dev/null +++ b/changelog.d/7578.bugfix @@ -0,0 +1 @@ +Fix cache config to not apply cache factor to event cache. Regression in v1.14.0rc1. diff --git a/synapse/util/caches/lrucache.py b/synapse/util/caches/lrucache.py index 29fabac3cd..df4ea5901d 100644 --- a/synapse/util/caches/lrucache.py +++ b/synapse/util/caches/lrucache.py @@ -81,6 +81,7 @@ class LruCache(object): """ cache = cache_type() self.cache = cache # Used for introspection. + self.apply_cache_factor_from_config = apply_cache_factor_from_config # Save the original max size, and apply the default size factor. self._original_max_size = max_size @@ -294,6 +295,9 @@ class LruCache(object): Returns: bool: Whether the cache changed size or not. """ + if not self.apply_cache_factor_from_config: + return False + new_size = int(self._original_max_size * factor) if new_size != self.max_size: self.max_size = new_size diff --git a/tests/config/test_cache.py b/tests/config/test_cache.py index 2920279125..b45e0cc536 100644 --- a/tests/config/test_cache.py +++ b/tests/config/test_cache.py @@ -125,3 +125,19 @@ class CacheConfigTests(TestCase): cache = LruCache(100) add_resizable_cache("foo", cache_resize_callback=cache.set_cache_factor) self.assertEqual(cache.max_size, 150) + + def test_apply_cache_factor_from_config(self): + """Caches can disable applying cache factor updates, mainly used by + event cache size. + """ + + config = {"caches": {"event_cache_size": "10k"}} + t = TestConfig() + t.read_config(config, config_dir_path="", data_dir_path="") + + cache = LruCache( + max_size=t.caches.event_cache_size, apply_cache_factor_from_config=False, + ) + add_resizable_cache("event_cache", cache_resize_callback=cache.set_cache_factor) + + self.assertEqual(cache.max_size, 10240) |