From 04d04225fbf4d0f69ae2ef9bcdebcaf34a1fb958 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Tue, 19 Mar 2024 18:51:32 +0000 Subject: [PATCH] [logging] Reduce line count for gRPC experiment output --- src/core/lib/experiments/config.cc | 81 +++++++++++++++++------------- 1 file changed, 46 insertions(+), 35 deletions(-) diff --git a/src/core/lib/experiments/config.cc b/src/core/lib/experiments/config.cc index 6a480c22db1..4210ccc3055 100644 --- a/src/core/lib/experiments/config.cc +++ b/src/core/lib/experiments/config.cc @@ -25,7 +25,7 @@ #include #include "absl/functional/any_invocable.h" -#include "absl/strings/str_cat.h" +#include "absl/strings/str_join.h" #include "absl/strings/str_split.h" #include "absl/strings/string_view.h" #include "absl/strings/strip.h" @@ -187,42 +187,53 @@ bool IsTestExperimentEnabled(size_t experiment_id) { } void PrintExperimentsList() { - size_t max_experiment_length = 0; - // Populate visitation order into a std::map so that iteration results in a - // lexical ordering of experiment names. - // The lexical ordering makes it nice and easy to find the experiment you're - // looking for in the output spam that we generate. - std::map visitation_order; + std::map experiment_status; + std::set defaulted_on_experiments; for (size_t i = 0; i < kNumExperiments; i++) { - max_experiment_length = - std::max(max_experiment_length, strlen(g_experiment_metadata[i].name)); - visitation_order[g_experiment_metadata[i].name] = i; + const char* name = g_experiment_metadata[i].name; + const bool enabled = IsExperimentEnabled(i); + const bool default_enabled = g_experiment_metadata[i].default_value; + const bool forced = g_forced_experiments[i].forced; + if (!default_enabled && !enabled) continue; + if (default_enabled && enabled) { + defaulted_on_experiments.insert(name); + continue; + } + if (enabled) { + if (g_check_constraints_cb != nullptr && + (*g_check_constraints_cb)(g_experiment_metadata[i])) { + experiment_status[name] = "on:constraints"; + continue; + } + if (forced && g_forced_experiments[i].value) { + experiment_status[name] = "on:forced"; + continue; + } + experiment_status[name] = "on"; + } else { + if (forced && !g_forced_experiments[i].value) { + experiment_status[name] = "off:forced"; + continue; + } + experiment_status[name] = "off"; + } } - for (auto name_index : visitation_order) { - const size_t i = name_index.second; - gpr_log( - GPR_INFO, "%s", - absl::StrCat( - "gRPC EXPERIMENT ", g_experiment_metadata[i].name, - std::string(max_experiment_length - - strlen(g_experiment_metadata[i].name) + 1, - ' '), - IsExperimentEnabled(i) ? "ON " : "OFF", - " (default:", g_experiment_metadata[i].default_value ? "ON" : "OFF", - (g_check_constraints_cb != nullptr - ? absl::StrCat( - " + ", g_experiment_metadata[i].additional_constaints, - " => ", - (*g_check_constraints_cb)(g_experiment_metadata[i]) - ? "ON " - : "OFF") - : std::string()), - g_forced_experiments[i].forced - ? absl::StrCat(" force:", - g_forced_experiments[i].value ? "ON" : "OFF") - : std::string(), - ")") - .c_str()); + if (experiment_status.empty()) { + if (!defaulted_on_experiments.empty()) { + gpr_log(GPR_INFO, "gRPC experiments enabled: %s", + absl::StrJoin(defaulted_on_experiments, ", ").c_str()); + } + } else { + if (defaulted_on_experiments.empty()) { + gpr_log(GPR_INFO, "gRPC experiments: %s", + absl::StrJoin(experiment_status, ", ", absl::PairFormatter(":")) + .c_str()); + } else { + gpr_log(GPR_INFO, "gRPC experiments: %s; default-enabled: %s", + absl::StrJoin(experiment_status, ", ", absl::PairFormatter(":")) + .c_str(), + absl::StrJoin(defaulted_on_experiments, ", ").c_str()); + } } }