Fixed #34806 -- Made cached_db session backend resilient to cache write errors.

Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
This commit is contained in:
Sulabh Katila 2024-02-21 19:51:58 -05:00 committed by GitHub
parent 6feaad9113
commit eceb5e2eea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 57 additions and 5 deletions

View file

@ -517,6 +517,22 @@ class CacheDBSessionTests(SessionTestsMixin, TestCase):
with self.assertRaises(InvalidCacheBackendError):
self.backend()
@override_settings(
CACHES={"default": {"BACKEND": "cache.failing_cache.CacheClass"}}
)
def test_cache_set_failure_non_fatal(self):
"""Failing to write to the cache does not raise errors."""
session = self.backend()
session["key"] = "val"
with self.assertLogs("django.contrib.sessions", "ERROR") as cm:
session.save()
# A proper ERROR log message was recorded.
log = cm.records[-1]
self.assertEqual(log.message, f"Error saving to cache ({session._cache})")
self.assertEqual(str(log.exc_info[1]), "Faked exception saving to cache")
@override_settings(USE_TZ=True)
class CacheDBSessionWithTimeZoneTests(CacheDBSessionTests):