From e3dfd8c811e12b6b1d3f7febf732b23fdaab497b Mon Sep 17 00:00:00 2001 From: "zhaozhao.zz" Date: Mon, 6 Nov 2017 16:21:35 +0800 Subject: [PATCH 1/2] fix multiple unblock for clientsArePaused() --- src/networking.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/networking.c b/src/networking.c index 27c69530..36228d6f 100644 --- a/src/networking.c +++ b/src/networking.c @@ -2126,9 +2126,9 @@ int clientsArePaused(void) { while ((ln = listNext(&li)) != NULL) { c = listNodeValue(ln); - /* Don't touch slaves and blocked clients. The latter pending - * requests be processed when unblocked. */ - if (c->flags & (CLIENT_SLAVE|CLIENT_BLOCKED)) continue; + /* Don't touch slaves and blocked or unblocked clients. + * The latter pending requests be processed when unblocked. */ + if (c->flags & (CLIENT_SLAVE|CLIENT_BLOCKED|CLIENT_UNBLOCKED)) continue; c->flags |= CLIENT_UNBLOCKED; listAddNodeTail(server.unblocked_clients,c); } From 2290c4bee1904d4418fd1fa9192a3fbc13bf38b0 Mon Sep 17 00:00:00 2001 From: "zhaozhao.zz" Date: Mon, 3 Sep 2018 14:36:48 +0800 Subject: [PATCH 2/2] if master is already unblocked, do not unblock it twice --- src/scripting.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripting.c b/src/scripting.c index 4b36a085..6c311dbe 100644 --- a/src/scripting.c +++ b/src/scripting.c @@ -1367,7 +1367,7 @@ void evalGenericCommand(client *c, int evalsha) { * script timeout was detected. */ aeCreateFileEvent(server.el,c->fd,AE_READABLE, readQueryFromClient,c); - if (server.masterhost && server.master) { + if (server.masterhost && server.master && !(server.master->flags & CLIENT_UNBLOCKED)) { server.master->flags |= CLIENT_UNBLOCKED; listAddNodeTail(server.unblocked_clients,server.master); }