Unverified Commit f3aaf2b4 authored by Salvatore Sanfilippo's avatar Salvatore Sanfilippo Committed by GitHub
Browse files

Merge pull request #6401 from valentinogeron/fix-discard-during-oom

DISCARD should not fail during OOM
parents f6cf08e5 7a73b7f1
...@@ -3412,7 +3412,7 @@ int processCommand(client *c) { ...@@ -3412,7 +3412,7 @@ int processCommand(client *c) {
* is in MULTI/EXEC context? Error. */ * is in MULTI/EXEC context? Error. */
if (out_of_memory && if (out_of_memory &&
(c->cmd->flags & CMD_DENYOOM || (c->cmd->flags & CMD_DENYOOM ||
(c->flags & CLIENT_MULTI && c->cmd->proc != execCommand))) { (c->flags & CLIENT_MULTI && c->cmd->proc != execCommand && c->cmd->proc != discardCommand))) {
flagTransaction(c); flagTransaction(c);
addReply(c, shared.oomerr); addReply(c, shared.oomerr);
return C_OK; return C_OK;
......
...@@ -306,4 +306,18 @@ start_server {tags {"multi"}} { ...@@ -306,4 +306,18 @@ start_server {tags {"multi"}} {
} }
close_replication_stream $repl close_replication_stream $repl
} }
test {DISCARD should not fail during OOM} {
set rd [redis_deferring_client]
$rd config set maxmemory 1
assert {[$rd read] eq {OK}}
r multi
catch {r set x 1} e
assert_match {OOM*} $e
r discard
$rd config set maxmemory 0
assert {[$rd read] eq {OK}}
$rd close
r ping
} {PONG}
} }
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