From eb15c456c9c318d86ae1d0ae2d50c590eec79595 Mon Sep 17 00:00:00 2001 From: Binbin Date: Tue, 15 Jun 2021 19:36:04 +0800 Subject: [PATCH] Check `CLIENT_DIRTY_CAS` flag before process transaction. (#9086) Do not queue command in an already aborted MULTI state. We can detect an error (watched key). So in queueMultiCommand, we also can return early. Like we deal with `CLIENT_DIRTY_EXEC`. --- src/multi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/multi.c b/src/multi.c index 5fb37098a2..eab620d6d9 100644 --- a/src/multi.c +++ b/src/multi.c @@ -63,7 +63,7 @@ void queueMultiCommand(client *c) { * this is useful in case client sends these in a pipeline, or doesn't * bother to read previous responses and didn't notice the multi was already * aborted. */ - if (c->flags & CLIENT_DIRTY_EXEC) + if (c->flags & (CLIENT_DIRTY_CAS|CLIENT_DIRTY_EXEC)) return; c->mstate.commands = zrealloc(c->mstate.commands,