Fixed #34212 -- Made RedisCacheClient.incr() use write connection.

Co-authored-by: Sin-Woo Bang <sinwoobang@gmail.com>
This commit is contained in:
Leo 2022-12-16 09:28:22 +05:30 committed by Mariusz Felisiak
parent 1e4da43955
commit a1bcdc94da
2 changed files with 9 additions and 1 deletions

View File

@ -130,7 +130,7 @@ class RedisCacheClient:
return bool(client.exists(key))
def incr(self, key, delta):
client = self.get_client(key)
client = self.get_client(key, write=True)
if not client.exists(key):
raise ValueError("Key '%s' not found." % key)
return client.incr(key, delta)

View File

@ -1787,6 +1787,14 @@ class RedisCacheTests(BaseCacheTests, TestCase):
def incr_decr_type_error(self):
return self.lib.ResponseError
def test_incr_write_connection(self):
cache.set("number", 42)
with mock.patch(
"django.core.cache.backends.redis.RedisCacheClient.get_client"
) as mocked_get_client:
cache.incr("number")
self.assertEqual(mocked_get_client.call_args.kwargs, {"write": True})
def test_cache_client_class(self):
self.assertIs(cache._class, RedisCacheClient)
self.assertIsInstance(cache._cache, RedisCacheClient)