summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2020-04-17 16:27:29 +0200
committerantirez <antirez@gmail.com>2020-04-17 16:27:29 +0200
commit7cb97aa6a431a641f871a4fe8a7a98f92c20bf4e (patch)
tree1be57dfd99c8d392539cf482a8a10ad92750ee47
parentc479eace4512193bcfe3dcab3ab238486f6f9405 (diff)
downloadredis-7cb97aa6a431a641f871a4fe8a7a98f92c20bf4e.tar.gz
Move handleClientsBlockedOnKeys() outside processCommand().
In preparation for further changes. The idea is that what happens in handleClientsBlockedOnKeys() is an "out of context" thing that should not see server.current_client set to anything special.
-rw-r--r--src/networking.c5
-rw-r--r--src/server.c2
2 files changed, 5 insertions, 2 deletions
diff --git a/src/networking.c b/src/networking.c
index 8f3d79170..c8f8b65ce 100644
--- a/src/networking.c
+++ b/src/networking.c
@@ -1701,6 +1701,11 @@ int processCommandAndResetClient(client *c) {
}
if (server.current_client == NULL) deadclient = 1;
server.current_client = NULL;
+
+ /* Process clients blocked on keys, it is possible that the command
+ * we just executed made certain keys ready. */
+ if (listLength(server.ready_keys)) handleClientsBlockedOnKeys();
+
/* freeMemoryIfNeeded may flush slave output buffers. This may
* result into a slave, that may be the active client, to be
* freed. */
diff --git a/src/server.c b/src/server.c
index fc9b87aae..e02b1b93e 100644
--- a/src/server.c
+++ b/src/server.c
@@ -3600,8 +3600,6 @@ int processCommand(client *c) {
} else {
call(c,CMD_CALL_FULL);
c->woff = server.master_repl_offset;
- if (listLength(server.ready_keys))
- handleClientsBlockedOnKeys();
}
return C_OK;
}