Skip to content

Commit

Permalink
fix: prevent memory leak in _redlock_release of SimpleMemoryBackend (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
moshego189 authored and Dreamsorcerer committed Jan 22, 2024
1 parent f9156e3 commit 677b99c
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 3 deletions.
3 changes: 1 addition & 2 deletions aiocache/backends/memory.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,7 @@ async def _raw(self, command, *args, encoding="utf-8", _conn=None, **kwargs):

async def _redlock_release(self, key, value):
if self._cache.get(key) == value:
self._cache.pop(key)
return 1
return self.__delete(key)
return 0

def __delete(self, key):
Expand Down
6 changes: 5 additions & 1 deletion tests/ut/backends/test_memory.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,13 @@ async def test_raw(self, memory):

async def test_redlock_release(self, memory):
memory._cache.get.return_value = "lock"
fake = create_autospec(asyncio.TimerHandle, instance=True)
memory._handlers[Keys.KEY] = fake
assert await memory._redlock_release(Keys.KEY, "lock") == 1
memory._cache.get.assert_called_with(Keys.KEY)
memory._cache.pop.assert_called_with(Keys.KEY)
memory._cache.pop.assert_called_with(Keys.KEY, None)
assert fake.cancel.call_count == 1
assert Keys.KEY not in memory._handlers

async def test_redlock_release_nokey(self, memory):
memory._cache.get.return_value = None
Expand Down

0 comments on commit 677b99c

Please sign in to comment.