Kaydet (Commit) 44164c5c authored tarafından George Song's avatar George Song Kaydeden (comit) Aymeric Augustin

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

üst b6aede32
...@@ -184,6 +184,7 @@ class DatabaseCache(BaseDatabaseCache): ...@@ -184,6 +184,7 @@ class DatabaseCache(BaseDatabaseCache):
table = connections[db].ops.quote_name(self._table) table = connections[db].ops.quote_name(self._table)
cursor = connections[db].cursor() cursor = connections[db].cursor()
cursor.execute('DELETE FROM %s' % table) cursor.execute('DELETE FROM %s' % table)
transaction.commit_unless_managed(using=db)
# For backwards compatibility # For backwards compatibility
class CacheClass(DatabaseCache): class CacheClass(DatabaseCache):
......
...@@ -18,7 +18,7 @@ from django.core import management ...@@ -18,7 +18,7 @@ from django.core import management
from django.core.cache import get_cache from django.core.cache import get_cache
from django.core.cache.backends.base import (CacheKeyWarning, from django.core.cache.backends.base import (CacheKeyWarning,
InvalidCacheBackendError) InvalidCacheBackendError)
from django.db import router from django.db import router, transaction
from django.http import (HttpResponse, HttpRequest, StreamingHttpResponse, from django.http import (HttpResponse, HttpRequest, StreamingHttpResponse,
QueryDict) QueryDict)
from django.middleware.cache import (FetchFromCacheMiddleware, from django.middleware.cache import (FetchFromCacheMiddleware,
...@@ -836,6 +836,13 @@ class DBCacheTests(BaseCacheTests, TransactionTestCase): ...@@ -836,6 +836,13 @@ class DBCacheTests(BaseCacheTests, TransactionTestCase):
interactive=False 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) @override_settings(USE_TZ=True)
class DBCacheWithTimeZoneTests(DBCacheTests): class DBCacheWithTimeZoneTests(DBCacheTests):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment