"sdk/esp_iot_sdk_v1.4.0/examples/wps/Makefile" did not exist on "ad966146fc30e2dbe1f3ee417cdc5b54f9126aa0"
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) { ...@@ -7556,6 +7556,7 @@ static void execCommand(redisClient *c) {
execCommandReplicateMulti(c); execCommandReplicateMulti(c);
/* Exec all the queued commands */ /* Exec all the queued commands */
unwatchAllKeys(c); /* Unwatch ASAP otherwise we'll waste CPU cycles */
orig_argv = c->argv; orig_argv = c->argv;
orig_argc = c->argc; orig_argc = c->argc;
addReplySds(c,sdscatprintf(sdsempty(),"*%d\r\n",c->mstate.count)); addReplySds(c,sdscatprintf(sdsempty(),"*%d\r\n",c->mstate.count));
...@@ -7568,8 +7569,7 @@ static void execCommand(redisClient *c) { ...@@ -7568,8 +7569,7 @@ static void execCommand(redisClient *c) {
c->argc = orig_argc; c->argc = orig_argc;
freeClientMultiState(c); freeClientMultiState(c);
initClientMultiState(c); initClientMultiState(c);
c->flags &= (~REDIS_MULTI); c->flags &= ~(REDIS_MULTI|REDIS_DIRTY_CAS);
unwatchAllKeys(c);
/* Make sure the EXEC command is always replicated / AOF, since we /* Make sure the EXEC command is always replicated / AOF, since we
* always send the MULTI command (we can't know beforehand if the * always send the MULTI command (we can't know beforehand if the
* next operations will contain at least a modification to the DB). */ * 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