From 548543e17ac17a2855959cd73d13771c7e6780d3 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Ritschard Date: Thu, 14 Apr 2016 10:11:18 +0200 Subject: [PATCH] write_riemann: add a BatchFlushTimeout option --- src/write_riemann.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/write_riemann.c b/src/write_riemann.c index ff7e19f0..1836b6b1 100644 --- a/src/write_riemann.c +++ b/src/write_riemann.c @@ -62,6 +62,7 @@ struct riemann_host { double ttl_factor; cdtime_t batch_init; int batch_max; + int batch_timeout; int reference_count; riemann_message_t *batch_msg; char *tls_ca_file; @@ -515,6 +516,7 @@ static int wrr_batch_add_value_list(struct riemann_host *host, /* {{{ */ riemann_message_t *msg; size_t len; int ret; + cdtime_t timeout; msg = wrr_value_list_to_message(host, ds, vl, statuses); if (msg == NULL) @@ -546,7 +548,12 @@ static int wrr_batch_add_value_list(struct riemann_host *host, /* {{{ */ ret = 0; if ((host->batch_max < 0) || (((size_t) host->batch_max) <= len)) { ret = wrr_batch_flush_nolock(0, host); - } + } else { + if (host->batch_timeout > 0) { + timeout = TIME_T_TO_CDTIME_T((time_t)host->batch_timeout); + ret = wrr_batch_flush_nolock(timeout, host); + } + } pthread_mutex_unlock(&host->lock); return ret; @@ -659,6 +666,7 @@ static int wrr_config_node(oconfig_item_t *ci) /* {{{ */ host->batch_mode = 1; host->batch_max = RIEMANN_BATCH_MAX; /* typical MSS */ host->batch_init = cdtime(); + host->batch_timeout = 0; host->ttl_factor = RIEMANN_TTL_FACTOR; host->client = NULL; host->client_type = RIEMANN_CLIENT_TCP; @@ -704,6 +712,10 @@ static int wrr_config_node(oconfig_item_t *ci) /* {{{ */ status = cf_util_get_int(child, &host->batch_max); if (status != 0) break; + } else if (strcasecmp("BatchFlushTimeout", child->key) == 0) { + status = cf_util_get_int(child, &host->batch_timeout); + if (status != 0) + break; } else if (strcasecmp("Timeout", child->key) == 0) { status = cf_util_get_int(child, (int *)&host->timeout.tv_sec); if (status != 0) -- 2.11.0