Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit bf7ce92

Browse files
authored
Enable cancellation of GET /members and GET /state requests (#12708)
Enable cancellation of `GET /rooms/$room_id/members`, `GET /rooms/$room_id/state` and `GET /rooms/$room_id/state/$state_key/*` requests. Signed-off-by: Sean Quah <[email protected]>
1 parent db10f2c commit bf7ce92

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

changelog.d/12708.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Enable cancellation of `GET /rooms/$room_id/members`, `GET /rooms/$room_id/state` and `GET /rooms/$room_id/state/$event_type/*` requests.

synapse/http/server.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,9 @@ class SomeServlet(RestServlet):
139139
async def on_GET(self, request: SynapseRequest) -> ...:
140140
...
141141
"""
142-
if method.__name__ not in _cancellable_method_names:
142+
if method.__name__ not in _cancellable_method_names and not any(
143+
method.__name__.startswith(prefix) for prefix in _cancellable_method_names
144+
):
143145
raise ValueError(
144146
"@cancellable decorator can only be applied to servlet methods."
145147
)

synapse/rest/client/room.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
)
3535
from synapse.api.filtering import Filter
3636
from synapse.events.utils import format_event_for_client_v2
37-
from synapse.http.server import HttpServer
37+
from synapse.http.server import HttpServer, cancellable
3838
from synapse.http.servlet import (
3939
ResolveRoomIdMixin,
4040
RestServlet,
@@ -143,6 +143,7 @@ def register(self, http_server: HttpServer) -> None:
143143
self.__class__.__name__,
144144
)
145145

146+
@cancellable
146147
def on_GET_no_state_key(
147148
self, request: SynapseRequest, room_id: str, event_type: str
148149
) -> Awaitable[Tuple[int, JsonDict]]:
@@ -153,6 +154,7 @@ def on_PUT_no_state_key(
153154
) -> Awaitable[Tuple[int, JsonDict]]:
154155
return self.on_PUT(request, room_id, event_type, "")
155156

157+
@cancellable
156158
async def on_GET(
157159
self, request: SynapseRequest, room_id: str, event_type: str, state_key: str
158160
) -> Tuple[int, JsonDict]:
@@ -481,6 +483,7 @@ def __init__(self, hs: "HomeServer"):
481483
self.auth = hs.get_auth()
482484
self.store = hs.get_datastores().main
483485

486+
@cancellable
484487
async def on_GET(
485488
self, request: SynapseRequest, room_id: str
486489
) -> Tuple[int, JsonDict]:
@@ -602,6 +605,7 @@ def __init__(self, hs: "HomeServer"):
602605
self.message_handler = hs.get_message_handler()
603606
self.auth = hs.get_auth()
604607

608+
@cancellable
605609
async def on_GET(
606610
self, request: SynapseRequest, room_id: str
607611
) -> Tuple[int, List[JsonDict]]:

0 commit comments

Comments
 (0)