diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py
index 7e9d065f50..c8bf2439af 100644
--- a/synapse/handlers/register.py
+++ b/synapse/handlers/register.py
@@ -16,7 +16,7 @@
"""Contains functions for registering clients."""
import logging
-from typing import TYPE_CHECKING, Iterable, List, Optional, Set, Tuple
+from typing import TYPE_CHECKING, Iterable, List, Optional, Tuple
from prometheus_client import Counter
from typing_extensions import TypedDict
@@ -40,7 +40,6 @@ from synapse.appservice import ApplicationService
from synapse.config.server import is_threepid_reserved
from synapse.handlers.device import DeviceHandler
from synapse.http.servlet import assert_params_in_dict
-from synapse.metrics.background_process_metrics import run_as_background_process
from synapse.replication.http.login import RegisterDeviceReplicationServlet
from synapse.replication.http.register import (
ReplicationPostRegisterActionsServlet,
@@ -49,7 +48,6 @@ from synapse.replication.http.register import (
from synapse.spam_checker_api import RegistrationBehaviour
from synapse.types import RoomAlias, UserID, create_requester
from synapse.types.state import StateFilter
-from synapse.util.iterutils import batch_iter
if TYPE_CHECKING:
from synapse.server import HomeServer
@@ -112,10 +110,6 @@ class RegistrationHandler:
self._server_notices_mxid = hs.config.servernotices.server_notices_mxid
self._server_name = hs.hostname
- # The set of users that we're currently pruning devices for. Ensures
- # that we don't have two such jobs for the same user running at once.
- self._currently_pruning_devices_for_users: Set[str] = set()
-
self.spam_checker = hs.get_spam_checker()
if hs.config.worker.worker_app:
@@ -127,10 +121,7 @@ class RegistrationHandler:
ReplicationPostRegisterActionsServlet.make_client(hs)
)
else:
- device_handler = hs.get_device_handler()
- assert isinstance(device_handler, DeviceHandler)
- self.device_handler = device_handler
-
+ self.device_handler = hs.get_device_handler()
self._register_device_client = self.register_device_inner
self.pusher_pool = hs.get_pusherpool()
@@ -860,9 +851,6 @@ class RegistrationHandler:
# This can only run on the main process.
assert isinstance(self.device_handler, DeviceHandler)
- # Prune the user's device list if they already have a lot of devices.
- await self._maybe_prune_too_many_devices(user_id)
-
registered_device_id = await self.device_handler.check_device_registered(
user_id,
device_id,
@@ -931,42 +919,6 @@ class RegistrationHandler:
"refresh_token": refresh_token,
}
- async def _maybe_prune_too_many_devices(self, user_id: str) -> None:
- """Delete any excess old devices this user may have."""
-
- if user_id in self._currently_pruning_devices_for_users:
- return
-
- # We also cap the number of users whose devices we prune at the same
- # time, to avoid performance problems.
- if len(self._currently_pruning_devices_for_users) > 5:
- return
-
- device_ids = await self.store.check_too_many_devices_for_user(user_id)
- if not device_ids:
- return
-
- logger.info("Pruning %d stale devices for %s", len(device_ids), user_id)
-
- # Now spawn a background loop that deletes said devices.
- async def _prune_too_many_devices_loop() -> None:
- if user_id in self._currently_pruning_devices_for_users:
- return
-
- self._currently_pruning_devices_for_users.add(user_id)
-
- try:
- for batch in batch_iter(device_ids, 10):
- await self.device_handler.delete_devices(user_id, batch)
-
- await self.clock.sleep(60)
- finally:
- self._currently_pruning_devices_for_users.discard(user_id)
-
- run_as_background_process(
- "_prune_too_many_devices_loop", _prune_too_many_devices_loop
- )
-
async def post_registration_actions(
self, user_id: str, auth_result: dict, access_token: Optional[str]
) -> None:
|