From 62d281b522ab4a04789a41fc1ca49431e5a30f82 Mon Sep 17 00:00:00 2001 From: Malavan Sotheeswaran <105669860+msotheeswaran@users.noreply.github.com> Date: Mon, 13 Feb 2023 13:01:41 -0500 Subject: [PATCH] Don't do async keys command when client cannot block (#564) Fixes #562 --- src/db.cpp | 2 +- tests/unit/scripting.tcl | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/db.cpp b/src/db.cpp index 09addbc7a..e0f4c862c 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -1059,7 +1059,7 @@ void keysCommand(client *c) { sds pattern = szFromObj(c->argv[1]); const redisDbPersistentDataSnapshot *snapshot = nullptr; - if (!(c->flags & (CLIENT_MULTI | CLIENT_BLOCKED))) + if (!(c->flags & (CLIENT_MULTI | CLIENT_BLOCKED | CLIENT_DENY_BLOCKING))) snapshot = c->db->createSnapshot(c->mvccCheckpoint, true /* fOptional */); if (snapshot != nullptr) { diff --git a/tests/unit/scripting.tcl b/tests/unit/scripting.tcl index 2f4722d98..e8454ef1d 100644 --- a/tests/unit/scripting.tcl +++ b/tests/unit/scripting.tcl @@ -43,6 +43,10 @@ start_server {tags {"scripting"}} { r eval {return redis.call('get',KEYS[1])} 1 mykey } {myval} + test { EVAL - keys command works? } { + r eval {return redis.call('keys', 'test')} 0 + } + test {EVALSHA - Can we call a SHA1 if already defined?} { r evalsha fd758d1589d044dd850a6f05d52f2eefd27f033f 1 mykey } {myval}