Access the event_cache_size directly from the server object.

This means that the workers can override the event_cache_size
directly without clobbering the value in the main synapse config.
This commit is contained in:
Mark Haines 2016-06-16 12:53:15 +01:00
parent bde13833cb
commit 364d616792
5 changed files with 10 additions and 21 deletions

View File

@ -18,7 +18,6 @@ import synapse
from synapse.server import HomeServer
from synapse.config._base import ConfigError
from synapse.config.workers import clobber_with_worker_config
from synapse.config.logger import setup_logging
from synapse.config.homeserver import HomeServerConfig
from synapse.http.site import SynapseSite
@ -241,6 +240,9 @@ class PusherServer(HomeServer):
logger.exception("Error replicating from %r", replication_url)
yield sleep(30)
def get_event_cache_size(self):
return self.worker_config.event_cache_size
def setup(worker_name, config_options):
try:
@ -255,8 +257,6 @@ def setup(worker_name, config_options):
setup_logging(worker_config.log_config, worker_config.log_file)
clobber_with_worker_config(config, worker_config)
if config.start_pushers:
sys.stderr.write(
"\nThe pushers must be disabled in the main synapse process"

View File

@ -20,7 +20,6 @@ from synapse.api.constants import EventTypes, PresenceState
from synapse.config._base import ConfigError
from synapse.config.homeserver import HomeServerConfig
from synapse.config.logger import setup_logging
from synapse.config.workers import clobber_with_worker_config
from synapse.events import FrozenEvent
from synapse.handlers.presence import PresenceHandler
from synapse.http.site import SynapseSite
@ -404,6 +403,9 @@ class SynchrotronServer(HomeServer):
def build_typing_handler(self):
return SynchrotronTyping(self)
def get_event_cache_size(self):
return self.worker_config.event_cache_size
def start(worker_name, config_options):
try:
@ -418,8 +420,6 @@ def start(worker_name, config_options):
setup_logging(worker_config.log_config, worker_config.log_file)
clobber_with_worker_config(config, worker_config)
database_engine = create_engine(config.database_config)
ss = SynchrotronServer(

View File

@ -33,20 +33,6 @@ Worker = collections.namedtuple("Worker", [
])
def clobber_with_worker_config(config, worker_config):
"""Overrides some of the keys of the main config with worker-specific
values. We only need to override the keys that are accessed deep
withing synapse code. Most of the keys that we want to override in
the workers are accessed in setup code that is rewritten specifically
for the workers. In that new code we can access the worker config directly,
so we don't need to override the values in the main config."""
# TODO: The event_cache_size is accessed in the db setup. It should be
# possible to rejigg that code so that the cache size is pulled from the
# worker config directly.
config.event_cache_size = worker_config.event_cache_size
def read_worker_config(config):
return Worker(
app=config["app"],

View File

@ -236,6 +236,9 @@ class HomeServer(object):
def remove_pusher(self, app_id, push_key, user_id):
return self.get_pusherpool().remove_pusher(app_id, push_key, user_id)
def get_event_cache_size(self):
return self.config.event_cache_size
def _make_dependency_method(depname):
def _get(hs):

View File

@ -166,7 +166,7 @@ class SQLBaseStore(object):
self._get_event_counters = PerformanceCounters()
self._get_event_cache = Cache("*getEvent*", keylen=3, lru=True,
max_entries=hs.config.event_cache_size)
max_entries=hs.get_event_cache_size())
self._state_group_cache = DictionaryCache(
"*stateGroupCache*", 2000 * CACHE_SIZE_FACTOR