提交 891f9196 编写于 作者: A antirez

Manual merge after cherry-pick

上级 59aecb3a
...@@ -677,7 +677,7 @@ void beforeSleep(struct aeEventLoop *eventLoop) { ...@@ -677,7 +677,7 @@ void beforeSleep(struct aeEventLoop *eventLoop) {
readQueryFromClient, c); readQueryFromClient, c);
cmd = lookupCommand(c->argv[0]->ptr); cmd = lookupCommand(c->argv[0]->ptr);
redisAssert(cmd != NULL); redisAssert(cmd != NULL);
call(c,cmd); call(c);
resetClient(c); resetClient(c);
/* There may be more data to process in the input buffer. */ /* There may be more data to process in the input buffer. */
if (c->querybuf && sdslen(c->querybuf) > 0) if (c->querybuf && sdslen(c->querybuf) > 0)
...@@ -1067,7 +1067,7 @@ int processCommand(redisClient *c) { ...@@ -1067,7 +1067,7 @@ int processCommand(redisClient *c) {
addReply(c,shared.queued); addReply(c,shared.queued);
} else { } else {
if (server.vm_enabled && server.vm_max_threads > 0 && if (server.vm_enabled && server.vm_max_threads > 0 &&
blockClientOnSwappedKeys(c,cmd)) return REDIS_ERR; blockClientOnSwappedKeys(c)) return REDIS_ERR;
call(c); call(c);
} }
return REDIS_OK; return REDIS_OK;
......
...@@ -820,7 +820,7 @@ void vmReopenSwapFile(void); ...@@ -820,7 +820,7 @@ void vmReopenSwapFile(void);
int vmFreePage(off_t page); int vmFreePage(off_t page);
void zunionInterBlockClientOnSwappedKeys(redisClient *c, struct redisCommand *cmd, int argc, robj **argv); void zunionInterBlockClientOnSwappedKeys(redisClient *c, struct redisCommand *cmd, int argc, robj **argv);
void execBlockClientOnSwappedKeys(redisClient *c, struct redisCommand *cmd, int argc, robj **argv); void execBlockClientOnSwappedKeys(redisClient *c, struct redisCommand *cmd, int argc, robj **argv);
int blockClientOnSwappedKeys(redisClient *c, struct redisCommand *cmd); int blockClientOnSwappedKeys(redisClient *c);
int dontWaitForSwappedKey(redisClient *c, robj *key); int dontWaitForSwappedKey(redisClient *c, robj *key);
void handleClientsBlockedOnSwappedKey(redisDb *db, robj *key); void handleClientsBlockedOnSwappedKey(redisDb *db, robj *key);
vmpointer *vmSwapObjectBlocking(robj *val); vmpointer *vmSwapObjectBlocking(robj *val);
......
...@@ -1064,11 +1064,11 @@ void execBlockClientOnSwappedKeys(redisClient *c, struct redisCommand *cmd, int ...@@ -1064,11 +1064,11 @@ void execBlockClientOnSwappedKeys(redisClient *c, struct redisCommand *cmd, int
* *
* Return 1 if the client is marked as blocked, 0 if the client can * Return 1 if the client is marked as blocked, 0 if the client can
* continue as the keys it is going to access appear to be in memory. */ * continue as the keys it is going to access appear to be in memory. */
int blockClientOnSwappedKeys(redisClient *c, struct redisCommand *cmd) { int blockClientOnSwappedKeys(redisClient *c) {
if (cmd->vm_preload_proc != NULL) { if (c->cmd->vm_preload_proc != NULL) {
cmd->vm_preload_proc(c,cmd,c->argc,c->argv); c->cmd->vm_preload_proc(c,c->cmd,c->argc,c->argv);
} else { } else {
waitForMultipleSwappedKeys(c,cmd,c->argc,c->argv); waitForMultipleSwappedKeys(c,c->cmd,c->argc,c->argv);
} }
/* If the client was blocked for at least one key, mark it as blocked. */ /* If the client was blocked for at least one key, mark it as blocked. */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册