From: Aki Tuomi Date: Wed, 4 Oct 2023 05:50:04 +0000 (+0300) Subject: stats: Add REOPEN command X-Git-Tag: 2.4.0~2478 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=29db4bd6afbc83d55c11a165162e0e5a115fe738;p=thirdparty%2Fdovecot%2Fcore.git stats: Add REOPEN command --- diff --git a/src/stats/client-reader.c b/src/stats/client-reader.c index 5af9e9129a..a6dba0c096 100644 --- a/src/stats/client-reader.c +++ b/src/stats/client-reader.c @@ -12,6 +12,7 @@ #include "stats-settings.h" #include "client-reader.h" #include "client-writer.h" +#include "event-exporter.h" struct reader_client { struct connection conn; @@ -223,6 +224,10 @@ reader_client_input_args(struct connection *conn, const char *const *args) return reader_client_input_metrics_remove(client, args); else if (strcmp(cmd, "DUMP-RESET") == 0) return reader_client_input_dump_reset(client, args); + else if (strcmp(cmd, "REOPEN") == 0) { + event_export_transport_file_reopen(); + o_stream_nsend(client->conn.output, "+\n", 2); + } return 1; } diff --git a/src/stats/event-exporter-transport-file.c b/src/stats/event-exporter-transport-file.c index e7cf0ddd9e..9f44cf1de9 100644 --- a/src/stats/event-exporter-transport-file.c +++ b/src/stats/event-exporter-transport-file.c @@ -163,3 +163,14 @@ void event_export_transport_unix(const struct exporter *exporter, return; event_export_transport_file_write(node, buf); } + +void event_export_transport_file_reopen(void) +{ + /* close all files, but not unix sockets */ + struct exporter_file *node = exporter_file_list_head; + while (node != NULL) { + if (!node->unix_socket) + exporter_file_close(node); + node = node->next; + } +} diff --git a/src/stats/event-exporter.h b/src/stats/event-exporter.h index b4622c23f6..c093eff9b3 100644 --- a/src/stats/event-exporter.h +++ b/src/stats/event-exporter.h @@ -15,6 +15,7 @@ void event_export_transport_http_post_deinit(void); void event_export_transport_log(const struct exporter *exporter, const buffer_t *buf); void event_export_transport_file(const struct exporter *exporter, const buffer_t *buf); void event_export_transport_unix(const struct exporter *exporter, const buffer_t *buf); +void event_export_transport_file_reopen(void); void event_export_transport_file_deinit(void); /* append a microsecond resolution RFC3339 UTC timestamp */