X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrdtool.c;h=4fcbad409aed5768613c6f9219a4c0226fde66e6;hb=ba0db2fe02e9d910b9150b561c9079ba0ba9801b;hp=0f02ffc2e47d5fd4147d8c93c864c3fd12dfffde;hpb=055e37f556974bca6152bda8a1144742da371905;p=collectd.git diff --git a/src/rrdtool.c b/src/rrdtool.c index 0f02ffc2..4fcbad40 100644 --- a/src/rrdtool.c +++ b/src/rrdtool.c @@ -627,9 +627,8 @@ static int rrd_cache_insert(const char *filename, const char *value, return (-1); } - c_avl_get(cache, filename, (void *)&rc); - - if (rc == NULL) { + int status = c_avl_get(cache, filename, (void *)&rc); + if ((status != 0) || (rc == NULL)) { rc = malloc(sizeof(*rc)); if (rc == NULL) { pthread_mutex_unlock(&cache_lock); @@ -726,7 +725,7 @@ static int rrd_cache_insert(const char *filename, const char *value, if ((cache_timeout > 0) && ((cdtime() - cache_flush_last) > cache_flush_timeout)) - rrd_cache_flush(cache_timeout); + rrd_cache_flush(cache_timeout + random_timeout); pthread_mutex_unlock(&cache_lock); @@ -863,7 +862,7 @@ static int rrd_config(const char *key, const char *value) { } cache_timeout = DOUBLE_TO_CDTIME_T(tmp); } else if (strcasecmp("CacheFlush", key) == 0) { - int tmp = atoi(value); + double tmp = atof(value); if (tmp < 0) { fprintf(stderr, "rrdtool: `CacheFlush' must " "be greater than 0.\n"); @@ -871,7 +870,7 @@ static int rrd_config(const char *key, const char *value) { "be greater than 0.\n"); return (1); } - cache_flush_timeout = TIME_T_TO_CDTIME_T(tmp); + cache_flush_timeout = DOUBLE_TO_CDTIME_T(tmp); } else if (strcasecmp("DataDir", key) == 0) { char *tmp; size_t len; @@ -1054,11 +1053,11 @@ static int rrd_init(void) { random_timeout = 0; cache_flush_timeout = 0; } else if (cache_flush_timeout < cache_timeout) { - INFO("rrdtool plugin: \"CacheFlush %u\" is less than \"CacheTimeout %u\". " - "Ajusting \"CacheFlush\" to %u seconds.", - (unsigned int)CDTIME_T_TO_TIME_T(cache_flush_timeout), - (unsigned int)CDTIME_T_TO_TIME_T(cache_timeout), - (unsigned int)CDTIME_T_TO_TIME_T(cache_timeout * 10)); + INFO("rrdtool plugin: \"CacheFlush %.3f\" is less than \"CacheTimeout " + "%.3f\". Adjusting \"CacheFlush\" to %.3f seconds.", + CDTIME_T_TO_DOUBLE(cache_flush_timeout), + CDTIME_T_TO_DOUBLE(cache_timeout), + CDTIME_T_TO_DOUBLE(cache_timeout * 10)); cache_flush_timeout = 10 * cache_timeout; } @@ -1071,8 +1070,9 @@ static int rrd_init(void) { pthread_mutex_unlock(&cache_lock); - status = plugin_thread_create(&queue_thread, /* attr = */ NULL, - rrd_queue_thread, /* args = */ NULL); + status = + plugin_thread_create(&queue_thread, /* attr = */ NULL, rrd_queue_thread, + /* args = */ NULL, "rrdtool queue"); if (status != 0) { ERROR("rrdtool plugin: Cannot create queue-thread."); return (-1);