Commit 1ad4d316 authored by antirez's avatar antirez
Browse files

Fix EXEC bug that was leaving the client in dirty status when used with WATCH

parent bc000c1d
......@@ -7556,6 +7556,7 @@ static void execCommand(redisClient *c) {
execCommandReplicateMulti(c);
/* Exec all the queued commands */
unwatchAllKeys(c); /* Unwatch ASAP otherwise we'll waste CPU cycles */
orig_argv = c->argv;
orig_argc = c->argc;
addReplySds(c,sdscatprintf(sdsempty(),"*%d\r\n",c->mstate.count));
......@@ -7568,8 +7569,7 @@ static void execCommand(redisClient *c) {
c->argc = orig_argc;
freeClientMultiState(c);
initClientMultiState(c);
c->flags &= (~REDIS_MULTI);
unwatchAllKeys(c);
c->flags &= ~(REDIS_MULTI|REDIS_DIRTY_CAS);
/* Make sure the EXEC command is always replicated / AOF, since we
* always send the MULTI command (we can't know beforehand if the
* next operations will contain at least a modification to the DB). */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment