-
Notifications
You must be signed in to change notification settings - Fork 23.7k
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
script should not allow may-replicate commands when client pause write #10364
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
after applying the suggestions, you'll probably need to update the test too.
ad1c13b
to
bc308c3
Compare
@soloestoy @madolson i merged this and figured it doesn't need to be mentioned in the release notes since this problem is new to redis 7.0 (EVAL_RO is new). But it made me realize that maybe our decision in 6.2 to flag EVAL as reminding us that the main reason for adding EVAL_RO was for the command flags, so that cluster aware clients can propagate that to replicas too. |
not sure which way is better, but seems we have different behaviors between
BTW, transaction with write or may-replicate command performs like I think we should unify the behavior about |
yes, but the difference is that it won't fail all transactions, just ones with write / may-replicate commands. maybe that means the fix in this PR is bad and instead we need to consistently block may-replicate commands in EVAL_RO (so that we don't fail the script half way)? @MeirShpilraien @yossigo please join this discussion as well. |
I've discussed this with Yossi, we propose the following:
@madolson please join this discussion, in the context of #8820, i think it means again that the main purpose of EVAL_RO is for client library routing. |
Sorry I've been under rock.
|
@madolson what i meant in [3] is that same as EVAL_RO is allowed to run (get executed) while writes are paused, we should be allowing the same for normal EVAL if the script declared the |
we discussed this on a core-team meeting, and our conclusions are:
background:
|
this is a little bit complicated.
|
vote for option 2 |
yes, the obvious choice.. i already started working on it. trying to decide if it should be a very generic mechanism, a dirty hack, or something in between. |
#10744 feedback is welcome. |
In some special commands like
eval_ro
/fcall_ro
we allow no-writes commands. But may-replicate commands are no-writes too, that leads crash when client pause write: