diff --git a/synapse/handlers/federation_event.py b/synapse/handlers/federation_event.py
index 982c8d3b2f..9a08618da5 100644
--- a/synapse/handlers/federation_event.py
+++ b/synapse/handlers/federation_event.py
@@ -70,7 +70,9 @@ from synapse.logging.opentracing import (
trace,
)
from synapse.metrics.background_process_metrics import run_as_background_process
-from synapse.replication.http.devices import ReplicationUserDevicesResyncRestServlet
+from synapse.replication.http.devices import (
+ ReplicationMultiUserDevicesResyncRestServlet,
+)
from synapse.replication.http.federation import (
ReplicationFederationSendEventsRestServlet,
)
@@ -155,10 +157,13 @@ class FederationEventHandler:
self._get_room_member_handler = hs.get_room_member_handler
self._federation_client = hs.get_federation_client()
- self._third_party_event_rules = hs.get_third_party_event_rules()
+ self._third_party_event_rules = (
+ hs.get_module_api_callbacks().third_party_event_rules
+ )
self._notifier = hs.get_notifier()
self._is_mine_id = hs.is_mine_id
+ self._is_mine_server_name = hs.is_mine_server_name
self._server_name = hs.hostname
self._instance_name = hs.get_instance_name()
@@ -167,8 +172,8 @@ class FederationEventHandler:
self._send_events = ReplicationFederationSendEventsRestServlet.make_client(hs)
if hs.config.worker.worker_app:
- self._user_device_resync = (
- ReplicationUserDevicesResyncRestServlet.make_client(hs)
+ self._multi_user_device_resync = (
+ ReplicationMultiUserDevicesResyncRestServlet.make_client(hs)
)
else:
self._device_list_updater = hs.get_device_handler().device_list_updater
@@ -684,7 +689,7 @@ class FederationEventHandler:
server from invalid events (there is probably no point in trying to
re-fetch invalid events from every other HS in the room.)
"""
- if dest == self._server_name:
+ if self._is_mine_server_name(dest):
raise SynapseError(400, "Can't backfill from self.")
events = await self._federation_client.backfill(
@@ -885,6 +890,11 @@ class FederationEventHandler:
# Continue on with the events that are new to us.
new_events.append(event)
+ set_tag(
+ SynapseTags.RESULT_PREFIX + "new_events.length",
+ str(len(new_events)),
+ )
+
# We want to sort these by depth so we process them and
# tell clients about them in order.
sorted_events = sorted(new_events, key=lambda x: x.depth)
@@ -1487,9 +1497,11 @@ class FederationEventHandler:
# Immediately attempt a resync in the background
if self._config.worker.worker_app:
- await self._user_device_resync(user_id=sender)
+ await self._multi_user_device_resync(user_ids=[sender])
else:
- await self._device_list_updater.user_device_resync(sender)
+ await self._device_list_updater.multi_user_device_resync(
+ user_ids=[sender]
+ )
except Exception:
logger.exception("Failed to resync device for %s", sender)
@@ -1515,7 +1527,10 @@ class FederationEventHandler:
# support it or the event is not from the room creator.
room_version = await self._store.get_room_version(marker_event.room_id)
create_event = await self._store.get_create_event_for_room(marker_event.room_id)
- room_creator = create_event.content.get(EventContentFields.ROOM_CREATOR)
+ if not room_version.msc2175_implicit_room_creator:
+ room_creator = create_event.content.get(EventContentFields.ROOM_CREATOR)
+ else:
+ room_creator = create_event.sender
if not room_version.msc2716_historical and (
not self._config.experimental.msc2716_enabled
or marker_event.sender != room_creator
|