We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
X-posting from redis/redis-py#3025.
Version: Redis 7.0.13, redis-py 5.0.1, hiredis 2.2.3
Platform: Python 3.11.6 on Debian sid
Description:
When using hiredis with RESP3, hgetall leaks memory. And it leaks hard - it seems all requested data will persistently live in the memory.
hgetall
It's easy to reproduce:
from redis import Redis r = Redis(protocol=3) for _ in range(1000000): r.hgetall("any_hash_key")
hget and hvals are fine, and when using RESP2 it works as intended as well.
hget
hvals
Stack from memray (most recent call last):
return await conn.retry.call_with_retry( return await do() return await self.parse_response(conn, command_name, **options) response = await connection.read_response() response = await self._parser.read_response( response = self._reader.gets()
All leaks happen on the last call. (Captured with program in production which uses async Redis, not from the example above)
The text was updated successfully, but these errors were encountered:
Looks like RESP3 usage has memory leaks for all commands that have map replies. I had it during streams and TS usage.
Sorry, something went wrong.
Is there any interest in fixing this? I can give it a try but I need to know where to start looking.
Bump, could use a fix for this
No branches or pull requests
X-posting from redis/redis-py#3025.
Version: Redis 7.0.13, redis-py 5.0.1, hiredis 2.2.3
Platform: Python 3.11.6 on Debian sid
Description:
When using hiredis with RESP3,
hgetall
leaks memory. And it leaks hard - it seems all requested data will persistently live in the memory.It's easy to reproduce:
hget
andhvals
are fine, and when using RESP2 it works as intended as well.Stack from memray (most recent call last):
All leaks happen on the last call. (Captured with program in production which uses async Redis, not from the example above)
The text was updated successfully, but these errors were encountered: