Commit e0d0fb45 authored by Chris Thunes's avatar Chris Thunes Committed by Chris Thunes
Browse files

Ensure slots are rechecked on EXEC.

Fixes #2515.
parent 401383f1
...@@ -2185,7 +2185,8 @@ int processCommand(redisClient *c) { ...@@ -2185,7 +2185,8 @@ int processCommand(redisClient *c) {
!(c->flags & REDIS_MASTER) && !(c->flags & REDIS_MASTER) &&
!(c->flags & REDIS_LUA_CLIENT && !(c->flags & REDIS_LUA_CLIENT &&
server.lua_caller->flags & REDIS_MASTER) && server.lua_caller->flags & REDIS_MASTER) &&
!(c->cmd->getkeys_proc == NULL && c->cmd->firstkey == 0)) !(c->cmd->getkeys_proc == NULL && c->cmd->firstkey == 0 &&
c->cmd->proc != execCommand))
{ {
int hashslot; int hashslot;
...@@ -2197,7 +2198,11 @@ int processCommand(redisClient *c) { ...@@ -2197,7 +2198,11 @@ int processCommand(redisClient *c) {
int error_code; int error_code;
clusterNode *n = getNodeByQuery(c,c->cmd,c->argv,c->argc,&hashslot,&error_code); clusterNode *n = getNodeByQuery(c,c->cmd,c->argv,c->argc,&hashslot,&error_code);
if (n == NULL || n != server.cluster->myself) { if (n == NULL || n != server.cluster->myself) {
if (c->cmd->proc == execCommand) {
discardTransaction(c);
} else {
flagTransaction(c); flagTransaction(c);
}
clusterRedirectClient(c,n,hashslot,error_code); clusterRedirectClient(c,n,hashslot,error_code);
return REDIS_OK; return REDIS_OK;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment