mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-26 03:25:53 +03:00
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 <seanq@element.io>
This commit is contained in:
parent
db10f2c037
commit
bf7ce92bf7
3 changed files with 9 additions and 2 deletions
1
changelog.d/12708.misc
Normal file
1
changelog.d/12708.misc
Normal file
|
@ -0,0 +1 @@
|
|||
Enable cancellation of `GET /rooms/$room_id/members`, `GET /rooms/$room_id/state` and `GET /rooms/$room_id/state/$event_type/*` requests.
|
|
@ -139,7 +139,9 @@ def cancellable(method: F) -> F:
|
|||
async def on_GET(self, request: SynapseRequest) -> ...:
|
||||
...
|
||||
"""
|
||||
if method.__name__ not in _cancellable_method_names:
|
||||
if method.__name__ not in _cancellable_method_names and not any(
|
||||
method.__name__.startswith(prefix) for prefix in _cancellable_method_names
|
||||
):
|
||||
raise ValueError(
|
||||
"@cancellable decorator can only be applied to servlet methods."
|
||||
)
|
||||
|
|
|
@ -34,7 +34,7 @@ from synapse.api.errors import (
|
|||
)
|
||||
from synapse.api.filtering import Filter
|
||||
from synapse.events.utils import format_event_for_client_v2
|
||||
from synapse.http.server import HttpServer
|
||||
from synapse.http.server import HttpServer, cancellable
|
||||
from synapse.http.servlet import (
|
||||
ResolveRoomIdMixin,
|
||||
RestServlet,
|
||||
|
@ -143,6 +143,7 @@ class RoomStateEventRestServlet(TransactionRestServlet):
|
|||
self.__class__.__name__,
|
||||
)
|
||||
|
||||
@cancellable
|
||||
def on_GET_no_state_key(
|
||||
self, request: SynapseRequest, room_id: str, event_type: str
|
||||
) -> Awaitable[Tuple[int, JsonDict]]:
|
||||
|
@ -153,6 +154,7 @@ class RoomStateEventRestServlet(TransactionRestServlet):
|
|||
) -> Awaitable[Tuple[int, JsonDict]]:
|
||||
return self.on_PUT(request, room_id, event_type, "")
|
||||
|
||||
@cancellable
|
||||
async def on_GET(
|
||||
self, request: SynapseRequest, room_id: str, event_type: str, state_key: str
|
||||
) -> Tuple[int, JsonDict]:
|
||||
|
@ -481,6 +483,7 @@ class RoomMemberListRestServlet(RestServlet):
|
|||
self.auth = hs.get_auth()
|
||||
self.store = hs.get_datastores().main
|
||||
|
||||
@cancellable
|
||||
async def on_GET(
|
||||
self, request: SynapseRequest, room_id: str
|
||||
) -> Tuple[int, JsonDict]:
|
||||
|
@ -602,6 +605,7 @@ class RoomStateRestServlet(RestServlet):
|
|||
self.message_handler = hs.get_message_handler()
|
||||
self.auth = hs.get_auth()
|
||||
|
||||
@cancellable
|
||||
async def on_GET(
|
||||
self, request: SynapseRequest, room_id: str
|
||||
) -> Tuple[int, List[JsonDict]]:
|
||||
|
|
Loading…
Reference in a new issue