Send an EOF from charts.d.plugin before exit (#14680)
* send an EOF before exit * use empty * make an EXIT keyword
Emmanuel Vasilakis committed
Mar 8, 2023 at 17:21 UTC
eaa64624fe3b1fa6c071539854cfb22c2370e5bf
3 files changed
+11
collectors/charts.d.plugin/charts.d.plugin.in
+1
@@ -32,6 +32,7 @@ chartsd_cleanup() {
32
[ $debug -eq 1 ] && echo >&2 "$PROGRAM_NAME: cleaning up temporary directory $TMP_DIR ..."
33
rm -rf "$TMP_DIR"
34
fi
35
+ echo "EXIT"
36
exit 0
37
}
38
trap chartsd_cleanup EXIT QUIT HUP INT TERM
collectors/plugins.d/plugins_d.h
+2
@@ -43,6 +43,8 @@
43
#define PLUGINSD_KEYWORD_HOST_LABEL "HOST_LABEL"
44
#define PLUGINSD_KEYWORD_HOST "HOST"
45
46
+#define PLUGINSD_KEYWORD_EXIT "EXIT"
47
+
48
#define PLUGINS_FUNCTIONS_TIMEOUT_DEFAULT 10 // seconds
49
50
#define PLUGINSD_LINE_MAX_SSL_READ 512
collectors/plugins.d/pluginsd_parser.c
+8
@@ -1902,6 +1902,12 @@ inline size_t pluginsd_process(RRDHOST *host, struct plugind *cd, FILE *fp_plugi
1902
return count;
1903
}
1904
1905
+PARSER_RC pluginsd_exit(char **words __maybe_unused, size_t num_words __maybe_unused, void *user __maybe_unused)
1906
+{
1907
+ info("PLUGINSD: plugin called EXIT.");
1908
+ return PARSER_RC_STOP;
1909
+}
1910
+
1911
static void pluginsd_keywords_init_internal(PARSER *parser, PLUGINSD_KEYWORDS types, void (*add_func)(PARSER *parser, char *keyword, keyword_function func)) {
1912
1913
if (types & PARSER_INIT_PLUGINSD) {
@@ -1912,6 +1918,8 @@ static void pluginsd_keywords_init_internal(PARSER *parser, PLUGINSD_KEYWORDS ty
1918
add_func(parser, PLUGINSD_KEYWORD_HOST_DEFINE_END, pluginsd_host_define_end);
1919
add_func(parser, PLUGINSD_KEYWORD_HOST_LABEL, pluginsd_host_labels);
1920
add_func(parser, PLUGINSD_KEYWORD_HOST, pluginsd_host);
1921
+
1922
+ add_func(parser, PLUGINSD_KEYWORD_EXIT, pluginsd_exit);
1923
}
1924
1925
if (types & (PARSER_INIT_PLUGINSD | PARSER_INIT_STREAMING)) {