Commit 2f4240b9 authored by antirez's avatar antirez
Browse files

Cluster: fix Lua scripts replication to slave nodes.

parent 94030fa4
...@@ -2199,6 +2199,8 @@ int processCommand(redisClient *c) { ...@@ -2199,6 +2199,8 @@ int processCommand(redisClient *c) {
* 2) The command has no key arguments. */ * 2) The command has no key arguments. */
if (server.cluster_enabled && if (server.cluster_enabled &&
!(c->flags & REDIS_MASTER) && !(c->flags & REDIS_MASTER) &&
!(c->flags & REDIS_LUA_CLIENT &&
server.lua_caller->flags & REDIS_MASTER) &&
!(c->cmd->getkeys_proc == NULL && c->cmd->firstkey == 0)) !(c->cmd->getkeys_proc == NULL && c->cmd->firstkey == 0))
{ {
int hashslot; int hashslot;
......
...@@ -357,8 +357,9 @@ int luaRedisGenericCommand(lua_State *lua, int raise_error) { ...@@ -357,8 +357,9 @@ int luaRedisGenericCommand(lua_State *lua, int raise_error) {
if (cmd->flags & REDIS_CMD_WRITE) server.lua_write_dirty = 1; if (cmd->flags & REDIS_CMD_WRITE) server.lua_write_dirty = 1;
/* If this is a Redis Cluster node, we need to make sure Lua is not /* If this is a Redis Cluster node, we need to make sure Lua is not
* trying to access non-local keys. */ * trying to access non-local keys, with the exception of commands
if (server.cluster_enabled) { * received from our master. */
if (server.cluster_enabled && !(server.lua_caller->flags & REDIS_MASTER)) {
/* Duplicate relevant flags in the lua client. */ /* Duplicate relevant flags in the lua client. */
c->flags &= ~(REDIS_READONLY|REDIS_ASKING); c->flags &= ~(REDIS_READONLY|REDIS_ASKING);
c->flags |= server.lua_caller->flags & (REDIS_READONLY|REDIS_ASKING); c->flags |= server.lua_caller->flags & (REDIS_READONLY|REDIS_ASKING);
......
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