Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

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

  • Loading branch information...
commit 44164c5c308da32a804dfb03ce0bffde2a6b4c56 1 parent b6aede3
@gsong gsong authored aaugustin committed
View
1  django/core/cache/backends/db.py
@@ -184,6 +184,7 @@ def clear(self):
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):
View
9 tests/regressiontests/cache/tests.py
@@ -18,7 +18,7 @@
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 @@ def test_second_call_doesnt_crash(self):
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):
Please sign in to comment.
Something went wrong with that request. Please try again.