From: Stephan Bosch Date: Thu, 14 Nov 2019 22:57:19 +0000 (+0100) Subject: stats: Make metrics struct a global variable. X-Git-Tag: 2.3.11.2~317 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7e54802040f409d2d672a4bc0a5ead973951d4be;p=thirdparty%2Fdovecot%2Fcore.git stats: Make metrics struct a global variable. --- diff --git a/src/stats/client-reader.c b/src/stats/client-reader.c index 03145fb540..af75fc9516 100644 --- a/src/stats/client-reader.c +++ b/src/stats/client-reader.c @@ -13,17 +13,15 @@ struct reader_client { struct connection conn; - struct stats_metrics *metrics; }; static struct connection_list *reader_clients = NULL; -void client_reader_create(int fd, struct stats_metrics *metrics) +void client_reader_create(int fd) { struct reader_client *client; client = i_new(struct reader_client, 1); - client->metrics = metrics; connection_init_server(reader_clients, &client->conn, "stats-reader", fd, fd); } @@ -110,7 +108,7 @@ reader_client_input_dump(struct reader_client *client, const char *const *args) const struct metric *metric; o_stream_cork(client->conn.output); - iter = stats_metrics_iterate_init(client->metrics); + iter = stats_metrics_iterate_init(stats_metrics); while ((metric = stats_metrics_iterate(iter)) != NULL) T_BEGIN { string_t *str = t_str_new(128); str_append_tabescaped(str, metric->name); @@ -130,7 +128,7 @@ reader_client_input_dump_reset(struct reader_client *client, const char *const *args) { (void)reader_client_input_dump(client, args); - stats_metrics_reset(client->metrics); + stats_metrics_reset(stats_metrics); return 1; } diff --git a/src/stats/client-reader.h b/src/stats/client-reader.h index e011b77767..2acab19ae7 100644 --- a/src/stats/client-reader.h +++ b/src/stats/client-reader.h @@ -3,7 +3,7 @@ struct stats_metrics; -void client_reader_create(int fd, struct stats_metrics *metrics); +void client_reader_create(int fd); void client_readers_init(void); void client_readers_deinit(void); diff --git a/src/stats/client-writer.c b/src/stats/client-writer.c index d9638b74bb..c0e790237f 100644 --- a/src/stats/client-writer.c +++ b/src/stats/client-writer.c @@ -24,7 +24,6 @@ struct stats_event { struct writer_client { struct connection conn; - struct stats_metrics *metrics; struct stats_event *events; HASH_TABLE(struct stats_event *, struct stats_event *) events_hash; @@ -37,7 +36,7 @@ static void client_writer_send_handshake(struct writer_client *client) string_t *str = t_str_new(128); str_append(str, "FILTER\t"); - event_filter_export(stats_metrics_get_event_filter(client->metrics), str); + event_filter_export(stats_metrics_get_event_filter(stats_metrics), str); str_append_c(str, '\n'); o_stream_nsend(client->conn.output, str_data(str), str_len(str)); } @@ -53,12 +52,11 @@ static int stats_event_cmp(const struct stats_event *event1, return event1->id == event2->id ? 0 : 1; } -void client_writer_create(int fd, struct stats_metrics *metrics) +void client_writer_create(int fd) { struct writer_client *client; client = i_new(struct writer_client, 1); - client->metrics = metrics; hash_table_create(&client->events_hash, default_pool, 0, stats_event_hash, stats_event_cmp); @@ -126,7 +124,7 @@ writer_client_run_event(struct writer_client *client, event_unref(&event); return FALSE; } - stats_metrics_event(client->metrics, event, &ctx); + stats_metrics_event(stats_metrics, event, &ctx); *event_r = event; return TRUE; } diff --git a/src/stats/client-writer.h b/src/stats/client-writer.h index fee633d94e..dbb9e75856 100644 --- a/src/stats/client-writer.h +++ b/src/stats/client-writer.h @@ -3,7 +3,7 @@ struct stats_metrics; -void client_writer_create(int fd, struct stats_metrics *metrics); +void client_writer_create(int fd); void client_writers_init(void); void client_writers_deinit(void); diff --git a/src/stats/main.c b/src/stats/main.c index 7d84524997..1e8283fa50 100644 --- a/src/stats/main.c +++ b/src/stats/main.c @@ -11,8 +11,7 @@ #include "client-reader.h" const struct stats_settings *stats_settings; - -static struct stats_metrics *metrics; +struct stats_metrics *stats_metrics; static bool client_is_writer(const char *path) { @@ -36,9 +35,9 @@ static bool client_is_writer(const char *path) static void client_connected(struct master_service_connection *conn) { if (client_is_writer(conn->name)) - client_writer_create(conn->fd, metrics); + client_writer_create(conn->fd); else - client_reader_create(conn->fd, metrics); + client_reader_create(conn->fd); master_service_client_connection_accept(conn); } @@ -56,10 +55,9 @@ static void main_preinit(void) static void main_init(void) { void **sets = master_service_settings_get_others(master_service); - stats_settings = sets[0]; - metrics = stats_metrics_init(stats_settings); + stats_metrics = stats_metrics_init(stats_settings); stats_event_categories_init(); client_readers_init(); client_writers_init(); @@ -70,7 +68,7 @@ static void main_deinit(void) client_readers_deinit(); client_writers_deinit(); stats_event_categories_deinit(); - stats_metrics_deinit(&metrics); + stats_metrics_deinit(&stats_metrics); } int main(int argc, char *argv[]) diff --git a/src/stats/stats-common.h b/src/stats/stats-common.h index 5f833bbd52..932ea32c37 100644 --- a/src/stats/stats-common.h +++ b/src/stats/stats-common.h @@ -5,5 +5,6 @@ #include "stats-settings.h" extern const struct stats_settings *stats_settings; +extern struct stats_metrics *stats_metrics; #endif diff --git a/src/stats/test-client-reader.c b/src/stats/test-client-reader.c index 77aeb9f2ee..710e9901b2 100644 --- a/src/stats/test-client-reader.c +++ b/src/stats/test-client-reader.c @@ -35,9 +35,10 @@ bool test_stats_callback(struct event *event, struct failure_context *ctx, const char *fmt ATTR_UNUSED, va_list args ATTR_UNUSED) { - if (metrics != NULL) { - stats_metrics_event(metrics, event, ctx); - struct event_filter *filter = stats_metrics_get_event_filter(metrics); + if (stats_metrics != NULL) { + stats_metrics_event(stats_metrics, event, ctx); + struct event_filter *filter = + stats_metrics_get_event_filter(stats_metrics); return !event_filter_match(filter, event, ctx); } return TRUE; @@ -71,7 +72,7 @@ static void test_dump_metrics(void) struct ioloop *loop = io_loop_create(); - client_reader_create(fds[1], metrics); + client_reader_create(fds[1]); connection_init_client_fd(conn_list, conn, "stats", fds[0], fds[0]); o_stream_nsend_str(conn->output, "DUMP\tcount\n"); @@ -161,7 +162,7 @@ static void test_dump_metrics_group_by(void) struct ioloop *loop = io_loop_create(); - client_reader_create(fds[1], metrics); + client_reader_create(fds[1]); connection_init_client_fd(conn_list, &conn->conn, "stats", fds[0], fds[0]); o_stream_nsend_str(conn->conn.output, "DUMP\tcount\n"); diff --git a/src/stats/test-client-writer.c b/src/stats/test-client-writer.c index 4561eb07e2..c7f590996e 100644 --- a/src/stats/test-client-writer.c +++ b/src/stats/test-client-writer.c @@ -61,7 +61,7 @@ static void test_write_one(struct event *event ATTR_UNUSED) struct ioloop *loop = io_loop_create(); - client_writer_create(fds[1], metrics); + client_writer_create(fds[1]); connection_init_client_fd(conn_list, conn, "stats", fds[0], fds[0]); last_sent_event = event; @@ -89,7 +89,7 @@ bool test_stats_callback(struct event *event, return TRUE; recurse_back = TRUE; - if (metrics != NULL) { + if (stats_metrics != NULL) { test_write_one(event); } recurse_back = FALSE; diff --git a/src/stats/test-stats-common.c b/src/stats/test-stats-common.c index f6e8f290ac..7c94ff530a 100644 --- a/src/stats/test-stats-common.c +++ b/src/stats/test-stats-common.c @@ -13,7 +13,7 @@ struct event_category child_test_category = { }; pool_t test_pool; -struct stats_metrics *metrics = NULL; +struct stats_metrics *stats_metrics = NULL; static bool callback_added = FALSE; @@ -50,12 +50,12 @@ void test_init(const char *settings_blob) stats_event_category_register(child_test_category.name, &test_category); struct stats_settings *set = read_settings(settings_blob); - metrics = stats_metrics_init(set); + stats_metrics = stats_metrics_init(set); } void test_deinit(void) { - stats_metrics_deinit(&metrics); + stats_metrics_deinit(&stats_metrics); stats_event_categories_deinit(); pool_unref(&test_pool); } @@ -72,7 +72,8 @@ void test_event_send(struct event *event) uint64_t get_stats_dist_field(const char *metric_name, enum stats_dist_field field) { - struct stats_metrics_iter *iter = stats_metrics_iterate_init(metrics); + struct stats_metrics_iter *iter = + stats_metrics_iterate_init(stats_metrics); const struct metric *metric; while((metric = stats_metrics_iterate(iter)) != NULL) if (strcmp(metric->name, metric_name) == 0) diff --git a/src/stats/test-stats-common.h b/src/stats/test-stats-common.h index 06daca3c40..86c03f4c8c 100644 --- a/src/stats/test-stats-common.h +++ b/src/stats/test-stats-common.h @@ -1,7 +1,7 @@ #ifndef TEST_STATS_COMMON #define TEST_STATS_COMMON 1 -#include "lib.h" +#include "stats-common.h" #include "event-filter.h" #include "istream.h" #include "settings-parser.h" @@ -16,8 +16,6 @@ extern struct event_category test_category; extern struct event_category child_test_category; extern pool_t test_pool; -extern struct stats_metrics *metrics; - bool test_stats_callback(struct event *event, enum event_callback_type type ATTR_UNUSED, struct failure_context *ctx, const char *fmt ATTR_UNUSED, diff --git a/src/stats/test-stats-metrics.c b/src/stats/test-stats-metrics.c index c255b77333..558ad7bbbb 100644 --- a/src/stats/test-stats-metrics.c +++ b/src/stats/test-stats-metrics.c @@ -8,9 +8,10 @@ bool test_stats_callback(struct event *event, struct failure_context *ctx, const char *fmt ATTR_UNUSED, va_list args ATTR_UNUSED) { - if (metrics != NULL) { - stats_metrics_event(metrics, event, ctx); - struct event_filter *filter = stats_metrics_get_event_filter(metrics); + if (stats_metrics != NULL) { + stats_metrics_event(stats_metrics, event, ctx); + struct event_filter *filter = + stats_metrics_get_event_filter(stats_metrics); return !event_filter_match(filter, event, ctx); } return TRUE; @@ -58,7 +59,8 @@ static void test_stats_metrics_filter(void) test_init(settings_blob_2); /* check filter */ - struct event_filter *filter = stats_metrics_get_event_filter(metrics); + struct event_filter *filter = + stats_metrics_get_event_filter(stats_metrics); string_t *str_filter = t_str_new(64); event_filter_export(filter, str_filter); test_assert_strcmp("ntest ftest_field value ", @@ -187,7 +189,7 @@ static void test_stats_metrics_group_by_discrete_real(const struct discrete_test test_assert(get_stats_dist_field("test", STATS_DIST_COUNT) == test->num_values * test->num_values); /* analyze the structure */ - struct stats_metrics_iter *iter = stats_metrics_iterate_init(metrics); + struct stats_metrics_iter *iter = stats_metrics_iterate_init(stats_metrics); const struct metric *root_metric = stats_metrics_iterate(iter); stats_metrics_iterate_deinit(&iter); @@ -363,7 +365,7 @@ static void test_stats_metrics_group_by_quantized_real(const struct quantized_te test_assert(get_stats_dist_field("test", STATS_DIST_COUNT) == test->num_inputs); /* analyze the structure */ - struct stats_metrics_iter *iter = stats_metrics_iterate_init(metrics); + struct stats_metrics_iter *iter = stats_metrics_iterate_init(stats_metrics); const struct metric *root_metric = stats_metrics_iterate(iter); stats_metrics_iterate_deinit(&iter);