summary refs log tree commit diff
path: root/synapse/handlers/account_validity.py
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/handlers/account_validity.py')
-rw-r--r--synapse/handlers/account_validity.py24
1 files changed, 13 insertions, 11 deletions
diff --git a/synapse/handlers/account_validity.py b/synapse/handlers/account_validity.py

index 0c2bcda4d0..b68fef1336 100644 --- a/synapse/handlers/account_validity.py +++ b/synapse/handlers/account_validity.py
@@ -20,8 +20,6 @@ from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from typing import List -from twisted.internet import defer - from synapse.api.errors import StoreError from synapse.logging.context import make_deferred_yieldable from synapse.metrics.background_process_metrics import run_as_background_process @@ -90,12 +88,17 @@ class AccountValidityHandler(object): self.clock.looping_call(send_emails, 30 * 60 * 1000) - # If account_validity is enabled,check every hour to remove expired users from - # the user directory + # Mark users as inactive when they expired. Check once every hour if self._account_validity.enabled: - self.clock.looping_call( - self._mark_expired_users_as_inactive, 60 * 60 * 1000 - ) + + def mark_expired_users_as_inactive(): + # run as a background process to allow async functions to work + return run_as_background_process( + "_mark_expired_users_as_inactive", + self._mark_expired_users_as_inactive, + ) + + self.clock.looping_call(mark_expired_users_as_inactive, 60 * 60 * 1000) async def _send_renewal_emails(self): """Gets the list of users whose account is expiring in the amount of time @@ -286,8 +289,7 @@ class AccountValidityHandler(object): return expiration_ts - @defer.inlineCallbacks - def _mark_expired_users_as_inactive(self): + async def _mark_expired_users_as_inactive(self): """Iterate over active, expired users. Mark them as inactive in order to hide them from the user directory. @@ -295,7 +297,7 @@ class AccountValidityHandler(object): Deferred """ # Get active, expired users - active_expired_users = yield self.store.get_expired_users() + active_expired_users = await self.store.get_expired_users() # Mark each as non-active - yield self.profile_handler.set_active(active_expired_users, False, True) + await self.profile_handler.set_active(active_expired_users, False, True)