Skip to content
New issue

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

Memory leak on hgetall with RESP3 and hiredis #175

Open
HarukaMa opened this issue Nov 2, 2023 · 3 comments
Open

Memory leak on hgetall with RESP3 and hiredis #175

HarukaMa opened this issue Nov 2, 2023 · 3 comments

Comments

@HarukaMa
Copy link

HarukaMa commented Nov 2, 2023

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:

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.

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)

@lemurchik
Copy link

Looks like RESP3 usage has memory leaks for all commands that have map replies. I had it during streams and TS usage.

@InvisibleMan1306
Copy link

Is there any interest in fixing this? I can give it a try but I need to know where to start looking.

@hiimdoublej-swag
Copy link

Bump, could use a fix for this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants