-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
Multi callbacks not being called - no data sent over the network #1029
Comments
Thanks a lot for your detailed error report! I guess it was difficult enough to get so far and you do not have a reproducible case for me?
So even if the connection dropped, it could not interfere with the synchronous execution of cork and uncork. I also checked the Node.js source and can't see any problem there. |
Sorry, I don't think I'm going to be able to create a test-case. It doesn't feel like it is anything to do with the connection dropping (I believe it happens the same if offline queue is on) - as I have hooked up event handlers that do fire if the connection goes away (even when it is in this locked up state). I have a gut feeling it is probably down to a call happening before the multi, and the multi is generally the next call to be made - possibly a SET with the binary image data. I'll keep digging and see if I can spot anything |
Maybe. It's still weird that this is possible as there's no other cork / uncork command anywhere. While being on it please also check if this happens with v.2.5.3 too. I did not change anything that I see connected to this issue, but who knows. |
@dhendo ping |
@BridgeAR Sorry, been busy investigating:
I've been refactoring dhendo/sifaka@6ffc05a - specifically around checking that the node_redis instance is connected and ready. It does look better (I'm doing a phased rollout now), so I'll report back. I haven't spotted any issues in node_redis, and 2.6.0-1 looks good |
I'm seeing an issue whereby the callback from a multi() never gets called - it looks similar to some of the other issues raised (that got resolved by upgrading or by separating out the multi).
I'm using https://github.com/dhendo/sifaka to cache some rendered images - among other things it does a get + hget wrapped in a multi (https://github.com/dhendo/sifaka/blob/master/backends/redis.js#L102).
This works OK for a while, but occasionally, while under heavy concurrent load (e.g. repeatedly refreshing a page which contains multiple image requests), callbacks stop being returned (mainly from the get() as described above, as it is the first call that is hit as a request comes in, so it gets no further).
Diagnosis steps:
this.stream.write(str + data)
etcSo it looks to me like an issue where the socket is never correctly uncorked at some point (or recorked if another request comes in before the previous one has returned)?
The text was updated successfully, but these errors were encountered: