Merge branch 'collectd-5.5'
authorMarc Fournier <marc.fournier@camptocamp.com>
Fri, 26 Jun 2015 06:09:47 +0000 (08:09 +0200)
committerMarc Fournier <marc.fournier@camptocamp.com>
Fri, 26 Jun 2015 06:09:47 +0000 (08:09 +0200)
Conflicts:
src/write_redis.c

1  2 
src/write_redis.c

diff --combined src/write_redis.c
@@@ -1,6 -1,6 +1,6 @@@
  /**
   * collectd - src/write_redis.c
 - * Copyright (C) 2010       Florian Forster
 + * Copyright (C) 2010-2015  Florian Forster
   *
   * Permission is hereby granted, free of charge, to any person obtaining a
   * copy of this software and associated documentation files (the "Software"),
  #include <sys/time.h>
  #include <hiredis/hiredis.h>
  
 +#ifndef REDIS_DEFAULT_PREFIX
 +# define REDIS_DEFAULT_PREFIX "collectd/"
 +#endif
 +
  struct wr_node_s
  {
    char name[DATA_MAX_NAME_LEN];
@@@ -44,7 -40,6 +44,7 @@@
    char *host;
    int port;
    struct timeval timeout;
 +  char *prefix;
  
    redisContext *conn;
    pthread_mutex_t lock;
@@@ -72,9 -67,7 +72,9 @@@ static int wr_write (const data_set_t *
    status = FORMAT_VL (ident, sizeof (ident), vl);
    if (status != 0)
      return (status);
 -  ssnprintf (key, sizeof (key), "collectd/%s", ident);
 +  ssnprintf (key, sizeof (key), "%s%s",
 +      (node->prefix != NULL) ? node->prefix : REDIS_DEFAULT_PREFIX,
 +      ident);
    ssnprintf (time, sizeof (time), "%.9f", CDTIME_T_TO_DOUBLE(vl->time));
  
    memset (value, 0, sizeof (value));
    }
  
    rr = redisCommand (node->conn, "ZADD %s %s %s", key, time, value);
-   if (rr==NULL)
+   if (rr == NULL)
      WARNING("ZADD command error. key:%s message:%s", key, node->conn->errstr);
+   else
+     freeReplyObject (rr);
  
 -  rr = redisCommand (node->conn, "SADD collectd/values %s", ident);
+   /* TODO(octo): This is more overhead than necessary. Use the cache and
+    * metadata to determine if it is a new metric and call SADD only once for
+    * each metric. */
 +  rr = redisCommand (node->conn, "SADD %svalues %s",
 +      (node->prefix != NULL) ? node->prefix : REDIS_DEFAULT_PREFIX,
 +      ident);
    if (rr==NULL)
      WARNING("SADD command error. ident:%s message:%s", ident, node->conn->errstr);
+   else
+     freeReplyObject (rr);
  
    pthread_mutex_unlock (&node->lock);
  
@@@ -188,7 -186,6 +195,7 @@@ static int wr_config_node (oconfig_item
    node->timeout.tv_sec = 0;
    node->timeout.tv_usec = 1000;
    node->conn = NULL;
 +  node->prefix = NULL;
    pthread_mutex_init (&node->lock, /* attr = */ NULL);
  
    status = cf_util_get_string_buffer (ci, node->name, sizeof (node->name));
        status = cf_util_get_int (child, &timeout);
        if (status == 0) node->timeout.tv_usec = timeout;
      }
 +    else if (strcasecmp ("Prefix", child->key) == 0) {
 +      status = cf_util_get_string (child, &node->prefix);
 +    }
      else
        WARNING ("write_redis plugin: Ignoring unknown config option \"%s\".",
            child->key);