X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fwrite_riemann.c;h=1836b6b1d67cbace9f043cbbe47776eee924c989;hb=548543e17ac17a2855959cd73d13771c7e6780d3;hp=ff7e19f069dab73f9a4fec9d49c53b82f6bab9b1;hpb=3a3b1ec85614cc3f68c1e33cdda5a7bedae4cc8b;p=collectd.git 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)