-
Notifications
You must be signed in to change notification settings - Fork 12
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
issue with long replies #9
Comments
Hi @vlabel. Can you help me to reproduce the issue with some docker/vagrant or curl commands? |
Hi, @wandenberg Thanks for answering this question. Here is a reproduce.
|
honestly I don't understand why hiredis just reads a buffer once and don't check if there is more data. If so -> why several existing adapters https://github.com/redis/hiredis/tree/master/adapters (and your) just skips add_read if event is active ? |
looks like there is a problem with big responses - more than char uf[1024*16];
https://github.com/redis/hiredis/blob/acc917548dcfd91e5d56387ed58b5f408cdb810a/hiredis.c#L933
Imagine we get response from SCAN or GET which is longer than 1024*16
The problem is that redis_nginx_read_event will be called only once - and hiredis redisBufferRead will read only part of data
a new epoll event will not be registered -> because connection->read->active == 1
Looks like if connection->read->active is true - we need to call ngx_del_event before adding it in redis_nginx_add_read
Got this problem with unix socket used
The text was updated successfully, but these errors were encountered: