summary refs log tree commit diff
path: root/packages/overlays/matrix-synapse/patches/0001-Move-GET-devices-off-main-process-18355.patch
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--packages/overlays/matrix-synapse/patches/0001-Move-GET-devices-off-main-process-18355.patch98
1 files changed, 0 insertions, 98 deletions
diff --git a/packages/overlays/matrix-synapse/patches/0001-Move-GET-devices-off-main-process-18355.patch b/packages/overlays/matrix-synapse/patches/0001-Move-GET-devices-off-main-process-18355.patch
deleted file mode 100644

index a89c307..0000000 --- a/packages/overlays/matrix-synapse/patches/0001-Move-GET-devices-off-main-process-18355.patch +++ /dev/null
@@ -1,98 +0,0 @@ -From 33824495ba520f57eae3687db847175b40f71d73 Mon Sep 17 00:00:00 2001 -From: Erik Johnston <erikj@element.io> -Date: Fri, 25 Apr 2025 15:08:33 +0100 -Subject: [PATCH 01/74] Move GET /devices/ off main process (#18355) - -We can't move PUT/DELETE as they do need to happen on main process (due -to notification of device changes). - ---------- - -Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> ---- - changelog.d/18355.feature | 1 + - docs/workers.md | 1 + - synapse/rest/client/devices.py | 20 ++++++++++++++++++-- - 3 files changed, 20 insertions(+), 2 deletions(-) - create mode 100644 changelog.d/18355.feature - -diff --git a/changelog.d/18355.feature b/changelog.d/18355.feature -new file mode 100644 -index 0000000000..4813f0a291 ---- /dev/null -+++ b/changelog.d/18355.feature -@@ -0,0 +1 @@ -+Add support for handling `GET /devices/` on workers. -diff --git a/docs/workers.md b/docs/workers.md -index 08ee493da9..def902d24c 100644 ---- a/docs/workers.md -+++ b/docs/workers.md -@@ -280,6 +280,7 @@ Additionally, the following REST endpoints can be handled for GET requests: - - ^/_matrix/client/(api/v1|r0|v3|unstable)/pushrules/ - ^/_matrix/client/unstable/org.matrix.msc4140/delayed_events -+ ^/_matrix/client/(api/v1|r0|v3|unstable)/devices/ - - # Account data requests - ^/_matrix/client/(r0|v3|unstable)/.*/tags -diff --git a/synapse/rest/client/devices.py b/synapse/rest/client/devices.py -index 4607b23494..0b075cc2f2 100644 ---- a/synapse/rest/client/devices.py -+++ b/synapse/rest/client/devices.py -@@ -143,11 +143,11 @@ class DeviceRestServlet(RestServlet): - self.hs = hs - self.auth = hs.get_auth() - handler = hs.get_device_handler() -- assert isinstance(handler, DeviceHandler) - self.device_handler = handler - self.auth_handler = hs.get_auth_handler() - self._msc3852_enabled = hs.config.experimental.msc3852_enabled - self._msc3861_oauth_delegation_enabled = hs.config.experimental.msc3861.enabled -+ self._is_main_process = hs.config.worker.worker_app is None - - async def on_GET( - self, request: SynapseRequest, device_id: str -@@ -179,6 +179,14 @@ class DeviceRestServlet(RestServlet): - async def on_DELETE( - self, request: SynapseRequest, device_id: str - ) -> Tuple[int, JsonDict]: -+ # Can only be run on main process, as changes to device lists must -+ # happen on main. -+ if not self._is_main_process: -+ error_message = "DELETE on /devices/ must be routed to main process" -+ logger.error(error_message) -+ raise SynapseError(500, error_message) -+ assert isinstance(self.device_handler, DeviceHandler) -+ - requester = await self.auth.get_user_by_req(request) - - try: -@@ -223,6 +231,14 @@ class DeviceRestServlet(RestServlet): - async def on_PUT( - self, request: SynapseRequest, device_id: str - ) -> Tuple[int, JsonDict]: -+ # Can only be run on main process, as changes to device lists must -+ # happen on main. -+ if not self._is_main_process: -+ error_message = "PUT on /devices/ must be routed to main process" -+ logger.error(error_message) -+ raise SynapseError(500, error_message) -+ assert isinstance(self.device_handler, DeviceHandler) -+ - requester = await self.auth.get_user_by_req(request, allow_guest=True) - - body = parse_and_validate_json_object_from_request(request, self.PutBody) -@@ -585,9 +601,9 @@ def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None: - ): - DeleteDevicesRestServlet(hs).register(http_server) - DevicesRestServlet(hs).register(http_server) -+ DeviceRestServlet(hs).register(http_server) - - if hs.config.worker.worker_app is None: -- DeviceRestServlet(hs).register(http_server) - if hs.config.experimental.msc2697_enabled: - DehydratedDeviceServlet(hs).register(http_server) - ClaimDehydratedDeviceServlet(hs).register(http_server) --- -2.49.0 -