1
0
mirror of https://github.com/django/django.git synced 2025-10-24 06:06:09 +00:00

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
6 changed files with 57 additions and 5 deletions

View File

@@ -286,6 +286,17 @@ Messages to this logger have ``params`` and ``sql`` in their extra context (but
unlike ``django.db.backends``, not duration). The values have the same meaning
as explained in :ref:`django-db-logger`.
.. _django-contrib-sessions-logger:
``django.contrib.sessions``
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Log messages related to the :doc:`session framework</topics/http/sessions>`.
* Non-fatal errors occurring when using the
:class:`django.contrib.sessions.backends.cached_db.SessionStore` engine are
logged as ``ERROR`` messages with the corresponding traceback.
Handlers
--------

View File

@@ -115,7 +115,10 @@ Minor features
:mod:`django.contrib.sessions`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* ...
* :class:`django.contrib.sessions.backends.cached_db.SessionStore` now handles
exceptions when storing session information in the cache, logging proper
error messages with their traceback via the newly added
:ref:`sessions logger <django-contrib-sessions-logger>`.
:mod:`django.contrib.sitemaps`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@@ -76,9 +76,17 @@ Once your cache is configured, you have to choose between a database-backed
cache or a non-persistent cache.
The cached database backend (``cached_db``) uses a write-through cache --
session writes are applied to both the cache and the database. Session reads
use the cache, or the database if the data has been evicted from the cache. To
use this backend, set :setting:`SESSION_ENGINE` to
session writes are applied to both the database and cache, in that order. If
writing to the cache fails, the exception is handled and logged via the
:ref:`sessions logger <django-contrib-sessions-logger>`, to avoid failing an
otherwise successful write operation.
.. versionchanged:: 5.1
Handling and logging of exceptions when writing to the cache was added.
Session reads use the cache, or the database if the data has been evicted from
the cache. To use this backend, set :setting:`SESSION_ENGINE` to
``"django.contrib.sessions.backends.cached_db"``, and follow the configuration
instructions for the `using database-backed sessions`_.