diff options
author | Andrew Morgan <andrew@amorgan.xyz> | 2020-03-23 17:02:59 +0000 |
---|---|---|
committer | Andrew Morgan <andrew@amorgan.xyz> | 2020-03-23 17:02:59 +0000 |
commit | b60633101ecd0c6090d84a7f140d884c79e20128 (patch) | |
tree | d1ccd5cae90630fe337ddac882c7cfc4db7f02c3 /synapse/handlers/federation.py | |
parent | Fix sending server up commands from workers (#6811) (diff) | |
parent | Resync remote device list when detected as stale. (#6786) (diff) | |
download | synapse-b60633101ecd0c6090d84a7f140d884c79e20128.tar.xz |
Resync remote device list when detected as stale. (#6786)
* commit 'b66032705': Resync remote device list when detected as stale. (#6786)
Diffstat (limited to 'synapse/handlers/federation.py')
-rw-r--r-- | synapse/handlers/federation.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index 754fd802c5..3e668c2424 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -57,6 +57,7 @@ from synapse.logging.context import ( run_in_background, ) from synapse.logging.utils import log_function +from synapse.replication.http.devices import ReplicationUserDevicesResyncRestServlet from synapse.replication.http.federation import ( ReplicationCleanRoomRestServlet, ReplicationFederationSendEventsRestServlet, @@ -156,6 +157,13 @@ class FederationHandler(BaseHandler): hs ) + if hs.config.worker_app: + self._user_device_resync = ReplicationUserDevicesResyncRestServlet.make_client( + hs + ) + else: + self._device_list_updater = hs.get_device_handler().device_list_updater + # When joining a room we need to queue any events for that room up self.room_queues = {} self._room_pdu_linearizer = Linearizer("fed_room_pdu") @@ -763,8 +771,14 @@ class FederationHandler(BaseHandler): await self.store.mark_remote_user_device_cache_as_stale( event.sender ) - # TODO: Poke something to start trying to refetch user's - # keys. + + # Immediately attempt a resync in the background + if self.config.worker_app: + return run_in_background(self._user_device_resync, event.sender) + else: + return run_in_background( + self._device_list_updater.user_device_resync, event.sender + ) @log_function async def backfill(self, dest, room_id, limit, extremities): |