From e169234f13f096d1f13e883d1b75c3031daf233e Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Mon, 28 Dec 2020 12:27:20 -0500 Subject: [PATCH 1/4] Re-arrange worker servlets. --- synapse/app/generic_worker.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/synapse/app/generic_worker.py b/synapse/app/generic_worker.py index 1b511890aa36..1f128985c336 100644 --- a/synapse/app/generic_worker.py +++ b/synapse/app/generic_worker.py @@ -513,12 +513,6 @@ def _listen_http(self, listener_config: ListenerConfig): elif name == "client": resource = JsonResource(self, canonical_json=False) - PublicRoomListRestServlet(self).register(resource) - RoomMemberListRestServlet(self).register(resource) - JoinedRoomMemberListRestServlet(self).register(resource) - RoomStateRestServlet(self).register(resource) - RoomEventContextServlet(self).register(resource) - RoomMessageListRestServlet(self).register(resource) RegisterRestServlet(self).register(resource) LoginRestServlet(self).register(resource) ThreepidRestServlet(self).register(resource) @@ -527,17 +521,30 @@ def _listen_http(self, listener_config: ListenerConfig): VoipRestServlet(self).register(resource) PushRuleRestServlet(self).register(resource) VersionsRestServlet(self).register(resource) - RoomSendEventRestServlet(self).register(resource) - RoomMembershipRestServlet(self).register(resource) + + # The below are all the servlets from rest/client/v1/room except + # RoomCreateRestServlet, RoomForgetRestServlet, + # RoomRedactEventRestServlet, SearchRestServlet, + # JoinedRoomsRestServlet, RoomEventServlet, and + # RoomAliasListServlet. RoomStateEventRestServlet(self).register(resource) + RoomMemberListRestServlet(self).register(resource) + JoinedRoomMemberListRestServlet(self).register(resource) + RoomMessageListRestServlet(self).register(resource) JoinRoomAliasServlet(self).register(resource) + RoomMembershipRestServlet(self).register(resource) + RoomSendEventRestServlet(self).register(resource) + PublicRoomListRestServlet(self).register(resource) + RoomStateRestServlet(self).register(resource) + RoomTypingRestServlet(self).register(resource) + RoomEventContextServlet(self).register(resource) + ProfileAvatarURLRestServlet(self).register(resource) ProfileDisplaynameRestServlet(self).register(resource) ProfileRestServlet(self).register(resource) KeyUploadServlet(self).register(resource) AccountDataServlet(self).register(resource) RoomAccountDataServlet(self).register(resource) - RoomTypingRestServlet(self).register(resource) sync.register_servlets(self, resource) events.register_servlets(self, resource) From f7e46f41f88747796d702a08b963962f36c1efac Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Mon, 28 Dec 2020 12:31:05 -0500 Subject: [PATCH 2/4] Don't duplicate logic. --- synapse/app/generic_worker.py | 36 +++------------------------------- synapse/rest/client/v1/room.py | 19 ++++++++++-------- 2 files changed, 14 insertions(+), 41 deletions(-) diff --git a/synapse/app/generic_worker.py b/synapse/app/generic_worker.py index 1f128985c336..cb3528d6b4c0 100644 --- a/synapse/app/generic_worker.py +++ b/synapse/app/generic_worker.py @@ -89,7 +89,7 @@ ToDeviceStream, ) from synapse.rest.admin import register_servlets_for_media_repo -from synapse.rest.client.v1 import events +from synapse.rest.client.v1 import events, room from synapse.rest.client.v1.initial_sync import InitialSyncRestServlet from synapse.rest.client.v1.login import LoginRestServlet from synapse.rest.client.v1.profile import ( @@ -98,20 +98,6 @@ ProfileRestServlet, ) from synapse.rest.client.v1.push_rule import PushRuleRestServlet -from synapse.rest.client.v1.room import ( - JoinedRoomMemberListRestServlet, - JoinRoomAliasServlet, - PublicRoomListRestServlet, - RoomEventContextServlet, - RoomInitialSyncRestServlet, - RoomMemberListRestServlet, - RoomMembershipRestServlet, - RoomMessageListRestServlet, - RoomSendEventRestServlet, - RoomStateEventRestServlet, - RoomStateRestServlet, - RoomTypingRestServlet, -) from synapse.rest.client.v1.voip import VoipRestServlet from synapse.rest.client.v2_alpha import groups, sync, user_directory from synapse.rest.client.v2_alpha._base import client_patterns @@ -522,23 +508,6 @@ def _listen_http(self, listener_config: ListenerConfig): PushRuleRestServlet(self).register(resource) VersionsRestServlet(self).register(resource) - # The below are all the servlets from rest/client/v1/room except - # RoomCreateRestServlet, RoomForgetRestServlet, - # RoomRedactEventRestServlet, SearchRestServlet, - # JoinedRoomsRestServlet, RoomEventServlet, and - # RoomAliasListServlet. - RoomStateEventRestServlet(self).register(resource) - RoomMemberListRestServlet(self).register(resource) - JoinedRoomMemberListRestServlet(self).register(resource) - RoomMessageListRestServlet(self).register(resource) - JoinRoomAliasServlet(self).register(resource) - RoomMembershipRestServlet(self).register(resource) - RoomSendEventRestServlet(self).register(resource) - PublicRoomListRestServlet(self).register(resource) - RoomStateRestServlet(self).register(resource) - RoomTypingRestServlet(self).register(resource) - RoomEventContextServlet(self).register(resource) - ProfileAvatarURLRestServlet(self).register(resource) ProfileDisplaynameRestServlet(self).register(resource) ProfileRestServlet(self).register(resource) @@ -548,8 +517,9 @@ def _listen_http(self, listener_config: ListenerConfig): sync.register_servlets(self, resource) events.register_servlets(self, resource) + room.register_servlets(self, resource, True) + room.register_deprecated_servlets(self, resource) InitialSyncRestServlet(self).register(resource) - RoomInitialSyncRestServlet(self).register(resource) user_directory.register_servlets(self, resource) diff --git a/synapse/rest/client/v1/room.py b/synapse/rest/client/v1/room.py index 93c06afe2708..6497f7af3017 100644 --- a/synapse/rest/client/v1/room.py +++ b/synapse/rest/client/v1/room.py @@ -963,25 +963,28 @@ def register_txn_path(servlet, regex_string, http_server, with_get=False): ) -def register_servlets(hs, http_server): +def register_servlets(hs, http_server, is_worker=False): RoomStateEventRestServlet(hs).register(http_server) - RoomCreateRestServlet(hs).register(http_server) RoomMemberListRestServlet(hs).register(http_server) JoinedRoomMemberListRestServlet(hs).register(http_server) RoomMessageListRestServlet(hs).register(http_server) JoinRoomAliasServlet(hs).register(http_server) - RoomForgetRestServlet(hs).register(http_server) RoomMembershipRestServlet(hs).register(http_server) RoomSendEventRestServlet(hs).register(http_server) PublicRoomListRestServlet(hs).register(http_server) RoomStateRestServlet(hs).register(http_server) - RoomRedactEventRestServlet(hs).register(http_server) RoomTypingRestServlet(hs).register(http_server) - SearchRestServlet(hs).register(http_server) - JoinedRoomsRestServlet(hs).register(http_server) - RoomEventServlet(hs).register(http_server) RoomEventContextServlet(hs).register(http_server) - RoomAliasListServlet(hs).register(http_server) + + # Some servlets only get registered for the main process. + if not is_worker: + RoomCreateRestServlet(hs).register(http_server) + RoomForgetRestServlet(hs).register(http_server) + RoomRedactEventRestServlet(hs).register(http_server) + SearchRestServlet(hs).register(http_server) + JoinedRoomsRestServlet(hs).register(http_server) + RoomEventServlet(hs).register(http_server) + RoomAliasListServlet(hs).register(http_server) def register_deprecated_servlets(hs, http_server): From 8c0f10c3021e98e5b57052d7674456cab6641ccc Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Mon, 28 Dec 2020 12:32:00 -0500 Subject: [PATCH 3/4] Register the redact endpoint on workers. --- docs/workers.md | 1 + synapse/rest/client/v1/room.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/workers.md b/docs/workers.md index c53d1bd2ff4b..2c06a11d33ad 100644 --- a/docs/workers.md +++ b/docs/workers.md @@ -225,6 +225,7 @@ expressions: ^/_matrix/client/(r0|unstable)/auth/.*/fallback/web$ # Event sending requests + ^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/redact ^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/send ^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/state/ ^/_matrix/client/(api/v1|r0|unstable)/rooms/.*/(join|invite|leave|ban|unban|kick)$ diff --git a/synapse/rest/client/v1/room.py b/synapse/rest/client/v1/room.py index 6497f7af3017..5647e8c5777a 100644 --- a/synapse/rest/client/v1/room.py +++ b/synapse/rest/client/v1/room.py @@ -973,6 +973,7 @@ def register_servlets(hs, http_server, is_worker=False): RoomSendEventRestServlet(hs).register(http_server) PublicRoomListRestServlet(hs).register(http_server) RoomStateRestServlet(hs).register(http_server) + RoomRedactEventRestServlet(hs).register(http_server) RoomTypingRestServlet(hs).register(http_server) RoomEventContextServlet(hs).register(http_server) @@ -980,7 +981,6 @@ def register_servlets(hs, http_server, is_worker=False): if not is_worker: RoomCreateRestServlet(hs).register(http_server) RoomForgetRestServlet(hs).register(http_server) - RoomRedactEventRestServlet(hs).register(http_server) SearchRestServlet(hs).register(http_server) JoinedRoomsRestServlet(hs).register(http_server) RoomEventServlet(hs).register(http_server) From 0a28c7ceb8a8950bab5457b3a046dcf7ebfb0d82 Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Mon, 28 Dec 2020 12:41:01 -0500 Subject: [PATCH 4/4] Add newsfragment. --- changelog.d/8994.feature | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/8994.feature diff --git a/changelog.d/8994.feature b/changelog.d/8994.feature new file mode 100644 index 000000000000..76aeb185cb63 --- /dev/null +++ b/changelog.d/8994.feature @@ -0,0 +1 @@ +Allow running the redact endpoint on workers.