From 7fa493912e5de72edd7b1720d1a7d1f4287998f8 Mon Sep 17 00:00:00 2001 From: antirez Date: Fri, 31 Aug 2018 16:07:03 +0200 Subject: [PATCH] After slave Lua script leaves busy state, re-process the master buffer. Technically speaking we don't really need to put the master client in the clients that need to be processed, since in practice the PING commands from the master will take care, however it is conceptually more sane to do so. --- src/networking.c | 3 +-- src/scripting.c | 4 ++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/networking.c b/src/networking.c index eb581462..27c69530 100644 --- a/src/networking.c +++ b/src/networking.c @@ -827,8 +827,7 @@ void freeClient(client *c) { serverLog(LL_WARNING,"Connection with master lost."); if (!(c->flags & (CLIENT_CLOSE_AFTER_REPLY| CLIENT_CLOSE_ASAP| - CLIENT_BLOCKED| - CLIENT_UNBLOCKED))) + CLIENT_BLOCKED))) { replicationCacheMaster(c); return; diff --git a/src/scripting.c b/src/scripting.c index 0ef8d2a6..4b36a085 100644 --- a/src/scripting.c +++ b/src/scripting.c @@ -1367,6 +1367,10 @@ void evalGenericCommand(client *c, int evalsha) { * script timeout was detected. */ aeCreateFileEvent(server.el,c->fd,AE_READABLE, readQueryFromClient,c); + if (server.masterhost && server.master) { + server.master->flags |= CLIENT_UNBLOCKED; + listAddNodeTail(server.unblocked_clients,server.master); + } } server.lua_caller = NULL;