From 6f2d0db7adbe2bc9c2bd513f896a72a5eda70073 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Fri, 4 Dec 2015 11:55:09 +0100 Subject: [PATCH] write_graphite plugin: Rename "ForceReconnectTimeout" to "ReconnectInterval". --- src/collectd.conf.in | 1 + src/collectd.conf.pod | 8 ++++++-- src/write_graphite.c | 34 +++++++++++++++++----------------- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/collectd.conf.in b/src/collectd.conf.in index 6a3b5807..1c147590 100644 --- a/src/collectd.conf.in +++ b/src/collectd.conf.in @@ -1347,6 +1347,7 @@ # Host "localhost" # Port "2003" # Protocol "tcp" +# ReconnectInterval 0 # LogSendErrors true # Prefix "collectd" # Postfix "collectd" diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index 4bd27efa..84c77720 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -7271,9 +7271,13 @@ Service name or port number to connect to. Defaults to C<2003>. Protocol to use when connecting to I. Defaults to C. -=item B I +=item B I -This parameter enables a forced close and re-open of the established connection with the Graphite backend after the specified timeout in seconds. This behavior is desirable in environments where the connection to the Graphite backend is done through load balancers. Default to 0 seconds (0 seconds = disabled). +When set to non-zero, forces the connection to the Graphite backend to be +closed and re-opend periodically. This behavior is desirable in environments +where the connection to the Graphite backend is done through load balancers, +for example. When set to zero, the default, the connetion is kept open for as +long as possible. =item B B|B diff --git a/src/write_graphite.c b/src/write_graphite.c index bb4b284f..0702a6ea 100644 --- a/src/write_graphite.c +++ b/src/write_graphite.c @@ -96,33 +96,33 @@ struct wg_callback cdtime_t last_connect_time; /* Force reconnect useful for load balanced environments */ - cdtime_t last_force_reconnect_time; - cdtime_t force_reconnect_timeout; - _Bool conn_forced_closed; + cdtime_t last_reconnect_time; + cdtime_t reconnect_interval; + _Bool reconnect_interval_reached; }; /* wg_force_reconnect_check closes cb->sock_fd when it was open for longer - * than cb->force_reconnect_timeout. Must hold cb->send_lock when calling. */ + * than cb->reconnect_interval. Must hold cb->send_lock when calling. */ static void wg_force_reconnect_check (struct wg_callback *cb) { cdtime_t now; - if (cb->force_reconnect_timeout == 0) + if (cb->reconnect_interval == 0) return; /* check if address changes if addr_timeout */ now = cdtime (); - if ((now - cb->last_force_reconnect_time) < cb->force_reconnect_timeout) + if ((now - cb->last_reconnect_time) < cb->reconnect_interval) return; /* here we should close connection on next */ close (cb->sock_fd); cb->sock_fd = -1; - cb->last_force_reconnect_time = now; - cb->conn_forced_closed = 1; + cb->last_reconnect_time = now; + cb->reconnect_interval_reached = 1; INFO ("write_graphite plugin: Connection closed after %.3f seconds.", - CDTIME_T_TO_DOUBLE (now - cb->last_force_reconnect_time)); + CDTIME_T_TO_DOUBLE (now - cb->last_reconnect_time)); } /* @@ -280,11 +280,11 @@ static int wg_callback_init (struct wg_callback *cb) /* wg_force_reconnect_check does not flush the buffer before closing a * sending socket, so only call wg_reset_buffer() if the socket was closed - * for a different reason (tracked in cb->conn_forced_closed). */ - if (!cb->conn_forced_closed || (cb->send_buf_free == 0)) + * for a different reason (tracked in cb->reconnect_interval_reached). */ + if (!cb->reconnect_interval_reached || (cb->send_buf_free == 0)) wg_reset_buffer (cb); else - cb->conn_forced_closed = 0; + cb->reconnect_interval_reached = 0; return (0); } @@ -498,9 +498,9 @@ static int wg_config_node (oconfig_item_t *ci) cb->node = strdup (WG_DEFAULT_NODE); cb->service = strdup (WG_DEFAULT_SERVICE); cb->protocol = strdup (WG_DEFAULT_PROTOCOL); - cb->last_force_reconnect_time = cdtime(); - cb->force_reconnect_timeout = 0; - cb->conn_forced_closed = 0; + cb->last_reconnect_time = cdtime(); + cb->reconnect_interval = 0; + cb->reconnect_interval_reached = 0; cb->log_send_errors = WG_DEFAULT_LOG_SEND_ERRORS; cb->prefix = NULL; cb->postfix = NULL; @@ -541,8 +541,8 @@ static int wg_config_node (oconfig_item_t *ci) status = -1; } } - else if (strcasecmp ("ForceReconnectTimeout", child->key) == 0) - cf_util_get_cdtime (child, &cb->force_reconnect_timeout); + else if (strcasecmp ("ReconnectInterval", child->key) == 0) + cf_util_get_cdtime (child, &cb->reconnect_interval); else if (strcasecmp ("LogSendErrors", child->key) == 0) cf_util_get_boolean (child, &cb->log_send_errors); else if (strcasecmp ("Prefix", child->key) == 0) -- 2.30.2