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)