Split RoomMemberHandler into base and master class

The intention here is to split the class into the bits that can be done
on workers and the bits that have to be done on the master.

In future there will also be a class that can be run on the worker,
which will delegate work to the master when necessary.
This commit is contained in:
Erik Johnston 2018-03-13 13:49:13 +00:00
parent bf8e97bd3c
commit b78717b87b
2 changed files with 139 additions and 98 deletions

View file

@ -46,7 +46,7 @@ from synapse.handlers.device import DeviceHandler
from synapse.handlers.e2e_keys import E2eKeysHandler
from synapse.handlers.presence import PresenceHandler
from synapse.handlers.room_list import RoomListHandler
from synapse.handlers.room_member import RoomMemberHandler
from synapse.handlers.room_member import RoomMemberMasterHandler
from synapse.handlers.set_password import SetPasswordHandler
from synapse.handlers.sync import SyncHandler
from synapse.handlers.typing import TypingHandler
@ -387,7 +387,9 @@ class HomeServer(object):
return SpamChecker(self)
def build_room_member_handler(self):
return RoomMemberHandler(self)
if self.config.worker_app:
return Exception("Can't use RoomMemberHandler on workers")
return RoomMemberMasterHandler(self)
def build_federation_registry(self):
return FederationHandlerRegistry()