script should not allow may-replicate commands when client pause write#10364
script should not allow may-replicate commands when client pause write#10364oranagra merged 1 commit intoredis:unstablefrom
Conversation
oranagra
left a comment
There was a problem hiding this comment.
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_rowe allow no-writes commands. But may-replicate commands are no-writes too, that leads crash when client pause write: