Commit 44164c5c authored by George Song's avatar George Song Committed by Aymeric Augustin
Browse files

Fixed #19896 -- Committed after clearing cache in the database.

parent b6aede32
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -184,6 +184,7 @@ class DatabaseCache(BaseDatabaseCache):
        table = connections[db].ops.quote_name(self._table)
        cursor = connections[db].cursor()
        cursor.execute('DELETE FROM %s' % table)
        transaction.commit_unless_managed(using=db)

# For backwards compatibility
class CacheClass(DatabaseCache):
+8 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ from django.core import management
from django.core.cache import get_cache
from django.core.cache.backends.base import (CacheKeyWarning,
    InvalidCacheBackendError)
from django.db import router
from django.db import router, transaction
from django.http import (HttpResponse, HttpRequest, StreamingHttpResponse,
    QueryDict)
from django.middleware.cache import (FetchFromCacheMiddleware,
@@ -836,6 +836,13 @@ class DBCacheTests(BaseCacheTests, TransactionTestCase):
                interactive=False
            )

    def test_clear_commits_transaction(self):
        # Ensure the database transaction is committed (#19896)
        self.cache.set("key1", "spam")
        self.cache.clear()
        transaction.rollback()
        self.assertEqual(self.cache.get("key1"), None)


@override_settings(USE_TZ=True)
class DBCacheWithTimeZoneTests(DBCacheTests):