From cc75c37f21280d3a670468a1d37be006cf4784ac Mon Sep 17 00:00:00 2001 From: Rebecca Graber Date: Fri, 24 Mar 2023 11:57:44 -0400 Subject: [PATCH] feat: add additional logging to edx-clear-expired-tokens (#31986) --- .../management/commands/edx_clear_expired_tokens.py | 7 ++++++- .../commands/tests/test_clear_expired_tokens.py | 10 +++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/openedx/core/djangoapps/oauth_dispatch/management/commands/edx_clear_expired_tokens.py b/openedx/core/djangoapps/oauth_dispatch/management/commands/edx_clear_expired_tokens.py index 7fea5e92c5..802af2559e 100644 --- a/openedx/core/djangoapps/oauth_dispatch/management/commands/edx_clear_expired_tokens.py +++ b/openedx/core/djangoapps/oauth_dispatch/management/commands/edx_clear_expired_tokens.py @@ -65,8 +65,9 @@ class Command(BaseCommand): # lint-amnesty, pylint: disable=missing-class-docst deletions = model.objects.filter(pk__in=batch_id_list).delete() deletion_count = deletions[0] total_deletions += deletion_count + logger.info(f"Removed {total_deletions} rows from {model.__name__} table") sleep(sleep_time) - message = f'Cleaned {total_deletions} rows from {model.__name__} table' + message = f'Final deletion count: Cleaned {total_deletions} rows from {model.__name__} table' logger.info(message) def get_expiration_time(self, now): # lint-amnesty, pylint: disable=missing-function-docstring @@ -91,20 +92,24 @@ class Command(BaseCommand): # lint-amnesty, pylint: disable=missing-class-docst refresh_expire_at = self.get_expiration_time(now) if options['revoked-tokens']: + logger.info("Removing revoked RefreshTokens") # remove revoked, as opposed to expired, RefreshTokens revoked = RefreshToken.objects.filter(revoked__lt=refresh_expire_at).exclude( application_id__in=excluded_application_ids) self.clear_table_data(revoked, batch_size, RefreshToken, sleep_time) if options['refresh-tokens']: + logger.info("Removing expired RefreshTokens") query_set = RefreshToken.objects.filter(access_token__expires__lt=refresh_expire_at).exclude( application_id__in=excluded_application_ids) self.clear_table_data(query_set, batch_size, RefreshToken, sleep_time) if options['access-tokens']: + logger.info("Removing expired AccessTokens") query_set = AccessToken.objects.filter(refresh_token__isnull=True, expires__lt=now) self.clear_table_data(query_set, batch_size, AccessToken, sleep_time) if options['grants']: + logger.info("Removing expired Grants") query_set = Grant.objects.filter(expires__lt=now) self.clear_table_data(query_set, batch_size, Grant, sleep_time) diff --git a/openedx/core/djangoapps/oauth_dispatch/management/commands/tests/test_clear_expired_tokens.py b/openedx/core/djangoapps/oauth_dispatch/management/commands/tests/test_clear_expired_tokens.py index c9486c5cc8..15982ac8de 100644 --- a/openedx/core/djangoapps/oauth_dispatch/management/commands/tests/test_clear_expired_tokens.py +++ b/openedx/core/djangoapps/oauth_dispatch/management/commands/tests/test_clear_expired_tokens.py @@ -72,26 +72,26 @@ class EdxClearExpiredTokensTests(TestCase): # lint-amnesty, pylint: disable=mis factories.RefreshTokenFactory(user=application.user, application=application, access_token=access_token) with LogCapture(LOGGER_NAME) as log: call_command('edx_clear_expired_tokens', sleep_time=0, excluded_application_ids=str(application.id)) - log.check( + log.check_present( ( LOGGER_NAME, 'INFO', - f'Cleaned {0} rows from {RefreshToken.__name__} table' + f'Final deletion count: Cleaned {0} rows from {RefreshToken.__name__} table' ), ( LOGGER_NAME, 'INFO', - f'Cleaned {0} rows from {RefreshToken.__name__} table' + f'Final deletion count: Cleaned {0} rows from {RefreshToken.__name__} table' ), ( LOGGER_NAME, 'INFO', - f'Cleaned {0} rows from {AccessToken.__name__} table', + f'Final deletion count: Cleaned {0} rows from {AccessToken.__name__} table', ), ( LOGGER_NAME, 'INFO', - f'Cleaned 0 rows from {Grant.__name__} table', + f'Final deletion count: Cleaned 0 rows from {Grant.__name__} table', ) ) assert RefreshToken.objects.filter(application=application).exists()