diff --git a/aiocache/backends/memory.py b/aiocache/backends/memory.py index e3662707..61cd90aa 100644 --- a/aiocache/backends/memory.py +++ b/aiocache/backends/memory.py @@ -94,8 +94,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): diff --git a/tests/ut/backends/test_memory.py b/tests/ut/backends/test_memory.py index ea99d560..59a8504f 100644 --- a/tests/ut/backends/test_memory.py +++ b/tests/ut/backends/test_memory.py @@ -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