]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
stats: Add REOPEN command
authorAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 4 Oct 2023 05:50:04 +0000 (08:50 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 30 Oct 2023 06:29:29 +0000 (06:29 +0000)
src/stats/client-reader.c
src/stats/event-exporter-transport-file.c
src/stats/event-exporter.h

index 5af9e9129a7148a56d3b868725d3c13735e75ebe..a6dba0c09622cfa445a4d7508bb9fbf2dff734f0 100644 (file)
@@ -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;
 }
 
index e7cf0ddd9e61ff94f4d71c76e5aaee30af95b323..9f44cf1de9c5e1e71e8a28215c139c1440f01b25 100644 (file)
@@ -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;
+       }
+}
index b4622c23f6efe67d84510effe5a830df1ddaf156..c093eff9b39e61f1e24ed32e9718e8ccf06a1706 100644 (file)
@@ -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 */