Split ProfileHandler into master and worker

This commit is contained in:
Erik Johnston 2018-08-17 11:43:16 +01:00
parent 38f708a2bb
commit ca87ad1def
3 changed files with 21 additions and 11 deletions

View File

@ -33,12 +33,12 @@ from ._base import BaseHandler
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class ProfileHandler(BaseHandler): class WorkerProfileHandler(BaseHandler):
PROFILE_UPDATE_MS = 60 * 1000 PROFILE_UPDATE_MS = 60 * 1000
PROFILE_UPDATE_EVERY_MS = 24 * 60 * 60 * 1000 PROFILE_UPDATE_EVERY_MS = 24 * 60 * 60 * 1000
def __init__(self, hs): def __init__(self, hs):
super(ProfileHandler, self).__init__(hs) super(WorkerProfileHandler, self).__init__(hs)
self.federation = hs.get_federation_client() self.federation = hs.get_federation_client()
hs.get_federation_registry().register_query_handler( hs.get_federation_registry().register_query_handler(
@ -47,11 +47,6 @@ class ProfileHandler(BaseHandler):
self.user_directory_handler = hs.get_user_directory_handler() self.user_directory_handler = hs.get_user_directory_handler()
if hs.config.worker_app is None:
self.clock.looping_call(
self._start_update_remote_profile_cache, self.PROFILE_UPDATE_MS,
)
self._notify_master_profile_change = ( self._notify_master_profile_change = (
ReplicationHandleProfileChangeRestServlet.make_client(hs) ReplicationHandleProfileChangeRestServlet.make_client(hs)
) )
@ -298,6 +293,18 @@ class ProfileHandler(BaseHandler):
room_id, str(e.message) room_id, str(e.message)
) )
class MasterProfileHandler(WorkerProfileHandler):
PROFILE_UPDATE_MS = 60 * 1000
PROFILE_UPDATE_EVERY_MS = 24 * 60 * 60 * 1000
def __init__(self, hs):
super(MasterProfileHandler, self).__init__(hs)
self.clock.looping_call(
self._start_update_remote_profile_cache, self.PROFILE_UPDATE_MS,
)
def _start_update_remote_profile_cache(self): def _start_update_remote_profile_cache(self):
return run_as_background_process( return run_as_background_process(
"Update remote profile", self._update_remote_profile_cache, "Update remote profile", self._update_remote_profile_cache,

View File

@ -55,7 +55,7 @@ from synapse.handlers.initial_sync import InitialSyncHandler
from synapse.handlers.message import EventCreationHandler, MessageHandler from synapse.handlers.message import EventCreationHandler, MessageHandler
from synapse.handlers.pagination import PaginationHandler from synapse.handlers.pagination import PaginationHandler
from synapse.handlers.presence import PresenceHandler from synapse.handlers.presence import PresenceHandler
from synapse.handlers.profile import ProfileHandler from synapse.handlers.profile import MasterProfileHandler, WorkerProfileHandler
from synapse.handlers.read_marker import ReadMarkerHandler from synapse.handlers.read_marker import ReadMarkerHandler
from synapse.handlers.receipts import ReceiptsHandler from synapse.handlers.receipts import ReceiptsHandler
from synapse.handlers.room import RoomContextHandler, RoomCreationHandler from synapse.handlers.room import RoomContextHandler, RoomCreationHandler
@ -307,7 +307,10 @@ class HomeServer(object):
return InitialSyncHandler(self) return InitialSyncHandler(self)
def build_profile_handler(self): def build_profile_handler(self):
return ProfileHandler(self) if self.config.worker_app:
return WorkerProfileHandler(self)
else:
return MasterProfileHandler(self)
def build_event_creation_handler(self): def build_event_creation_handler(self):
return EventCreationHandler(self) return EventCreationHandler(self)

View File

@ -20,7 +20,7 @@ from twisted.internet import defer
import synapse.types import synapse.types
from synapse.api.errors import AuthError from synapse.api.errors import AuthError
from synapse.handlers.profile import ProfileHandler from synapse.handlers.profile import MasterProfileHandler
from synapse.types import UserID from synapse.types import UserID
from tests import unittest from tests import unittest
@ -29,7 +29,7 @@ from tests.utils import setup_test_homeserver
class ProfileHandlers(object): class ProfileHandlers(object):
def __init__(self, hs): def __init__(self, hs):
self.profile_handler = ProfileHandler(hs) self.profile_handler = MasterProfileHandler(hs)
class ProfileTestCase(unittest.TestCase): class ProfileTestCase(unittest.TestCase):