fix(stats): always initialize m_output

Signed-off-by: Andrea Terzolo <andreaterzolo3@gmail.com>
This commit is contained in:
Andrea Terzolo 2023-09-07 17:38:38 +02:00 committed by poiana
parent c2b940f8c4
commit e55bedac0b

View File

@ -91,6 +91,11 @@ stats_writer::stats_writer(
m_config = config; m_config = config;
if (config->m_metrics_enabled) if (config->m_metrics_enabled)
{ {
/* m_outputs should always be initialized because we use it
* to extract output-queue stats in both cases: rule output and file output.
*/
m_outputs = outputs;
if (!config->m_metrics_output_file.empty()) if (!config->m_metrics_output_file.empty())
{ {
m_file_output.exceptions(std::ofstream::failbit | std::ofstream::badbit); m_file_output.exceptions(std::ofstream::failbit | std::ofstream::badbit);
@ -100,7 +105,6 @@ stats_writer::stats_writer(
if (config->m_metrics_stats_rule_enabled) if (config->m_metrics_stats_rule_enabled)
{ {
m_outputs = outputs;
m_initialized = true; m_initialized = true;
} }
} }
@ -159,7 +163,6 @@ inline void stats_writer::push(const stats_writer::msg& m)
void stats_writer::worker() noexcept void stats_writer::worker() noexcept
{ {
stats_writer::msg m; stats_writer::msg m;
nlohmann::json jmsg;
bool use_outputs = m_config->m_metrics_stats_rule_enabled; bool use_outputs = m_config->m_metrics_stats_rule_enabled;
bool use_file = !m_config->m_metrics_output_file.empty(); bool use_file = !m_config->m_metrics_output_file.empty();
auto tick = stats_writer::get_ticker(); auto tick = stats_writer::get_ticker();
@ -198,6 +201,7 @@ void stats_writer::worker() noexcept
if (use_file) if (use_file)
{ {
nlohmann::json jmsg;
jmsg["sample"] = m_total_samples; jmsg["sample"] = m_total_samples;
jmsg["output_fields"] = m.output_fields; jmsg["output_fields"] = m.output_fields;
m_file_output << jmsg.dump() << std::endl; m_file_output << jmsg.dump() << std::endl;