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;