Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed incompatibility with django-redis >= 4.12.0 #416

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

rzelazo
Copy link

@rzelazo rzelazo commented Sep 5, 2023

Fixed bug caused by trying to use global level logger variable from django_redis.cache that has been moved to django_redis.cache.RedisCache instance attribute since django-redis 4.12.0 release.

django-redis package allows to ignore cache exceptions by setting the "IGNORE_EXCEPTIONS": True key in the cache options in settings.py:

CACHES = {
    "default": {
        # ...
        "OPTIONS": {
            "IGNORE_EXCEPTIONS": True,
        }
    }
}

or by defining the following global variable in settings.py:

DJANGO_REDIS_IGNORE_EXCEPTIONS = True

When ignoring exceptions with IGNORE_EXCEPTIONS or DJANGO_REDIS_IGNORE_EXCEPTIONS, you may optionally log exceptions using the global variable DJANGO_REDIS_LOG_IGNORED_EXCEPTIONS in your settings file:

DJANGO_REDIS_LOG_IGNORED_EXCEPTIONS = True

django_prometheus RedisCache wrapper class respects these settings by inheriting them from django_redis.cache.RedisCache. However, in case when "ignore exceptions, but log them" strategy is used, django_prometheus RedisCache wrapper tries to access the global variable django_redis.cache.logger. Unfortunately, this variable has been moved from global variable to django_redis.cache.RedisCache instance attribute since django-redis 4.12.0 release (specifically by this commit jazzband/django-redis@b7d64f0).

This commit fixes the bug simply by changing the reference to logger from django_redis.cache.logger global variable to the instance attribute logger inherited by django_prometheus RedisCache wrapper.

Fixed bug caused by trying to use global level logger variable from django_redis.cache that has been moved to django_redis.cache.RedisCache instance attribute since django_redis 4.12.0 release.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant