This is an automated email from the ASF dual-hosted git repository. alexey pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kudu.git
The following commit(s) were added to refs/heads/master by this push: new 4484df479 KUDU-3292 Show non-default flags on WEB UI 4484df479 is described below commit 4484df479f83541dc2ee4e0efd0499246dc4db70 Author: Ádám Bakai <aba...@cloudera.com> AuthorDate: Fri Jan 6 13:48:06 2023 +0100 KUDU-3292 Show non-default flags on WEB UI Change-Id: Iac723646389d20bd5dbac41524d3a495355387ae Reviewed-on: http://gerrit.cloudera.org:8080/19408 Tested-by: Kudu Jenkins Reviewed-by: Zoltan Chovan <zcho...@cloudera.com> Reviewed-by: Alexey Serbin <ale...@apache.org> --- src/kudu/server/default_path_handlers.cc | 11 ++++++-- src/kudu/util/flag_tags-test.cc | 4 +-- src/kudu/util/flags.cc | 44 +++++++++++++++++++------------- src/kudu/util/flags.h | 4 ++- 4 files changed, 40 insertions(+), 23 deletions(-) diff --git a/src/kudu/server/default_path_handlers.cc b/src/kudu/server/default_path_handlers.cc index 7b2ecc2f7..8856743b4 100644 --- a/src/kudu/server/default_path_handlers.cc +++ b/src/kudu/server/default_path_handlers.cc @@ -173,9 +173,16 @@ static void FlagsHandler(const Webserver::WebRequest& req, bool as_text = (req.parsed_args.find("raw") != req.parsed_args.end()); Tags tags(as_text); - (*output) << tags.header << "Command-line Flags" << tags.end_header; + (*output) << tags.header << "Non-default Command-line Flags" << tags.end_header; (*output) << tags.pre_tag - << CommandlineFlagsIntoString(as_text ? EscapeMode::NONE : EscapeMode::HTML) + << CommandlineFlagsIntoString(as_text ? EscapeMode::NONE : EscapeMode::HTML, + Selection::NONDEFAULT) + << tags.end_pre_tag; + + (*output) << tags.header << "All Command-line Flags" << tags.end_header; + (*output) << tags.pre_tag + << CommandlineFlagsIntoString(as_text ? EscapeMode::NONE : EscapeMode::HTML, + Selection::ALL) << tags.end_pre_tag; } diff --git a/src/kudu/util/flag_tags-test.cc b/src/kudu/util/flag_tags-test.cc index 7b7c8a52e..a6d2da655 100644 --- a/src/kudu/util/flag_tags-test.cc +++ b/src/kudu/util/flag_tags-test.cc @@ -127,8 +127,8 @@ TEST_F(FlagTagsTest, TestSensitiveFlags) { // Setting a sensitive flag should return a redacted value. { kudu::g_should_redact = kudu::RedactContext::LOG; - ASSERT_STR_CONTAINS(CommandlineFlagsIntoString(EscapeMode::NONE), strings::Substitute( - "--test_sensitive_flag=$0", kRedactionMessage)); + ASSERT_STR_CONTAINS(CommandlineFlagsIntoString(EscapeMode::NONE, Selection::ALL), + strings::Substitute("--test_sensitive_flag=$0", kRedactionMessage)); } } diff --git a/src/kudu/util/flags.cc b/src/kudu/util/flags.cc index f7925a4c2..a069a2029 100644 --- a/src/kudu/util/flags.cc +++ b/src/kudu/util/flags.cc @@ -566,24 +566,6 @@ bool AreFlagsConsistent() { return true; } -string CommandlineFlagsIntoString(EscapeMode mode) { - string ret_value; - vector<CommandLineFlagInfo> flags; - GetAllFlags(&flags); - - for (const auto& f : flags) { - ret_value += "--"; - if (mode == EscapeMode::HTML) { - ret_value += EscapeForHtmlToString(f.name); - } else if (mode == EscapeMode::NONE) { - ret_value += f.name; - } - ret_value += "="; - ret_value += CheckFlagAndRedact(f, mode); - ret_value += "\n"; - } - return ret_value; -} vector<CommandLineFlagInfo> GetNonDefaultFlagsHelper() { vector<CommandLineFlagInfo> all_flags; @@ -666,4 +648,30 @@ bool GetBooleanEnvironmentVariable(const char* env_var_name) { return false; // unreachable } +string CommandlineFlagsIntoString(EscapeMode mode, Selection selection) { + string ret_value; + vector<CommandLineFlagInfo> flags; + switch (selection) { + case Selection::ALL: + GetAllFlags(&flags); + break; + case Selection::NONDEFAULT: + flags = GetNonDefaultFlagsHelper(); + break; + } + + for (const auto& f : flags) { + ret_value += "--"; + if (mode == EscapeMode::HTML) { + ret_value += EscapeForHtmlToString(f.name); + } else if (mode == EscapeMode::NONE) { + ret_value += f.name; + } + ret_value += "="; + ret_value += CheckFlagAndRedact(f, mode); + ret_value += "\n"; + } + return ret_value; +} + } // namespace kudu diff --git a/src/kudu/util/flags.h b/src/kudu/util/flags.h index 91e8a24dd..66424ca36 100644 --- a/src/kudu/util/flags.h +++ b/src/kudu/util/flags.h @@ -67,11 +67,13 @@ enum class EscapeMode { NONE }; +enum class Selection { NONDEFAULT, ALL }; + // Stick the flags into a string. If redaction is enabled, the values of // flags tagged as sensitive will be redacted. Otherwise, the values // will be written to the string as-is. The values will be HTML escaped // if EscapeMode is HTML. -std::string CommandlineFlagsIntoString(EscapeMode mode); +std::string CommandlineFlagsIntoString(EscapeMode mode, Selection selection); typedef std::unordered_map<std::string, google::CommandLineFlagInfo> GFlagsMap;