diff --git a/synapse/federation/federation_client.py b/synapse/federation/federation_client.py
index fee1477ab6..3b85b135e0 100644
--- a/synapse/federation/federation_client.py
+++ b/synapse/federation/federation_client.py
@@ -128,7 +128,7 @@ class FederationClient(FederationBase):
reset_expiry_on_get=False,
)
- def _clear_tried_cache(self) -> None:
+ def _clear_tried_cache(self):
"""Clear pdu_destination_tried cache"""
now = self._clock.time_msec()
@@ -800,7 +800,7 @@ class FederationClient(FederationBase):
no servers successfully handle the request.
"""
- async def send_request(destination: str) -> SendJoinResult:
+ async def send_request(destination) -> SendJoinResult:
response = await self._do_send_join(room_version, destination, pdu)
# If an event was returned (and expected to be returned):
@@ -1395,28 +1395,11 @@ class FederationClient(FederationBase):
async def send_request(
destination: str,
) -> Tuple[JsonDict, Sequence[JsonDict], Sequence[str]]:
- try:
- res = await self.transport_layer.get_room_hierarchy(
- destination=destination,
- room_id=room_id,
- suggested_only=suggested_only,
- )
- except HttpResponseException as e:
- # If an error is received that is due to an unrecognised endpoint,
- # fallback to the unstable endpoint. Otherwise consider it a
- # legitmate error and raise.
- if not self._is_unknown_endpoint(e):
- raise
-
- logger.debug(
- "Couldn't fetch room hierarchy with the v1 API, falling back to the unstable API"
- )
-
- res = await self.transport_layer.get_room_hierarchy_unstable(
- destination=destination,
- room_id=room_id,
- suggested_only=suggested_only,
- )
+ res = await self.transport_layer.get_room_hierarchy(
+ destination=destination,
+ room_id=room_id,
+ suggested_only=suggested_only,
+ )
room = res.get("room")
if not isinstance(room, dict):
@@ -1466,10 +1449,6 @@ class FederationClient(FederationBase):
if e.code != 502:
raise
- logger.debug(
- "Couldn't fetch room hierarchy, falling back to the spaces API"
- )
-
# Fallback to the old federation API and translate the results if
# no servers implement the new API.
#
@@ -1517,83 +1496,6 @@ class FederationClient(FederationBase):
self._get_room_hierarchy_cache[(room_id, suggested_only)] = result
return result
- async def timestamp_to_event(
- self, destination: str, room_id: str, timestamp: int, direction: str
- ) -> "TimestampToEventResponse":
- """
- Calls a remote federating server at `destination` asking for their
- closest event to the given timestamp in the given direction. Also
- validates the response to always return the expected keys or raises an
- error.
-
- Args:
- destination: Domain name of the remote homeserver
- room_id: Room to fetch the event from
- timestamp: The point in time (inclusive) we should navigate from in
- the given direction to find the closest event.
- direction: ["f"|"b"] to indicate whether we should navigate forward
- or backward from the given timestamp to find the closest event.
-
- Returns:
- A parsed TimestampToEventResponse including the closest event_id
- and origin_server_ts
-
- Raises:
- Various exceptions when the request fails
- InvalidResponseError when the response does not have the correct
- keys or wrong types
- """
- remote_response = await self.transport_layer.timestamp_to_event(
- destination, room_id, timestamp, direction
- )
-
- if not isinstance(remote_response, dict):
- raise InvalidResponseError(
- "Response must be a JSON dictionary but received %r" % remote_response
- )
-
- try:
- return TimestampToEventResponse.from_json_dict(remote_response)
- except ValueError as e:
- raise InvalidResponseError(str(e))
-
-
-@attr.s(frozen=True, slots=True, auto_attribs=True)
-class TimestampToEventResponse:
- """Typed response dictionary for the federation /timestamp_to_event endpoint"""
-
- event_id: str
- origin_server_ts: int
-
- # the raw data, including the above keys
- data: JsonDict
-
- @classmethod
- def from_json_dict(cls, d: JsonDict) -> "TimestampToEventResponse":
- """Parsed response from the federation /timestamp_to_event endpoint
-
- Args:
- d: JSON object response to be parsed
-
- Raises:
- ValueError if d does not the correct keys or they are the wrong types
- """
-
- event_id = d.get("event_id")
- if not isinstance(event_id, str):
- raise ValueError(
- "Invalid response: 'event_id' must be a str but received %r" % event_id
- )
-
- origin_server_ts = d.get("origin_server_ts")
- if not isinstance(origin_server_ts, int):
- raise ValueError(
- "Invalid response: 'origin_server_ts' must be a int but received %r"
- % origin_server_ts
- )
-
- return cls(event_id, origin_server_ts, d)
-
@attr.s(frozen=True, slots=True, auto_attribs=True)
class FederationSpaceSummaryEventResult:
|