You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by al...@apache.org on 2023/01/10 22:00:57 UTC
[kudu] branch master updated: KUDU-3292 Show non-default flags on WEB UI
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 <ab...@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 <zc...@cloudera.com>
Reviewed-by: Alexey Serbin <al...@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;