diff --git a/src/networking.c b/src/networking.c index 58248ced..eb581462 100644 --- a/src/networking.c +++ b/src/networking.c @@ -1362,6 +1362,12 @@ void processInputBuffer(client *c) { /* Immediately abort if the client is in the middle of something. */ if (c->flags & CLIENT_BLOCKED) break; + /* Don't process input from the master while there is a busy script + * condition on the slave. We want just to accumulate the replication + * stream (instead of replying -BUSY like we do with other clients) and + * later resume the processing. */ + if (server.lua_timedout && c->flags & CLIENT_MASTER) break; + /* CLIENT_CLOSE_AFTER_REPLY closes the connection once the reply is * written to the client. Make sure to not let the reply grow after * this flag has been set (i.e. don't process more commands). diff --git a/src/server.c b/src/server.c index 1afc9a80..55bcb4dc 100644 --- a/src/server.c +++ b/src/server.c @@ -2683,7 +2683,6 @@ int processCommand(client *c) { /* Lua script too slow? Only allow a limited number of commands. */ if (server.lua_timedout && - !(c->flags & CLIENT_MASTER) && c->cmd->proc != authCommand && c->cmd->proc != replconfCommand && !(c->cmd->proc == shutdownCommand &&