Skip to content

Commit

Permalink
Fix incorrect attribute reuse
Browse files Browse the repository at this point in the history
Adjusting test cases for CacheProxyConnection, cache key should not reuse in different `read_response`.
  • Loading branch information
zhousheng06 committed Dec 16, 2024
1 parent 9d5751d commit 999e3e6
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 23 deletions.
6 changes: 5 additions & 1 deletion redis/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -870,9 +870,11 @@ def read_response(
and self._cache.get(self._current_command_cache_key).status
!= CacheEntryStatus.IN_PROGRESS
):
return copy.deepcopy(
res = copy.deepcopy(
self._cache.get(self._current_command_cache_key).cache_value
)
self._current_command_cache_key = None
return res

response = self._conn.read_response(
disable_decoding=disable_decoding,
Expand All @@ -898,6 +900,8 @@ def read_response(
cache_entry.cache_value = response
self._cache.set(cache_entry)

self._current_command_cache_key = None

return response

def pack_command(self, *args):
Expand Down
23 changes: 1 addition & 22 deletions tests/test_connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -468,24 +468,6 @@ def test_read_response_returns_cached_reply(self, mock_cache, mock_connection):
status=CacheEntryStatus.IN_PROGRESS,
connection_ref=mock_connection,
),
CacheEntry(
cache_key=CacheKey(command="GET", redis_keys=("foo",)),
cache_value=b"bar",
status=CacheEntryStatus.VALID,
connection_ref=mock_connection,
),
CacheEntry(
cache_key=CacheKey(command="GET", redis_keys=("foo",)),
cache_value=b"bar",
status=CacheEntryStatus.VALID,
connection_ref=mock_connection,
),
CacheEntry(
cache_key=CacheKey(command="GET", redis_keys=("foo",)),
cache_value=b"bar",
status=CacheEntryStatus.VALID,
connection_ref=mock_connection,
),
]
mock_connection.send_command.return_value = Any
mock_connection.read_response.return_value = b"bar"
Expand All @@ -496,9 +478,9 @@ def test_read_response_returns_cached_reply(self, mock_cache, mock_connection):
)
proxy_connection.send_command(*["GET", "foo"], **{"keys": ["foo"]})
assert proxy_connection.read_response() == b"bar"
assert proxy_connection._current_command_cache_key == None
assert proxy_connection.read_response() == b"bar"

mock_connection.read_response.assert_called_once()
mock_cache.set.assert_has_calls(
[
call(
Expand All @@ -525,9 +507,6 @@ def test_read_response_returns_cached_reply(self, mock_cache, mock_connection):
call(CacheKey(command="GET", redis_keys=("foo",))),
call(CacheKey(command="GET", redis_keys=("foo",))),
call(CacheKey(command="GET", redis_keys=("foo",))),
call(CacheKey(command="GET", redis_keys=("foo",))),
call(CacheKey(command="GET", redis_keys=("foo",))),
call(CacheKey(command="GET", redis_keys=("foo",))),
]
)

Expand Down

0 comments on commit 999e3e6

Please sign in to comment.