mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Use ClientRestResource on both the main process and workers. (#14528)
Add logic to ClientRestResource to decide whether to mount servlets or not based on whether the current process is a worker. This is clearer to see what a worker runs than the completely separate / copy & pasted list of servlets being mounted for workers.
This commit is contained in:
parent
890e5f610e
commit
f685318c2a
1
changelog.d/14528.misc
Normal file
1
changelog.d/14528.misc
Normal file
@ -0,0 +1 @@
|
|||||||
|
Share the `ClientRestResource` for both workers and the main process.
|
@ -44,40 +44,8 @@ from synapse.http.server import JsonResource, OptionsResource
|
|||||||
from synapse.logging.context import LoggingContext
|
from synapse.logging.context import LoggingContext
|
||||||
from synapse.metrics import METRICS_PREFIX, MetricsResource, RegistryProxy
|
from synapse.metrics import METRICS_PREFIX, MetricsResource, RegistryProxy
|
||||||
from synapse.replication.http import REPLICATION_PREFIX, ReplicationRestResource
|
from synapse.replication.http import REPLICATION_PREFIX, ReplicationRestResource
|
||||||
|
from synapse.rest import ClientRestResource
|
||||||
from synapse.rest.admin import register_servlets_for_media_repo
|
from synapse.rest.admin import register_servlets_for_media_repo
|
||||||
from synapse.rest.client import (
|
|
||||||
account_data,
|
|
||||||
events,
|
|
||||||
initial_sync,
|
|
||||||
login,
|
|
||||||
presence,
|
|
||||||
profile,
|
|
||||||
push_rule,
|
|
||||||
read_marker,
|
|
||||||
receipts,
|
|
||||||
relations,
|
|
||||||
room,
|
|
||||||
room_batch,
|
|
||||||
room_keys,
|
|
||||||
sendtodevice,
|
|
||||||
sync,
|
|
||||||
tags,
|
|
||||||
user_directory,
|
|
||||||
versions,
|
|
||||||
voip,
|
|
||||||
)
|
|
||||||
from synapse.rest.client.account import ThreepidRestServlet, WhoamiRestServlet
|
|
||||||
from synapse.rest.client.devices import DevicesRestServlet
|
|
||||||
from synapse.rest.client.keys import (
|
|
||||||
KeyChangesServlet,
|
|
||||||
KeyQueryServlet,
|
|
||||||
KeyUploadServlet,
|
|
||||||
OneTimeKeyServlet,
|
|
||||||
)
|
|
||||||
from synapse.rest.client.register import (
|
|
||||||
RegisterRestServlet,
|
|
||||||
RegistrationTokenValidityRestServlet,
|
|
||||||
)
|
|
||||||
from synapse.rest.health import HealthResource
|
from synapse.rest.health import HealthResource
|
||||||
from synapse.rest.key.v2 import KeyResource
|
from synapse.rest.key.v2 import KeyResource
|
||||||
from synapse.rest.synapse.client import build_synapse_client_resource_tree
|
from synapse.rest.synapse.client import build_synapse_client_resource_tree
|
||||||
@ -200,45 +168,7 @@ class GenericWorkerServer(HomeServer):
|
|||||||
if name == "metrics":
|
if name == "metrics":
|
||||||
resources[METRICS_PREFIX] = MetricsResource(RegistryProxy)
|
resources[METRICS_PREFIX] = MetricsResource(RegistryProxy)
|
||||||
elif name == "client":
|
elif name == "client":
|
||||||
resource = JsonResource(self, canonical_json=False)
|
resource: Resource = ClientRestResource(self)
|
||||||
|
|
||||||
RegisterRestServlet(self).register(resource)
|
|
||||||
RegistrationTokenValidityRestServlet(self).register(resource)
|
|
||||||
login.register_servlets(self, resource)
|
|
||||||
ThreepidRestServlet(self).register(resource)
|
|
||||||
WhoamiRestServlet(self).register(resource)
|
|
||||||
DevicesRestServlet(self).register(resource)
|
|
||||||
|
|
||||||
# Read-only
|
|
||||||
KeyUploadServlet(self).register(resource)
|
|
||||||
KeyQueryServlet(self).register(resource)
|
|
||||||
KeyChangesServlet(self).register(resource)
|
|
||||||
OneTimeKeyServlet(self).register(resource)
|
|
||||||
|
|
||||||
voip.register_servlets(self, resource)
|
|
||||||
push_rule.register_servlets(self, resource)
|
|
||||||
versions.register_servlets(self, resource)
|
|
||||||
|
|
||||||
profile.register_servlets(self, resource)
|
|
||||||
|
|
||||||
sync.register_servlets(self, resource)
|
|
||||||
events.register_servlets(self, resource)
|
|
||||||
room.register_servlets(self, resource, is_worker=True)
|
|
||||||
relations.register_servlets(self, resource)
|
|
||||||
room.register_deprecated_servlets(self, resource)
|
|
||||||
initial_sync.register_servlets(self, resource)
|
|
||||||
room_batch.register_servlets(self, resource)
|
|
||||||
room_keys.register_servlets(self, resource)
|
|
||||||
tags.register_servlets(self, resource)
|
|
||||||
account_data.register_servlets(self, resource)
|
|
||||||
receipts.register_servlets(self, resource)
|
|
||||||
read_marker.register_servlets(self, resource)
|
|
||||||
|
|
||||||
sendtodevice.register_servlets(self, resource)
|
|
||||||
|
|
||||||
user_directory.register_servlets(self, resource)
|
|
||||||
|
|
||||||
presence.register_servlets(self, resource)
|
|
||||||
|
|
||||||
resources[CLIENT_API_PREFIX] = resource
|
resources[CLIENT_API_PREFIX] = resource
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ from synapse.rest.client import (
|
|||||||
initial_sync,
|
initial_sync,
|
||||||
keys,
|
keys,
|
||||||
knock,
|
knock,
|
||||||
login as v1_login,
|
login,
|
||||||
login_token_request,
|
login_token_request,
|
||||||
logout,
|
logout,
|
||||||
mutual_rooms,
|
mutual_rooms,
|
||||||
@ -82,6 +82,10 @@ class ClientRestResource(JsonResource):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def register_servlets(client_resource: HttpServer, hs: "HomeServer") -> None:
|
def register_servlets(client_resource: HttpServer, hs: "HomeServer") -> None:
|
||||||
|
# Some servlets are only registered on the main process (and not worker
|
||||||
|
# processes).
|
||||||
|
is_main_process = hs.config.worker.worker_app is None
|
||||||
|
|
||||||
versions.register_servlets(hs, client_resource)
|
versions.register_servlets(hs, client_resource)
|
||||||
|
|
||||||
# Deprecated in r0
|
# Deprecated in r0
|
||||||
@ -92,45 +96,58 @@ class ClientRestResource(JsonResource):
|
|||||||
events.register_servlets(hs, client_resource)
|
events.register_servlets(hs, client_resource)
|
||||||
|
|
||||||
room.register_servlets(hs, client_resource)
|
room.register_servlets(hs, client_resource)
|
||||||
v1_login.register_servlets(hs, client_resource)
|
login.register_servlets(hs, client_resource)
|
||||||
profile.register_servlets(hs, client_resource)
|
profile.register_servlets(hs, client_resource)
|
||||||
presence.register_servlets(hs, client_resource)
|
presence.register_servlets(hs, client_resource)
|
||||||
directory.register_servlets(hs, client_resource)
|
if is_main_process:
|
||||||
|
directory.register_servlets(hs, client_resource)
|
||||||
voip.register_servlets(hs, client_resource)
|
voip.register_servlets(hs, client_resource)
|
||||||
pusher.register_servlets(hs, client_resource)
|
if is_main_process:
|
||||||
|
pusher.register_servlets(hs, client_resource)
|
||||||
push_rule.register_servlets(hs, client_resource)
|
push_rule.register_servlets(hs, client_resource)
|
||||||
logout.register_servlets(hs, client_resource)
|
if is_main_process:
|
||||||
|
logout.register_servlets(hs, client_resource)
|
||||||
sync.register_servlets(hs, client_resource)
|
sync.register_servlets(hs, client_resource)
|
||||||
filter.register_servlets(hs, client_resource)
|
if is_main_process:
|
||||||
|
filter.register_servlets(hs, client_resource)
|
||||||
account.register_servlets(hs, client_resource)
|
account.register_servlets(hs, client_resource)
|
||||||
register.register_servlets(hs, client_resource)
|
register.register_servlets(hs, client_resource)
|
||||||
auth.register_servlets(hs, client_resource)
|
if is_main_process:
|
||||||
|
auth.register_servlets(hs, client_resource)
|
||||||
receipts.register_servlets(hs, client_resource)
|
receipts.register_servlets(hs, client_resource)
|
||||||
read_marker.register_servlets(hs, client_resource)
|
read_marker.register_servlets(hs, client_resource)
|
||||||
room_keys.register_servlets(hs, client_resource)
|
room_keys.register_servlets(hs, client_resource)
|
||||||
keys.register_servlets(hs, client_resource)
|
keys.register_servlets(hs, client_resource)
|
||||||
tokenrefresh.register_servlets(hs, client_resource)
|
if is_main_process:
|
||||||
|
tokenrefresh.register_servlets(hs, client_resource)
|
||||||
tags.register_servlets(hs, client_resource)
|
tags.register_servlets(hs, client_resource)
|
||||||
account_data.register_servlets(hs, client_resource)
|
account_data.register_servlets(hs, client_resource)
|
||||||
report_event.register_servlets(hs, client_resource)
|
if is_main_process:
|
||||||
openid.register_servlets(hs, client_resource)
|
report_event.register_servlets(hs, client_resource)
|
||||||
notifications.register_servlets(hs, client_resource)
|
openid.register_servlets(hs, client_resource)
|
||||||
|
notifications.register_servlets(hs, client_resource)
|
||||||
devices.register_servlets(hs, client_resource)
|
devices.register_servlets(hs, client_resource)
|
||||||
thirdparty.register_servlets(hs, client_resource)
|
if is_main_process:
|
||||||
|
thirdparty.register_servlets(hs, client_resource)
|
||||||
sendtodevice.register_servlets(hs, client_resource)
|
sendtodevice.register_servlets(hs, client_resource)
|
||||||
user_directory.register_servlets(hs, client_resource)
|
user_directory.register_servlets(hs, client_resource)
|
||||||
room_upgrade_rest_servlet.register_servlets(hs, client_resource)
|
if is_main_process:
|
||||||
|
room_upgrade_rest_servlet.register_servlets(hs, client_resource)
|
||||||
room_batch.register_servlets(hs, client_resource)
|
room_batch.register_servlets(hs, client_resource)
|
||||||
capabilities.register_servlets(hs, client_resource)
|
if is_main_process:
|
||||||
account_validity.register_servlets(hs, client_resource)
|
capabilities.register_servlets(hs, client_resource)
|
||||||
|
account_validity.register_servlets(hs, client_resource)
|
||||||
relations.register_servlets(hs, client_resource)
|
relations.register_servlets(hs, client_resource)
|
||||||
password_policy.register_servlets(hs, client_resource)
|
if is_main_process:
|
||||||
knock.register_servlets(hs, client_resource)
|
password_policy.register_servlets(hs, client_resource)
|
||||||
|
knock.register_servlets(hs, client_resource)
|
||||||
|
|
||||||
# moving to /_synapse/admin
|
# moving to /_synapse/admin
|
||||||
admin.register_servlets_for_client_rest_resource(hs, client_resource)
|
if is_main_process:
|
||||||
|
admin.register_servlets_for_client_rest_resource(hs, client_resource)
|
||||||
|
|
||||||
# unstable
|
# unstable
|
||||||
mutual_rooms.register_servlets(hs, client_resource)
|
if is_main_process:
|
||||||
login_token_request.register_servlets(hs, client_resource)
|
mutual_rooms.register_servlets(hs, client_resource)
|
||||||
rendezvous.register_servlets(hs, client_resource)
|
login_token_request.register_servlets(hs, client_resource)
|
||||||
|
rendezvous.register_servlets(hs, client_resource)
|
||||||
|
@ -875,19 +875,21 @@ class AccountStatusRestServlet(RestServlet):
|
|||||||
|
|
||||||
|
|
||||||
def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
|
def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
|
||||||
EmailPasswordRequestTokenRestServlet(hs).register(http_server)
|
if hs.config.worker.worker_app is None:
|
||||||
PasswordRestServlet(hs).register(http_server)
|
EmailPasswordRequestTokenRestServlet(hs).register(http_server)
|
||||||
DeactivateAccountRestServlet(hs).register(http_server)
|
PasswordRestServlet(hs).register(http_server)
|
||||||
EmailThreepidRequestTokenRestServlet(hs).register(http_server)
|
DeactivateAccountRestServlet(hs).register(http_server)
|
||||||
MsisdnThreepidRequestTokenRestServlet(hs).register(http_server)
|
EmailThreepidRequestTokenRestServlet(hs).register(http_server)
|
||||||
AddThreepidEmailSubmitTokenServlet(hs).register(http_server)
|
MsisdnThreepidRequestTokenRestServlet(hs).register(http_server)
|
||||||
AddThreepidMsisdnSubmitTokenServlet(hs).register(http_server)
|
AddThreepidEmailSubmitTokenServlet(hs).register(http_server)
|
||||||
|
AddThreepidMsisdnSubmitTokenServlet(hs).register(http_server)
|
||||||
ThreepidRestServlet(hs).register(http_server)
|
ThreepidRestServlet(hs).register(http_server)
|
||||||
ThreepidAddRestServlet(hs).register(http_server)
|
if hs.config.worker.worker_app is None:
|
||||||
ThreepidBindRestServlet(hs).register(http_server)
|
ThreepidAddRestServlet(hs).register(http_server)
|
||||||
ThreepidUnbindRestServlet(hs).register(http_server)
|
ThreepidBindRestServlet(hs).register(http_server)
|
||||||
ThreepidDeleteRestServlet(hs).register(http_server)
|
ThreepidUnbindRestServlet(hs).register(http_server)
|
||||||
|
ThreepidDeleteRestServlet(hs).register(http_server)
|
||||||
WhoamiRestServlet(hs).register(http_server)
|
WhoamiRestServlet(hs).register(http_server)
|
||||||
|
|
||||||
if hs.config.experimental.msc3720_enabled:
|
if hs.config.worker.worker_app is None and hs.config.experimental.msc3720_enabled:
|
||||||
AccountStatusRestServlet(hs).register(http_server)
|
AccountStatusRestServlet(hs).register(http_server)
|
||||||
|
@ -342,8 +342,10 @@ class ClaimDehydratedDeviceServlet(RestServlet):
|
|||||||
|
|
||||||
|
|
||||||
def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
|
def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
|
||||||
DeleteDevicesRestServlet(hs).register(http_server)
|
if hs.config.worker.worker_app is None:
|
||||||
|
DeleteDevicesRestServlet(hs).register(http_server)
|
||||||
DevicesRestServlet(hs).register(http_server)
|
DevicesRestServlet(hs).register(http_server)
|
||||||
DeviceRestServlet(hs).register(http_server)
|
if hs.config.worker.worker_app is None:
|
||||||
DehydratedDeviceServlet(hs).register(http_server)
|
DeviceRestServlet(hs).register(http_server)
|
||||||
ClaimDehydratedDeviceServlet(hs).register(http_server)
|
DehydratedDeviceServlet(hs).register(http_server)
|
||||||
|
ClaimDehydratedDeviceServlet(hs).register(http_server)
|
||||||
|
@ -376,5 +376,6 @@ def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
|
|||||||
KeyQueryServlet(hs).register(http_server)
|
KeyQueryServlet(hs).register(http_server)
|
||||||
KeyChangesServlet(hs).register(http_server)
|
KeyChangesServlet(hs).register(http_server)
|
||||||
OneTimeKeyServlet(hs).register(http_server)
|
OneTimeKeyServlet(hs).register(http_server)
|
||||||
SigningKeyUploadServlet(hs).register(http_server)
|
if hs.config.worker.worker_app is None:
|
||||||
SignaturesUploadServlet(hs).register(http_server)
|
SigningKeyUploadServlet(hs).register(http_server)
|
||||||
|
SignaturesUploadServlet(hs).register(http_server)
|
||||||
|
@ -949,9 +949,10 @@ def _calculate_registration_flows(
|
|||||||
|
|
||||||
|
|
||||||
def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
|
def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
|
||||||
EmailRegisterRequestTokenRestServlet(hs).register(http_server)
|
if hs.config.worker.worker_app is None:
|
||||||
MsisdnRegisterRequestTokenRestServlet(hs).register(http_server)
|
EmailRegisterRequestTokenRestServlet(hs).register(http_server)
|
||||||
UsernameAvailabilityRestServlet(hs).register(http_server)
|
MsisdnRegisterRequestTokenRestServlet(hs).register(http_server)
|
||||||
RegistrationSubmitTokenServlet(hs).register(http_server)
|
UsernameAvailabilityRestServlet(hs).register(http_server)
|
||||||
|
RegistrationSubmitTokenServlet(hs).register(http_server)
|
||||||
RegistrationTokenValidityRestServlet(hs).register(http_server)
|
RegistrationTokenValidityRestServlet(hs).register(http_server)
|
||||||
RegisterRestServlet(hs).register(http_server)
|
RegisterRestServlet(hs).register(http_server)
|
||||||
|
@ -1395,9 +1395,7 @@ class RoomSummaryRestServlet(ResolveRoomIdMixin, RestServlet):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def register_servlets(
|
def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
|
||||||
hs: "HomeServer", http_server: HttpServer, is_worker: bool = False
|
|
||||||
) -> None:
|
|
||||||
RoomStateEventRestServlet(hs).register(http_server)
|
RoomStateEventRestServlet(hs).register(http_server)
|
||||||
RoomMemberListRestServlet(hs).register(http_server)
|
RoomMemberListRestServlet(hs).register(http_server)
|
||||||
JoinedRoomMemberListRestServlet(hs).register(http_server)
|
JoinedRoomMemberListRestServlet(hs).register(http_server)
|
||||||
@ -1421,7 +1419,7 @@ def register_servlets(
|
|||||||
TimestampLookupRestServlet(hs).register(http_server)
|
TimestampLookupRestServlet(hs).register(http_server)
|
||||||
|
|
||||||
# Some servlets only get registered for the main process.
|
# Some servlets only get registered for the main process.
|
||||||
if not is_worker:
|
if hs.config.worker.worker_app is None:
|
||||||
RoomForgetRestServlet(hs).register(http_server)
|
RoomForgetRestServlet(hs).register(http_server)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user