-
Notifications
You must be signed in to change notification settings - Fork 981
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
"eval" within "multi" crashes DF #457
Comments
Once this is resolved, please update the list of supported tests in ioredis |
This is triggered by "transaction.cc:420] Check failed: 0u == txid_ (0 vs. 1)"
|
Thanks Boaz. Can you open a branch Bug457 that adds this test to
dragonfly_test?
…On Mon, Nov 7, 2022, 10:09 Boaz Sade ***@***.***> wrote:
This is triggered by "transaction.cc:420] Check failed: 0u == txid_ (0 vs.
1)"
To reproduce this the only requirement is to do:
1. MULTI
2. EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first
second
3. EXEC
This would trigger the crash.
When in release mode, and there are more commands in the transaction
it would not crash but hung
—
Reply to this email directly, view it on GitHub
<#457 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AA4BFCEVAN5ULW72QQI5CN3WHC2KPANCNFSM6AAAAAARVEDIBA>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
yes |
The issue is triggered by running transaction within transaction. This happens because we have:
The fix for this would require supporting this type of flow - starting a context of transaction and then running a script that requires its own context. For now I will try to issue a workaround that would fail this operation (would not allow for running script inside "multi"). so the result would not be either a crash or that the context is hung and the the application cannot even shutdown as it is now. |
…inside multi dragonflydb#457 Signed-off-by: Boaz Sade <boaz@dragonflydb.io>
Signed-off-by: Boaz Sade <boaz@dragonflydb.io>
Signed-off-by: Boaz Sade <boaz@dragonflydb.io>
Fixed |
Describe the bug
When running pipeline test from ioredis, we are getting stuck. This is a result of a pipeline test that execute the commands: set, eval and get. The end result is that we are not returning to the client and DF cannot be shutdown as it is stuck on a command that never completed.
To Reproduce
Steps to reproduce the behavior:
1.multi
2. set foo asdf
3. EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
4. get foo
5. exec
This command would not "return", the connection will stay opened even when the connection is closed on the Redis, client side.
You would not be able to shutdown DF.
Expected behavior
This should return a result for the client:
And we should be able to shutdown DF after that.
Environment (please complete the following information):
Reproducible Code Snippet
Additional context
This code would work:
The text was updated successfully, but these errors were encountered: