This is an automated email from the ASF dual-hosted git repository.

hulk pushed a commit to branch unstable
in repository https://gitbox.apache.org/repos/asf/kvrocks.git


The following commit(s) were added to refs/heads/unstable by this push:
     new f38557b1 feat: add slow flags for commands with heavy disk I/O (#2494)
f38557b1 is described below

commit f38557b1d87eca93c8e360f4f450bfdf4103ed61
Author: Jonathan Chen <[email protected]>
AuthorDate: Mon Aug 19 04:42:48 2024 -0400

    feat: add slow flags for commands with heavy disk I/O (#2494)
    
    Co-authored-by: hulk <[email protected]>
---
 src/commands/cmd_hash.cc |  6 +++---
 src/commands/cmd_list.cc |  4 ++--
 src/commands/cmd_set.cc  | 16 ++++++++--------
 src/commands/cmd_zset.cc | 14 +++++++-------
 src/commands/commander.h |  3 +++
 5 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/src/commands/cmd_hash.cc b/src/commands/cmd_hash.cc
index d21e4544..c0000ccf 100644
--- a/src/commands/cmd_hash.cc
+++ b/src/commands/cmd_hash.cc
@@ -440,9 +440,9 @@ REDIS_REGISTER_COMMANDS(Hash, 
MakeCmdAttr<CommandHGet>("hget", 3, "read-only", 1
                         MakeCmdAttr<CommandHLen>("hlen", 2, "read-only", 1, 1, 
1),
                         MakeCmdAttr<CommandHMGet>("hmget", -3, "read-only", 1, 
1, 1),
                         MakeCmdAttr<CommandHMSet>("hmset", -4, "write", 1, 1, 
1),
-                        MakeCmdAttr<CommandHKeys>("hkeys", 2, "read-only", 1, 
1, 1),
-                        MakeCmdAttr<CommandHVals>("hvals", 2, "read-only", 1, 
1, 1),
-                        MakeCmdAttr<CommandHGetAll>("hgetall", 2, "read-only", 
1, 1, 1),
+                        MakeCmdAttr<CommandHKeys>("hkeys", 2, "read-only 
slow", 1, 1, 1),
+                        MakeCmdAttr<CommandHVals>("hvals", 2, "read-only 
slow", 1, 1, 1),
+                        MakeCmdAttr<CommandHGetAll>("hgetall", 2, "read-only 
slow", 1, 1, 1),
                         MakeCmdAttr<CommandHScan>("hscan", -3, "read-only", 1, 
1, 1),
                         MakeCmdAttr<CommandHRangeByLex>("hrangebylex", -4, 
"read-only", 1, 1, 1),
                         MakeCmdAttr<CommandHRandField>("hrandfield", -2, 
"read-only", 1, 1, 1), )
diff --git a/src/commands/cmd_list.cc b/src/commands/cmd_list.cc
index 66d3089a..44f3b6d3 100644
--- a/src/commands/cmd_list.cc
+++ b/src/commands/cmd_list.cc
@@ -852,7 +852,7 @@ REDIS_REGISTER_COMMANDS(List, 
MakeCmdAttr<CommandBLPop>("blpop", -3, "write no-s
                         MakeCmdAttr<CommandBRPop>("brpop", -3, "write 
no-script", 1, -2, 1),
                         MakeCmdAttr<CommandBLMPop>("blmpop", -5, "write 
no-script", CommandBLMPop::keyRangeGen),
                         MakeCmdAttr<CommandLIndex>("lindex", 3, "read-only", 
1, 1, 1),
-                        MakeCmdAttr<CommandLInsert>("linsert", 5, "write", 1, 
1, 1),
+                        MakeCmdAttr<CommandLInsert>("linsert", 5, "write 
slow", 1, 1, 1),
                         MakeCmdAttr<CommandLLen>("llen", 2, "read-only", 1, 1, 
1),
                         MakeCmdAttr<CommandLMove>("lmove", 5, "write", 1, 2, 
1),
                         MakeCmdAttr<CommandBLMove>("blmove", 6, "write", 1, 2, 
1),
@@ -861,7 +861,7 @@ REDIS_REGISTER_COMMANDS(List, 
MakeCmdAttr<CommandBLPop>("blpop", -3, "write no-s
                         MakeCmdAttr<CommandLPush>("lpush", -3, "write", 1, 1, 
1),
                         MakeCmdAttr<CommandLPushX>("lpushx", -3, "write", 1, 
1, 1),
                         MakeCmdAttr<CommandLRange>("lrange", 4, "read-only", 
1, 1, 1),
-                        MakeCmdAttr<CommandLRem>("lrem", 4, "write 
no-dbsize-check", 1, 1, 1),
+                        MakeCmdAttr<CommandLRem>("lrem", 4, "write 
no-dbsize-check slow", 1, 1, 1),
                         MakeCmdAttr<CommandLSet>("lset", 4, "write", 1, 1, 1),
                         MakeCmdAttr<CommandLTrim>("ltrim", 4, "write 
no-dbsize-check", 1, 1, 1),
                         MakeCmdAttr<CommandLMPop>("lmpop", -4, "write", 
CommandLMPop::keyRangeGen),
diff --git a/src/commands/cmd_set.cc b/src/commands/cmd_set.cc
index 4b01e2f4..c824a077 100644
--- a/src/commands/cmd_set.cc
+++ b/src/commands/cmd_set.cc
@@ -440,19 +440,19 @@ class CommandSScan : public CommandSubkeyScanBase {
 REDIS_REGISTER_COMMANDS(Set, MakeCmdAttr<CommandSAdd>("sadd", -3, "write", 1, 
1, 1),
                         MakeCmdAttr<CommandSRem>("srem", -3, "write 
no-dbsize-check", 1, 1, 1),
                         MakeCmdAttr<CommandSCard>("scard", 2, "read-only", 1, 
1, 1),
-                        MakeCmdAttr<CommandSMembers>("smembers", 2, 
"read-only", 1, 1, 1),
+                        MakeCmdAttr<CommandSMembers>("smembers", 2, "read-only 
slow", 1, 1, 1),
                         MakeCmdAttr<CommandSIsMember>("sismember", 3, 
"read-only", 1, 1, 1),
                         MakeCmdAttr<CommandSMIsMember>("smismember", -3, 
"read-only", 1, 1, 1),
                         MakeCmdAttr<CommandSPop>("spop", -2, "write", 1, 1, 1),
                         MakeCmdAttr<CommandSRandMember>("srandmember", -2, 
"read-only", 1, 1, 1),
                         MakeCmdAttr<CommandSMove>("smove", 4, "write", 1, 2, 
1),
-                        MakeCmdAttr<CommandSDiff>("sdiff", -2, "read-only", 1, 
-1, 1),
-                        MakeCmdAttr<CommandSUnion>("sunion", -2, "read-only", 
1, -1, 1),
-                        MakeCmdAttr<CommandSInter>("sinter", -2, "read-only", 
1, -1, 1),
-                        MakeCmdAttr<CommandSInterCard>("sintercard", -3, 
"read-only", CommandSInterCard::Range),
-                        MakeCmdAttr<CommandSDiffStore>("sdiffstore", -3, 
"write", 1, -1, 1),
-                        MakeCmdAttr<CommandSUnionStore>("sunionstore", -3, 
"write", 1, -1, 1),
-                        MakeCmdAttr<CommandSInterStore>("sinterstore", -3, 
"write", 1, -1, 1),
+                        MakeCmdAttr<CommandSDiff>("sdiff", -2, "read-only 
slow", 1, -1, 1),
+                        MakeCmdAttr<CommandSUnion>("sunion", -2, "read-only 
slow", 1, -1, 1),
+                        MakeCmdAttr<CommandSInter>("sinter", -2, "read-only 
slow", 1, -1, 1),
+                        MakeCmdAttr<CommandSInterCard>("sintercard", -3, 
"read-only slow", CommandSInterCard::Range),
+                        MakeCmdAttr<CommandSDiffStore>("sdiffstore", -3, 
"write slow", 1, -1, 1),
+                        MakeCmdAttr<CommandSUnionStore>("sunionstore", -3, 
"write slow", 1, -1, 1),
+                        MakeCmdAttr<CommandSInterStore>("sinterstore", -3, 
"write slow", 1, -1, 1),
                         MakeCmdAttr<CommandSScan>("sscan", -3, "read-only", 1, 
1, 1), )
 
 }  // namespace redis
diff --git a/src/commands/cmd_zset.cc b/src/commands/cmd_zset.cc
index 327e06dc..e39ddd4f 100644
--- a/src/commands/cmd_zset.cc
+++ b/src/commands/cmd_zset.cc
@@ -1516,9 +1516,9 @@ REDIS_REGISTER_COMMANDS(ZSet, 
MakeCmdAttr<CommandZAdd>("zadd", -4, "write", 1, 1
                         MakeCmdAttr<CommandZCard>("zcard", 2, "read-only", 1, 
1, 1),
                         MakeCmdAttr<CommandZCount>("zcount", 4, "read-only", 
1, 1, 1),
                         MakeCmdAttr<CommandZIncrBy>("zincrby", 4, "write", 1, 
1, 1),
-                        MakeCmdAttr<CommandZInterStore>("zinterstore", -4, 
"write", CommandZInterStore::Range),
-                        MakeCmdAttr<CommandZInter>("zinter", -3, "read-only", 
CommandZInter::Range),
-                        MakeCmdAttr<CommandZInterCard>("zintercard", -3, 
"read-only", CommandZInterCard::Range),
+                        MakeCmdAttr<CommandZInterStore>("zinterstore", -4, 
"write slow", CommandZInterStore::Range),
+                        MakeCmdAttr<CommandZInter>("zinter", -3, "read-only 
slow", CommandZInter::Range),
+                        MakeCmdAttr<CommandZInterCard>("zintercard", -3, 
"read-only slow", CommandZInterCard::Range),
                         MakeCmdAttr<CommandZLexCount>("zlexcount", 4, 
"read-only", 1, 1, 1),
                         MakeCmdAttr<CommandZPopMax>("zpopmax", -2, "write", 1, 
1, 1),
                         MakeCmdAttr<CommandZPopMin>("zpopmin", -2, "write", 1, 
1, 1),
@@ -1542,10 +1542,10 @@ REDIS_REGISTER_COMMANDS(ZSet, 
MakeCmdAttr<CommandZAdd>("zadd", -4, "write", 1, 1
                         MakeCmdAttr<CommandZScore>("zscore", 3, "read-only", 
1, 1, 1),
                         MakeCmdAttr<CommandZMScore>("zmscore", -3, 
"read-only", 1, 1, 1),
                         MakeCmdAttr<CommandZScan>("zscan", -3, "read-only", 1, 
1, 1),
-                        MakeCmdAttr<CommandZUnionStore>("zunionstore", -4, 
"write", CommandZUnionStore::Range),
-                        MakeCmdAttr<CommandZUnion>("zunion", -3, "read-only", 
CommandZUnion::Range),
+                        MakeCmdAttr<CommandZUnionStore>("zunionstore", -4, 
"write slow", CommandZUnionStore::Range),
+                        MakeCmdAttr<CommandZUnion>("zunion", -3, "read-only 
slow", CommandZUnion::Range),
                         MakeCmdAttr<CommandZRandMember>("zrandmember", -2, 
"read-only", 1, 1, 1),
-                        MakeCmdAttr<CommandZDiff>("zdiff", -3, "read-only", 
CommandZDiff::Range),
-                        MakeCmdAttr<CommandZDiffStore>("zdiffstore", -3, 
"read-only", CommandZDiffStore::Range), )
+                        MakeCmdAttr<CommandZDiff>("zdiff", -3, "read-only 
slow", CommandZDiff::Range),
+                        MakeCmdAttr<CommandZDiffStore>("zdiffstore", -3, 
"read-only slow", CommandZDiffStore::Range), )
 
 }  // namespace redis
diff --git a/src/commands/commander.h b/src/commands/commander.h
index 24a86113..39d55bfc 100644
--- a/src/commands/commander.h
+++ b/src/commands/commander.h
@@ -65,6 +65,7 @@ enum CommandFlags : uint64_t {
   kCmdROScript = 1ULL << 10,       // "ro-script" flag for read-only script 
commands
   kCmdCluster = 1ULL << 11,        // "cluster" flag
   kCmdNoDBSizeCheck = 1ULL << 12,  // "no-dbsize-check" flag
+  kCmdSlow = 1ULL << 13,           // "slow" flag
 };
 
 enum class CommandCategory : uint8_t {
@@ -238,6 +239,8 @@ inline uint64_t ParseCommandFlags(const std::string 
&description, const std::str
       flags |= kCmdCluster;
     else if (flag == "no-dbsize-check")
       flags |= kCmdNoDBSizeCheck;
+    else if (flag == "slow")
+      flags |= kCmdSlow;
     else {
       std::cout << fmt::format("Encountered non-existent flag '{}' in command 
{} in command attribute parsing", flag,
                                cmd_name)

Reply via email to