From 9fd4fb8b4ec688846bed24db43ccef5c8066a980 Mon Sep 17 00:00:00 2001 From: PragmaTwice Date: Sat, 25 Jan 2025 11:58:25 +0800 Subject: [PATCH] fix flag of debug --- src/commands/cmd_function.cc | 2 +- src/commands/cmd_script.cc | 2 +- src/commands/cmd_server.cc | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/commands/cmd_function.cc b/src/commands/cmd_function.cc index 3854b2b06b0..82773e5f7e2 100644 --- a/src/commands/cmd_function.cc +++ b/src/commands/cmd_function.cc @@ -102,7 +102,7 @@ struct CommandFCall : Commander { CommandKeyRange GetScriptEvalKeyRange(const std::vector &args); uint64_t GenerateFunctionFlags(uint64_t flags, const std::vector &args) { - if (util::EqualICase(args[1], "load") || util::EqualICase(args[1], "delete")) { + if (args.size() >= 2 && (util::EqualICase(args[1], "load") || util::EqualICase(args[1], "delete"))) { return flags | kCmdWrite; } diff --git a/src/commands/cmd_script.cc b/src/commands/cmd_script.cc index 3030a81e5f9..2034f6f9147 100644 --- a/src/commands/cmd_script.cc +++ b/src/commands/cmd_script.cc @@ -118,7 +118,7 @@ CommandKeyRange GetScriptEvalKeyRange(const std::vector &args) { } uint64_t GenerateScriptFlags(uint64_t flags, const std::vector &args) { - if (util::EqualICase(args[1], "load") || util::EqualICase(args[1], "flush")) { + if (args.size() >= 2 && (util::EqualICase(args[1], "load") || util::EqualICase(args[1], "flush"))) { return flags | kCmdWrite; } diff --git a/src/commands/cmd_server.cc b/src/commands/cmd_server.cc index de21a8b5668..9108bf7f720 100644 --- a/src/commands/cmd_server.cc +++ b/src/commands/cmd_server.cc @@ -646,6 +646,14 @@ class CommandDebug : public Commander { return Status::OK(); } + static uint64_t FlagGen(uint64_t flags, const std::vector &args) { + if (args.size() >= 2 && (util::EqualICase(args[1], "protocol") || util::EqualICase(args[1], "dbsize-limit"))) { + return flags & ~kCmdExclusive; + } + + return flags; + } + private: std::string subcommand_; std::string protocol_type_; @@ -1348,7 +1356,7 @@ REDIS_REGISTER_COMMANDS(Server, MakeCmdAttr("auth", 2, "read-only o MakeCmdAttr("quit", 1, "read-only", NO_KEY), MakeCmdAttr("scan", -2, "read-only", NO_KEY), MakeCmdAttr("randomkey", 1, "read-only", NO_KEY), - MakeCmdAttr("debug", -2, "read-only exclusive", NO_KEY), + MakeCmdAttr("debug", -2, "read-only exclusive", NO_KEY, CommandDebug::FlagGen), MakeCmdAttr("command", -1, "read-only", NO_KEY), MakeCmdAttr("echo", 2, "read-only", NO_KEY), MakeCmdAttr("time", 1, "read-only ok-loading", NO_KEY),