summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2013-03-26 10:48:15 +0100
committerantirez <antirez@gmail.com>2013-03-27 09:07:18 +0100
commit889b0174035d0eecfef3d2cfd9d3b687057e5c60 (patch)
tree2c8b9de387eb6cfeb1ddc8cef15411efd8eec1f6
parentd1369c3d9f43603d39bf23cbfe8dcd031f9b6a2e (diff)
downloadredis-889b0174035d0eecfef3d2cfd9d3b687057e5c60.tar.gz
Transactions: use discardTransaction() in EXEC implementation.
-rw-r--r--src/multi.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/src/multi.c b/src/multi.c
index 2ceca8caf..191307a67 100644
--- a/src/multi.c
+++ b/src/multi.c
@@ -131,10 +131,7 @@ void execCommand(redisClient *c) {
if (c->flags & (REDIS_DIRTY_CAS|REDIS_DIRTY_EXEC)) {
addReply(c, c->flags & REDIS_DIRTY_EXEC ? shared.execaborterr :
shared.nullmultibulk);
- freeClientMultiState(c);
- initClientMultiState(c);
- c->flags &= ~(REDIS_MULTI|REDIS_DIRTY_CAS|REDIS_DIRTY_EXEC);
- unwatchAllKeys(c);
+ discardTransaction(c);
goto handle_monitor;
}
@@ -164,9 +161,7 @@ void execCommand(redisClient *c) {
c->argv = orig_argv;
c->argc = orig_argc;
c->cmd = orig_cmd;
- freeClientMultiState(c);
- initClientMultiState(c);
- c->flags &= ~(REDIS_MULTI|REDIS_DIRTY_CAS|REDIS_DIRTY_EXEC);
+ discardTransaction(c);
/* 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). */