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`.
This commit is contained in:
Binbin
2021-06-15 19:36:04 +08:00
committed by GitHub
parent 678e67b58e
commit eb15c456c9

View File

@@ -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,