-
Notifications
You must be signed in to change notification settings - Fork 992
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
Request queue size is not cleared on reconnect #616
Comments
I am wrong, sorry. I just set too small number 1000, not enough for my case. |
Let's keep that one open to make sure Lettuce behaves as it should and does not break in reconnect scenarios. |
I get this exception not inside CompleteableFuture but in caller thread. It is strange behaviour also. |
That's the desired behavior to fail fast. |
I will retest this issue with Lettuce 4.4.2 released version with different requestQueue sizes. |
Lettuce now cancels overcommitted commands that exceed the queue size. Overcommitted commands can happen if commands were written to the protocol stack and a disconnect attempts to copy these commands to a smaller disconnected buffer.
Lettuce now cancels overcommitted commands that exceed the queue size. Overcommitted commands can happen if commands were written to the protocol stack and a disconnect attempts to copy these commands to a smaller disconnected buffer.
Lettuce now cancels overcommitted commands that exceed the queue size. Overcommitted commands can happen if commands were written to the protocol stack and a disconnect attempts to copy these commands to a smaller disconnected buffer.
Lettuce now cancels overcommitted commands that exceed the queue size. Overcommitted commands can happen if commands were written to the protocol stack and a disconnect attempts to copy these commands to a smaller disconnected buffer.
I added a guard to cancel overcommitted commands – if there are more commands queued across the different buffers than allowed by the request queue size. |
@mp911de |
This stacktrace consumes 100% CPU basically.
|
Thanks for reporting the issue. I pushed another change that does not require removal of the command from the queues but rather only enqueues the command to the stack if the write was successful. I deployed a snapshot of 4.4.2-SNAPSHOT ( |
Lettuce now appends written commands to the command stack using the write promise. Appending the command with the promise does not require command dequeueing on write failures but increases GC pressure.
@mp911de, thanks for quick fix. However, I cannot confirm it solves the problem. Application gets stuck 6 minutes before it store to Redis again. I see these two similar stacktraces in JMC. Looks like CommandWrapper.unwrap is time-consuming and should be avoided.
|
Btw 5463f78 this commit went through to lettuce-4.4.2-20171010.063534-9.jar? |
Yes, that particular commit was part of the mentioned snapshot build – I did the deployment locally and didn't pick the change to the affected branches yet.
The duplicate command check is in place for a good reason. I'm not quite sure how to proceed from here. The stacks from above relate to single-command dispatching and are not related to the original rebuildQueue/activation issue anymore. Again, without having a reproducible test case it's not possible to comprehend what's going on and where the actual issue happens. The original issue is solved and I'm going to merge https://github.com/lettuce-io/lettuce-core/tree/issue/616 to 4.4.2 and 4.5. |
Lettuce now appends written commands to the command stack using the write promise. Appending the command with the promise does not require command dequeueing on write failures but increases GC pressure.
Lettuce now appends written commands to the command stack using the write promise. Appending the command with the promise does not require command dequeueing on write failures but increases GC pressure.
Lettuce now appends written commands to the command stack using the write promise. Appending the command with the promise does not require command dequeueing on write failures but increases GC pressure.
Lettuce now appends written commands to the command stack using the write promise. Appending the command with the promise does not require command dequeueing on write failures but increases GC pressure.
Lettuce 4.4.1 is used. After reconnect to restarted Redis request queue size is not cleared and all incoming requests are rejected.
The text was updated successfully, but these errors were encountered: