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):
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):
......
......@@ -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):
......
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