From a1bcdc94da6d597c51b4eca0411a97a6460b482e Mon Sep 17 00:00:00 2001 From: Leo <86375512+select-case@users.noreply.github.com> Date: Fri, 16 Dec 2022 09:28:22 +0530 Subject: [PATCH] Fixed #34212 -- Made RedisCacheClient.incr() use write connection. Co-authored-by: Sin-Woo Bang --- django/core/cache/backends/redis.py | 2 +- tests/cache/tests.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/django/core/cache/backends/redis.py b/django/core/cache/backends/redis.py index c370ff5cb7..eda8ac9457 100644 --- a/django/core/cache/backends/redis.py +++ b/django/core/cache/backends/redis.py @@ -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) diff --git a/tests/cache/tests.py b/tests/cache/tests.py index c4d4522514..e280d3780b 100644 --- a/tests/cache/tests.py +++ b/tests/cache/tests.py @@ -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)