mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-28 07:00:51 +03:00
Move clean_room_for_join to master
This commit is contained in:
parent
72d1902bbe
commit
b179537f2a
2 changed files with 49 additions and 2 deletions
|
@ -50,6 +50,7 @@ from synapse.crypto.event_signing import (
|
||||||
)
|
)
|
||||||
from synapse.events.validator import EventValidator
|
from synapse.events.validator import EventValidator
|
||||||
from synapse.replication.http.federation import (
|
from synapse.replication.http.federation import (
|
||||||
|
ReplicationCleanRoomRestServlet,
|
||||||
ReplicationFederationSendEventsRestServlet,
|
ReplicationFederationSendEventsRestServlet,
|
||||||
)
|
)
|
||||||
from synapse.replication.http.membership import ReplicationUserJoinedLeftRoomRestServlet
|
from synapse.replication.http.membership import ReplicationUserJoinedLeftRoomRestServlet
|
||||||
|
@ -104,6 +105,9 @@ class FederationHandler(BaseHandler):
|
||||||
self._notify_user_membership_change = (
|
self._notify_user_membership_change = (
|
||||||
ReplicationUserJoinedLeftRoomRestServlet.make_client(hs)
|
ReplicationUserJoinedLeftRoomRestServlet.make_client(hs)
|
||||||
)
|
)
|
||||||
|
self._clean_room_for_join_client = (
|
||||||
|
ReplicationCleanRoomRestServlet.make_client(hs)
|
||||||
|
)
|
||||||
|
|
||||||
# When joining a room we need to queue any events for that room up
|
# When joining a room we need to queue any events for that room up
|
||||||
self.room_queues = {}
|
self.room_queues = {}
|
||||||
|
@ -2388,7 +2392,15 @@ class FederationHandler(BaseHandler):
|
||||||
)
|
)
|
||||||
|
|
||||||
def _clean_room_for_join(self, room_id):
|
def _clean_room_for_join(self, room_id):
|
||||||
# TODO move this out to master
|
"""Called to clean up any data in DB for a given room, ready for the
|
||||||
|
server to join the room.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
room_id (str)
|
||||||
|
"""
|
||||||
|
if self.config.worker_app:
|
||||||
|
return self._clean_room_for_join_client(room_id)
|
||||||
|
else:
|
||||||
return self.store.clean_room_for_join(room_id)
|
return self.store.clean_room_for_join(room_id)
|
||||||
|
|
||||||
def user_joined_room(self, user, room_id):
|
def user_joined_room(self, user, room_id):
|
||||||
|
|
|
@ -256,7 +256,42 @@ class ReplicationGetQueryRestServlet(ReplicationEndpoint):
|
||||||
defer.returnValue((200, result))
|
defer.returnValue((200, result))
|
||||||
|
|
||||||
|
|
||||||
|
class ReplicationCleanRoomRestServlet(ReplicationEndpoint):
|
||||||
|
"""Called to clean up any data in DB for a given room, ready for the
|
||||||
|
server to join the room.
|
||||||
|
|
||||||
|
Request format:
|
||||||
|
|
||||||
|
POST /_synapse/replication/fed_query/:fed_cleanup_room/:txn_id
|
||||||
|
|
||||||
|
{}
|
||||||
|
"""
|
||||||
|
|
||||||
|
NAME = "fed_cleanup_room"
|
||||||
|
PATH_ARGS = ("room_id",)
|
||||||
|
|
||||||
|
def __init__(self, hs):
|
||||||
|
super(ReplicationCleanRoomRestServlet, self).__init__(hs)
|
||||||
|
|
||||||
|
self.store = hs.get_datastore()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _serialize_payload(room_id, args):
|
||||||
|
"""
|
||||||
|
Args:
|
||||||
|
room_id (str)
|
||||||
|
"""
|
||||||
|
return {}
|
||||||
|
|
||||||
|
@defer.inlineCallbacks
|
||||||
|
def _handle_request(self, request, room_id):
|
||||||
|
yield self.store.clean_room_for_join(room_id)
|
||||||
|
|
||||||
|
defer.returnValue((200, {}))
|
||||||
|
|
||||||
|
|
||||||
def register_servlets(hs, http_server):
|
def register_servlets(hs, http_server):
|
||||||
ReplicationFederationSendEventsRestServlet(hs).register(http_server)
|
ReplicationFederationSendEventsRestServlet(hs).register(http_server)
|
||||||
ReplicationFederationSendEduRestServlet(hs).register(http_server)
|
ReplicationFederationSendEduRestServlet(hs).register(http_server)
|
||||||
ReplicationGetQueryRestServlet(hs).register(http_server)
|
ReplicationGetQueryRestServlet(hs).register(http_server)
|
||||||
|
ReplicationCleanRoomRestServlet(hs).register(http_server)
|
||||||
|
|
Loading…
Reference in a new issue