You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by bc...@apache.org on 2016/10/04 15:28:58 UTC

[trafficserver] 02/02: TS-4891: Initializing Diags prefix on declaration.

This is an automated email from the ASF dual-hosted git repository.

bcall pushed a commit to branch 7.0.x
in repository https://git-dual.apache.org/repos/asf/trafficserver.git

commit 10da44208cdd73251e5767d157d707d718cad61c
Author: Persia Aziz <pe...@yahoo-inc.com>
AuthorDate: Tue Sep 27 12:39:00 2016 -0700

    TS-4891: Initializing Diags prefix on declaration.
    
    This closes #1045.
    
    (cherry picked from commit d589bfee16f48637bad21db434b0230a74430bab)
---
 cmd/traffic_crashlog/traffic_crashlog.cc |  2 +-
 cmd/traffic_ctl/traffic_ctl.cc           |  2 +-
 cmd/traffic_manager/traffic_manager.cc   |  6 ++----
 iocore/net/test_certlookup.cc            |  2 +-
 iocore/utils/diags.i                     |  2 +-
 lib/ts/Diags.cc                          | 28 ++++++++++++++++++++--------
 lib/ts/Diags.h                           |  4 ++--
 lib/ts/test_X509HostnameValidator.cc     |  2 +-
 proxy/Main.cc                            |  8 +++-----
 proxy/logging/LogStandalone.cc           |  4 ++--
 proxy/shared/DiagsConfig.cc              |  7 ++++---
 proxy/shared/DiagsConfig.h               |  2 +-
 12 files changed, 39 insertions(+), 30 deletions(-)

diff --git a/cmd/traffic_crashlog/traffic_crashlog.cc b/cmd/traffic_crashlog/traffic_crashlog.cc
index 696d018..75a62df 100644
--- a/cmd/traffic_crashlog/traffic_crashlog.cc
+++ b/cmd/traffic_crashlog/traffic_crashlog.cc
@@ -92,7 +92,7 @@ main(int /* argc ATS_UNUSED */, const char **argv)
   crashlog_target target;
   pid_t parent = getppid();
 
-  diags = new Diags("" /* tags */, "" /* actions */, new BaseLogFile("stderr"));
+  diags = new Diags("traffic_crashlog", "" /* tags */, "" /* actions */, new BaseLogFile("stderr"));
 
   appVersionInfo.setup(PACKAGE_NAME, "traffic_crashlog", PACKAGE_VERSION, __DATE__, __TIME__, BUILD_MACHINE, BUILD_PERSON, "");
 
diff --git a/cmd/traffic_ctl/traffic_ctl.cc b/cmd/traffic_ctl/traffic_ctl.cc
index c3559ac..f1f3679 100644
--- a/cmd/traffic_ctl/traffic_ctl.cc
+++ b/cmd/traffic_ctl/traffic_ctl.cc
@@ -230,7 +230,7 @@ main(int argc, const char **argv)
   };
 
   BaseLogFile *base_log_file = new BaseLogFile("stderr");
-  diags                      = new Diags("" /* tags */, "" /* actions */, base_log_file);
+  diags                      = new Diags(program_name, "" /* tags */, "" /* actions */, base_log_file);
 
   // Process command line arguments and dump into variables
   if (!CtrlProcessArguments(argc, argv, argument_descriptions, countof(argument_descriptions))) {
diff --git a/cmd/traffic_manager/traffic_manager.cc b/cmd/traffic_manager/traffic_manager.cc
index 8f064de..34cd11a 100644
--- a/cmd/traffic_manager/traffic_manager.cc
+++ b/cmd/traffic_manager/traffic_manager.cc
@@ -496,11 +496,10 @@ main(int argc, const char **argv)
 
   // Bootstrap the Diags facility so that we can use it while starting
   //  up the manager
-  diagsConfig = new DiagsConfig(DIAGS_LOG_FILENAME, debug_tags, action_tags, false);
+  diagsConfig = new DiagsConfig("Manager", DIAGS_LOG_FILENAME, debug_tags, action_tags, false);
   diags       = diagsConfig->diags;
   diags->set_stdout_output(bind_stdout);
   diags->set_stderr_output(bind_stderr);
-  diags->prefix_str = "Manager ";
 
   RecLocalInit();
   LibRecordsConfigInit();
@@ -542,10 +541,9 @@ main(int argc, const char **argv)
   }
   // INKqa11968: need to set up callbacks and diags data structures
   // using configuration in records.config
