]> git.saurik.com Git - redis.git/blobdiff - redis.c
Merge branch 'master' into nested-multi
[redis.git] / redis.c
diff --git a/redis.c b/redis.c
index da5baa2ec6eb217c353b11a3c83fe21c9f42bcae..2d50999591c8bc1b898b9969beec6518c05293ef 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -7563,6 +7563,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));
@@ -7575,8 +7576,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). */