diff --git a/src/postgresql.c b/src/postgresql.c
index 635abfca61bf5647b4d53cea55601a5182a8997e..bef3490ff0f16852d345c85bf8c167f851116597 100644 (file)
--- a/src/postgresql.c
+++ b/src/postgresql.c
/* writer "caching" settings */
cdtime_t commit_interval;
cdtime_t next_commit;
+ cdtime_t expire_delay;
char *host;
char *port;
db->commit_interval = 0;
db->next_commit = 0;
+ db->expire_delay = 0;
db->database = sstrdup (name);
db->host = NULL;
c_psql_database_t *db;
int success = 0;
- int i;
+ size_t i;
if ((ud == NULL) || (ud->data == NULL)) {
log_err ("c_psql_read: Invalid user data.");
{
char *str_ptr;
size_t str_len;
-
- int i;
+ size_t i;
str_ptr = string;
str_len = string_len;
{
char *str_ptr;
size_t str_len;
-
- int i;
+ size_t i;
str_ptr = string;
str_len = string_len;
size_t str_len;
gauge_t *rates = NULL;
-
- int i;
+ size_t i;
str_ptr = string;
str_len = string_len;
if (ds->ds[i].type == DS_TYPE_GAUGE)
status = ssnprintf (str_ptr, str_len,
- ",%f", vl->values[i].gauge);
+ ","GAUGE_FORMAT, vl->values[i].gauge);
else if (store_rates) {
if (rates == NULL)
rates = uc_get_rate (ds, vl);
const char *params[9];
int success = 0;
- int i;
+ size_t i;
if ((ud == NULL) || (ud->data == NULL)) {
log_err ("c_psql_write: Invalid user data.");
#undef VALUE_OR_NULL
+ if( db->expire_delay > 0 && vl->time < (cdtime() - vl->interval - db->expire_delay) ) {
+ log_info ("c_psql_write: Skipped expired value @ %s - %s/%s-%s/%s-%s/%s",
+ params[0], params[1], params[2], params[3], params[4], params[5], params[6] );
+ return 0;
+ }
+
pthread_mutex_lock (&db->db_lock);
if (0 != c_psql_check_connection (db)) {
c_psql_database_t *db;
char cb_name[DATA_MAX_NAME_LEN];
- struct timespec cb_interval = { 0, 0 };
user_data_t ud;
static _Bool have_flush = 0;
cf_util_get_cdtime (c, &db->interval);
else if (strcasecmp ("CommitInterval", c->key) == 0)
cf_util_get_cdtime (c, &db->commit_interval);
+ else if (strcasecmp ("ExpireDelay", c->key) == 0)
+ cf_util_get_cdtime (c, &db->expire_delay);
else
log_warn ("Ignoring unknown config key \"%s\".", c->key);
}
ssnprintf (cb_name, sizeof (cb_name), "postgresql-%s", db->instance);
if (db->queries_num > 0) {
- CDTIME_T_TO_TIMESPEC (db->interval, &cb_interval);
-
++db->ref_cnt;
plugin_register_complex_read ("postgresql", cb_name, c_psql_read,
- /* interval = */ (db->interval > 0) ? &cb_interval : NULL,
- &ud);
+ /* interval = */ db->interval, &ud);
}
if (db->writers_num > 0) {
++db->ref_cnt;