-  diagsConfig = new DiagsConfig(DIAGS_LOG_FILENAME, debug_tags, action_tags, true);
+  diagsConfig = new DiagsConfig("Manager", DIAGS_LOG_FILENAME, debug_tags, action_tags, true);
   diags       = diagsConfig->diags;
   RecSetDiags(diags);
-  diags->prefix_str = "Manager ";
   diags->set_stdout_output(bind_stdout);
   diags->set_stderr_output(bind_stderr);
 
diff --git a/iocore/net/test_certlookup.cc b/iocore/net/test_certlookup.cc
index 385cda0..2ccaf9b 100644
--- a/iocore/net/test_certlookup.cc
+++ b/iocore/net/test_certlookup.cc
@@ -214,7 +214,7 @@ int
 main(int argc, const char **argv)
 {
   BaseLogFile *blf = new BaseLogFile("stdout");
-  diags            = new Diags(NULL, NULL, blf);
+  diags            = new Diags("test_certlookup", NULL, NULL, blf);
   res_track_memory = 1;
 
   SSL_library_init();
diff --git a/iocore/utils/diags.i b/iocore/utils/diags.i
index 802aaec..8471843 100644
--- a/iocore/utils/diags.i
+++ b/iocore/utils/diags.i
@@ -91,7 +91,7 @@ init_diags(const char *bdt, const char *bat)
   char diags_logpath[500];
   strcpy(diags_logpath, DIAGS_LOG_FILE);
 
-  diags = new Diags(bdt, bat, new BaseLogFile(diags_logpath));
+  diags = new Diags("test", bdt, bat, new BaseLogFile(diags_logpath));
   Status("opened %s", diags_logpath);
 
   reconfigure_diags();
diff --git a/lib/ts/Diags.cc b/lib/ts/Diags.cc
index 57f2cd3..45ed9b2 100644
--- a/lib/ts/Diags.cc
+++ b/lib/ts/Diags.cc
@@ -100,7 +100,7 @@ vprintline(FILE *fp, char (&buffer)[Size], va_list ap)
 //
 //////////////////////////////////////////////////////////////////////////////
 
-Diags::Diags(const char *bdt, const char *bat, BaseLogFile *_diags_log)
+Diags::Diags(const char *prefix_string, const char *bdt, const char *bat, BaseLogFile *_diags_log)
   : diags_log(NULL),
     stdout_log(NULL),
     stderr_log(NULL),
@@ -128,6 +128,11 @@ Diags::Diags(const char *bdt, const char *bat, BaseLogFile *_diags_log)
   config.enabled[DiagsTagType_Debug]  = (base_debug_tags != NULL);
   config.enabled[DiagsTagType_Action] = (base_action_tags != NULL);
   diags_on_for_plugins                = config.enabled[DiagsTagType_Debug];
+  prefix_str                          = prefix_string;
+
+  // The caller must always provide a non-empty prefix.
+  ink_release_assert(prefix_str);
+  ink_release_assert(*prefix_str);
 
   for (i = 0; i < DiagsLevel_Count; i++) {
     config.outputs[i].to_stdout   = false;
@@ -143,17 +148,12 @@ Diags::Diags(const char *bdt, const char *bat, BaseLogFile *_diags_log)
   stdout_log->open_file(); // should never fail
   stderr_log->open_file(); // should never fail
 
-  if (setup_diagslog(_diags_log)) {
-    diags_log = _diags_log;
-  }
-
   //////////////////////////////////////////////////////////////////
   // start off with empty tag tables, will build in reconfigure() //
   //////////////////////////////////////////////////////////////////
 
   activated_tags[DiagsTagType_Debug]  = NULL;
   activated_tags[DiagsTagType_Action] = NULL;
-  prefix_str                          = "";
 
   outputlog_rolling_enabled  = RollingEnabledValues::NO_ROLLING;
   outputlog_rolling_interval = -1;
@@ -164,6 +164,10 @@ Diags::Diags(const char *bdt, const char *bat, BaseLogFile *_diags_log)
 
   outputlog_time_last_roll = time(0);
   diagslog_time_last_roll  = time(0);
+
+  if (setup_diagslog(_diags_log)) {
+    diags_log = _diags_log;
+  }
 }
 
 Diags::~Diags()
@@ -254,6 +258,7 @@ Diags::print_va(const char *debug_tag, DiagsLevel diags_level, const SourceLocat
 
   for (s = level_name(diags_level); *s; *end_of_format++ = *s++)
     ;
+
   *end_of_format++ = ':';
   *end_of_format++ = ' ';
 
@@ -298,19 +303,26 @@ Diags::print_va(const char *debug_tag, DiagsLevel diags_level, const SourceLocat
   tp               = ink_gettimeofday();
   time_t cur_clock = (time_t)tp.tv_sec;
   buffer           = ink_ctime_r(&cur_clock, timestamp_buf);
+
   snprintf(&(timestamp_buf[19]), (sizeof(timestamp_buf) - 20), ".%03d", (int)(tp.tv_usec / 1000));
 
   d    = format_buf_w_ts;
   *d++ = '[';
+
   for (int i = 4; buffer[i]; i++)
     *d++ = buffer[i];
-  *d++   = ']';
-  *d++   = ' ';
+
+  *d++ = ']';
+  *d++ = ' ';
 
   for (int k = 0; prefix_str[k]; k++)
     *d++ = prefix_str[k];
+
+  *d++ = ' ';
+
   for (s = format_buf; *s; *d++ = *s++)
     ;
+
   *d++ = NUL;
 
   //////////////////////////////////////
diff --git a/lib/ts/Diags.h b/lib/ts/Diags.h
index c6a4836..fd5c183 100644
--- a/lib/ts/Diags.h
+++ b/lib/ts/Diags.h
@@ -110,7 +110,7 @@ struct DiagsConfigState {
 class Diags
 {
 public:
-  Diags(const char *base_debug_tags, const char *base_action_tags, BaseLogFile *_diags_log);
+  Diags(const char *prefix_string, const char *base_debug_tags, const char *base_action_tags, BaseLogFile *_diags_log);
   ~Diags();
 
   BaseLogFile *diags_log;
@@ -121,7 +121,6 @@ public:
   volatile DiagsConfigState config;
   DiagsShowLocation show_location;
   DiagsCleanupFunc cleanup_func;
-  const char *prefix_str;
 
   ///////////////////////////
   // conditional debugging //
@@ -221,6 +220,7 @@ public:
   const char *base_action_tags; // internal copy of default action tags
 
 private:
+  const char *prefix_str;
   mutable ink_mutex tag_table_lock; // prevents reconfig/read races
   DFA *activated_tags[2];           // 1 table for debug, 1 for action
 
diff --git a/lib/ts/test_X509HostnameValidator.cc b/lib/ts/test_X509HostnameValidator.cc
index 9cd52bc..b732c63 100644
--- a/lib/ts/test_X509HostnameValidator.cc
+++ b/lib/ts/test_X509HostnameValidator.cc
@@ -187,7 +187,7 @@ int
 main(int argc, const char **argv)
 {
   BaseLogFile *blf = new BaseLogFile("stdout");
-  diags            = new Diags(NULL, NULL, blf);
+  diags            = new Diags("test_x509", NULL, NULL, blf);
   res_track_memory = 1;
 
   SSL_library_init();
diff --git a/proxy/Main.cc b/proxy/Main.cc
index 0c3e0bc..0b90900 100644
--- a/proxy/Main.cc
+++ b/proxy/Main.cc
@@ -1507,9 +1507,8 @@ main(int /* argc ATS_UNUSED */, const char **argv)
   // re-start it again, TS will crash.
   // This is also needed for log rotation - setting up the file can cause privilege
   // related errors and if diagsConfig isn't get up yet that will crash on a NULL pointer.
-  diagsConfig       = new DiagsConfig(DIAGS_LOG_FILENAME, error_tags, action_tags, false);
-  diags             = diagsConfig->diags;
-  diags->prefix_str = "Server ";
+  diagsConfig = new DiagsConfig("Server", DIAGS_LOG_FILENAME, error_tags, action_tags, false);
+  diags       = diagsConfig->diags;
   diags->set_stdout_output(bind_stdout);
   diags->set_stderr_output(bind_stderr);
   if (is_debug_tag_set("diags")) {
@@ -1597,10 +1596,9 @@ main(int /* argc ATS_UNUSED */, const char **argv)
     RecDebugOff();
     delete (diagsConfig);
   }
-  diagsConfig = new DiagsConfig(DIAGS_LOG_FILENAME, error_tags, action_tags, true);
+  diagsConfig = new DiagsConfig("Server", DIAGS_LOG_FILENAME, error_tags, action_tags, true);
   diags       = diagsConfig->diags;
   RecSetDiags(diags);
-  diags->prefix_str = "Server ";
   diags->set_stdout_output(bind_stdout);
   diags->set_stderr_output(bind_stderr);
   if (is_debug_tag_set("diags")) {
diff --git a/proxy/logging/LogStandalone.cc b/proxy/logging/LogStandalone.cc
index cb11f04..ecff2ac 100644
--- a/proxy/logging/LogStandalone.cc
+++ b/proxy/logging/LogStandalone.cc
@@ -209,7 +209,7 @@ init_log_standalone(const char *pgm_name, bool one_copy)
 
   init_system(true);
   initialize_process_manager();
-  diagsConfig = new DiagsConfig(logfile, error_tags, action_tags);
+  diagsConfig = new DiagsConfig(pgm_name, logfile, error_tags, action_tags);
   diags       = diagsConfig->diags;
 }
 
@@ -237,7 +237,7 @@ init_log_standalone_basic(const char *pgm_name)
 
   init_system(false);
   const bool use_records = false;
-  diagsConfig            = new DiagsConfig(logfile, error_tags, action_tags, use_records);
+  diagsConfig            = new DiagsConfig(pgm_name, logfile, error_tags, action_tags, use_records);
   diags                  = diagsConfig->diags;
   // set stdin/stdout to be unbuffered
   //
diff --git a/proxy/shared/DiagsConfig.cc b/proxy/shared/DiagsConfig.cc
index 2522e9c..31487bc 100644
--- a/proxy/shared/DiagsConfig.cc
+++ b/proxy/shared/DiagsConfig.cc
@@ -262,7 +262,8 @@ DiagsConfig::RegisterDiagConfig()
   RecRegisterConfigString(RECT_CONFIG, "proxy.config.diags.output.emergency", "SL", RECU_NULL, RECC_NULL, NULL, REC_SOURCE_DEFAULT);
 }
 
-DiagsConfig::DiagsConfig(const char *filename, const char *tags, const char *actions, bool use_records) : diags_log(NULL)
+DiagsConfig::DiagsConfig(const char *prefix_string, const char *filename, const char *tags, const char *actions, bool use_records)
+  : diags_log(NULL)
 {
   char diags_logpath[PATH_NAME_MAX];
   ats_scoped_str logpath;
@@ -277,7 +278,7 @@ DiagsConfig::DiagsConfig(const char *filename, const char *tags, const char *act
   ////////////////////////////////////////////////////////////////////
 
   if (!use_records) {
-    diags = new Diags(tags, actions, NULL);
+    diags = new Diags(prefix_string, tags, actions, NULL);
     config_diags_norecords();
     return;
   }
@@ -305,7 +306,7 @@ DiagsConfig::DiagsConfig(const char *filename, const char *tags, const char *act
 
   // Set up diags, FILE streams are opened in Diags constructor
   diags_log = new BaseLogFile(diags_logpath);
-  diags     = new Diags(tags, actions, diags_log);
+  diags     = new Diags(prefix_string, tags, actions, diags_log);
   diags->config_roll_diagslog((RollingEnabledValues)diags_log_roll_enable, diags_log_roll_int, diags_log_roll_size);
   diags->config_roll_outputlog((RollingEnabledValues)output_log_roll_enable, output_log_roll_int, output_log_roll_size);
 
diff --git a/proxy/shared/DiagsConfig.h b/proxy/shared/DiagsConfig.h
index afea022..6248c69 100644
--- a/proxy/shared/DiagsConfig.h
+++ b/proxy/shared/DiagsConfig.h
@@ -33,7 +33,7 @@ struct DiagsConfig {
   void RegisterDiagConfig();
   void register_diags_callbacks();
 
-  DiagsConfig(const char *filename, const char *tags, const char *actions, bool use_records = true);
+  DiagsConfig(const char *prefix_string, const char *filename, const char *tags, const char *actions, bool use_records = true);
   ~DiagsConfig();
 
 private:

-- 
To stop receiving notification emails like this one, please contact
"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>.