Cluster: don't check keys hash slots when the source is our master.

Usually we redirect clients to the right hash slot, however we don't
want to do that with our master, we want just to mirror it.
This commit is contained in:
antirez 2013-03-05 13:02:44 +01:00
parent 31ac376051
commit d3b4662347

View File

@ -1663,9 +1663,14 @@ int processCommand(redisClient *c) {
return REDIS_OK;
}
/* If cluster is enabled, redirect here */
/* If cluster is enabled perform the cluster redirection here.
* However we don't perform the redirection if:
* 1) The sender of this command is our master.
* 2) The command has no key arguments. */
if (server.cluster_enabled &&
!(c->cmd->getkeys_proc == NULL && c->cmd->firstkey == 0)) {
!(c->flags & REDIS_MASTER) &&
!(c->cmd->getkeys_proc == NULL && c->cmd->firstkey == 0))
{
int hashslot;
if (server.cluster->state != REDIS_CLUSTER_OK) {