-
Notifications
You must be signed in to change notification settings - Fork 16
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
Added new routing option: SingleNodeRoutingInfo::RandomPrimary
#194
Added new routing option: SingleNodeRoutingInfo::RandomPrimary
#194
Conversation
Signed-off-by: Eran Ifrah <[email protected]>
Signed-off-by: Eran Ifrah <[email protected]>
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.
LGTM
@@ -730,6 +727,9 @@ where | |||
SingleNodeRoutingInfo::SpecificNode(route) => { | |||
self.get_connection(&mut connections, route)? | |||
} | |||
SingleNodeRoutingInfo::RandomPrimary => { |
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.
Why is there no distinction at line 462 between RandomPrimary and Random, but here they are processed differently? Is there a bug at line 462?
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.
- The code for
RandomPrimary
is correct - The
RoutingInfo::SingleNode(SingleNodeRoutingInfo::Random)
was not changed (replaced the old code with a call toRoute::new_random_primary()
Having said that, there is no bug on that line, however there can be an optimization: for example we could add a check to see whether the cmd is readonly, and in case it does, we could allow "read-from-replica" instead of "SlotAddr::Master`.
If you think that this is correct, we could open a new bug and fix it in a different PR (I prefer not to mix changes in a single PR)
Signed-off-by: Eran Ifrah <[email protected]>
redis/src/cluster_routing.rs
Outdated
|
||
/// Choose a random slot from `0..SLOT_SIZE` (excluding) | ||
fn random_slot() -> u16 { | ||
use rand::Rng; |
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.
please put "use" alongside all the others at the top
Signed-off-by: Eran Ifrah <[email protected]>
RandomPrimary
.Route::new_random_primary()
EVAL
,EVALSHA
andFCALL
when no arguments are providedThis commit is (part of) the fix for this issue: valkey-io/valkey-glide#1569
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.