From 2b278a3394ab6b32b4bdcb7db56323649622f784 Mon Sep 17 00:00:00 2001 From: antirez Date: Sat, 21 Mar 2015 09:13:29 +0100 Subject: [PATCH] Net: processUnblockedClients() and clientsArePaused() minor changes. 1. No need to set btype in processUnblockedClients(), since clients flagged REDIS_UNBLOCKED should have it already cleared. 2. When putting clients in the unblocked clients list, clientsArePaused() should flag them with REDIS_UNBLOCKED. Not strictly needed with the current code but is more coherent. --- src/blocked.c | 1 - src/networking.c | 7 ++++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/blocked.c b/src/blocked.c index ef0d5246..3509dd13 100644 --- a/src/blocked.c +++ b/src/blocked.c @@ -114,7 +114,6 @@ void processUnblockedClients(void) { c = ln->value; listDelNode(server.unblocked_clients,ln); c->flags &= ~REDIS_UNBLOCKED; - c->btype = REDIS_BLOCKED_NONE; /* Process remaining data in the input buffer. */ if (c->querybuf && sdslen(c->querybuf) > 0) { diff --git a/src/networking.c b/src/networking.c index 5c8f56db..ba35e487 100644 --- a/src/networking.c +++ b/src/networking.c @@ -1676,7 +1676,9 @@ void pauseClients(mstime_t end) { /* Return non-zero if clients are currently paused. As a side effect the * function checks if the pause time was reached and clear it. */ int clientsArePaused(void) { - if (server.clients_paused && server.clients_pause_end_time < server.mstime) { + if (server.clients_paused && + server.clients_pause_end_time < server.mstime) + { listNode *ln; listIter li; redisClient *c; @@ -1689,7 +1691,10 @@ 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 & (REDIS_SLAVE|REDIS_BLOCKED)) continue; + c->flags |= REDIS_UNBLOCKED; listAddNodeTail(server.unblocked_clients,c); } }