Code

Merge branch 'collectd-4.10' into collectd-5.0
authorFlorian Forster <octo@collectd.org>
Sat, 21 Jan 2012 12:07:50 +0000 (13:07 +0100)
committerFlorian Forster <octo@collectd.org>
Sat, 21 Jan 2012 12:07:50 +0000 (13:07 +0100)
Conflicts:
ChangeLog
src/df.c
src/plugin.h
version-gen.sh

Change-Id: Id7a31088cdb3371534d5c1e6a690464f3343543d

1  2 
AUTHORS
ChangeLog
src/collectd.conf.pod
src/common.c
src/df.c
src/interface.c
src/network.c
src/plugin.c
src/plugin.h
src/pyvalues.c

diff --cc AUTHORS
Simple merge
diff --cc ChangeLog
index f74445438dade6407a8195382d53db26be348f3f,1f9be512e4b0305cf44aeb05cb96838b0946d1e4..2c75b5dabdec890f04702fe47e1563f0b5c2ac62
+++ b/ChangeLog
 +2011-10-07, Version 5.0.1
 +      * collectd: A mutex leak has been fixed in the meta data code. Thanks
 +        to Rafal Lesniak for his patch.
 +      * collectd: Compatibility fixes for GCC 4.6 have been applied. Thanks
 +        to Peter Green for his patch.
 +      * csv plugin: The line buffer size has been increased. Thanks to Colin
 +        McCabe for the patch.
 +      * curl_json plugin: Don't use the "parent" node to build the type
 +        instance, if it is empty. Compatibility with libyajl 2 has been
 +        added. Thanks to "spupykin" of the Arch Linux project for the initial
 +        code. Formatting of time has been fixed in the JSON module.
 +      * exec plugin: Fix the timestamp value passed to notification scripts.
 +        Thanks to Alexander Kovalenko for fixing this.
 +      * iptables plugin: Fix linking with some versions of libiptc.
 +      * irq plugin: Fix support for interrupts under Linux. The old code
 +        assumed that interrupts have a numeric value -- this is no longer
 +        true for Linux. Thanks to Bostjan Skufca for implementing this.
 +      * notify_desktop plugin: Compatibility with libnotify 0.7 has been
 +        added. Thanks to Samuli Suominen for his patch.
 +      * processes plugin: Fix handling of regular expressions containing
 +        spaces. Thanks for Sebastian Harl for fixing this.
 +      * rrdtool, rrdcached plugins: Improve precision of the XFF parameter.
 +        Previously, values like 0.999 would have been rounded to 1.0. Thanks
 +        to Francois-Xavier Bourlet for fixing this.
 +      * varnish plugin: Fix data type handling of some metrics. Some values
 +        were submitted as gauge even though they were derives.
 +      * Various plugin: Set a multi-threading flag in libcurl. Thanks to Mike
 +        Flisher for the fix.
 +
 +2011-03-28, Version 5.0.0
 +      * collectd: The "FQDNLookup" option is now enabled by default.
 +      * collectd: The internal representation of time has been changed to
 +        allow a higher accuracy than one second.
 +      * collectdcmd: This new command line utility can send various commands
 +        to collectd using the UnixSock plugin. Thanks to Håkon Dugstad
 +        Johnsen and Sebastian Harl for their code.
 +      * collectd-nagios: The "-m" option has been implemented (treat NaNs as
 +        critical).
 +      * collectd-tg: Traffic generator creating bogus network traffic
 +        compatible to the Network plugin. This utility can be used to
 +        stress-test new write plugins and collectd in general.
 +      * libcollectdclient: Creating and sending network packets has been
 +        added to the collectd client library.
 +      * All data sets: The data source name of all data sets with exactly
 +        one data source has been changed to "value".
 +      * All plugins: All "counter" data sources have been converted to
 +        "derive" data sources. All plugins now use "derive" by default, but
 +        plugins such as the network plugin can still handle "counter", of
 +        course. The minimum value of all derive data sources is zero, the
 +        maximum value is unspecified.
 +      * amqp plugin: The new AMQP plugin can send data to and receive data
 +        from an AMQP broker. Thanks to Sebastien Pahl for his code.
 +      * apache plugin: Backwards compatibility code has been removed.
 +        Support for the IBM HTTP Server has been added. Thanks to Manuel
 +        Luis Sanmartín Rozada for his patch.
 +      * contextswitch plugin: Support for sysctlbyname(3) has been added.
 +        Thanks to Kimo Rosenbaum for his patch.
 +      * df plugin: The default behavior has been changed to be equivalent to
 +        the "ReportReserved" behavior of v4.
 +      * dns plugin: Improved RFC 1035 name parsing has been imported from
 +        "dnstop".
 +      * exec plugin: Backwards compatibility code has been removed.
 +      * GenericJMX plugin: The "InstancePrefix" option has been added to
 +        "Connection" blocks.
 +      * hddtemp plugin: The "TranslateDevicename" config option has been
 +        removed.
 +      * interface plugin: Use the "plugin instance" to store the interface
 +        value.
 +      * libvirt plugin: The "InterfaceFormat" option has been added. Thanks
 +        to Ruben Kerkhof for his patch.
 +      * lpar plugin: New plugins for "logical partitions", a virtualization
 +        technique of POWER CPUs. Thanks to Aurélien Reynaud for his code and
 +        patience.
 +      * modbus plugin: Support for libmodbus 2.9.2 has been added and the
 +        license has been changes to LGPLv2.1.
 +      * mysql plugin: Backwards compatibility code has been removed. The
 +        data sets used have been improved.
 +      * network plugin: The default buffer size has been increased to
 +        1452 bytes.
 +      * perl plugin: Backwards compatibility code has been removed.
 +      * postgresql plugin: Backwards compatibility code has been removed.
 +      * redis plugin: Plugin for collecting statistics from Redis, a key-
 +        value store, has been added. Thanks to Andres J. Diaz for his code.
 +      * swap plugin: Implement collection of physical and virtual memory
 +        statistics under Solaris. The new default is collecting physical
 +        memory. Thanks to Aurélien Reynaud for his patches.
 +      * threshold plugin: The threshold configuration has been moved into
 +        this separate plugin.
 +      * unixsock plugin: The "DeleteSocket" option has been added.
 +      * varnish plugin: The new Varnish plugin reads statistics from
 +        Varnish, a web accelerator. Thanks to Jérôme Renard and Marc
 +        Fournier for their contributions.
 +      * write_redis: New plugin for writing data to Redis, a key-value
 +        store.
 +      * zfs_arc plugin: The data sets have been replaced by more elegant
 +        alternatives.
 +      * v5upgrade target: Target for converting v4 data sets to the v5
 +        schema.
 +
+ 2012-01-21, Version 4.10.5
+       * curl_xml plugin: Fix handling of file:// and other URLs (which don't
+         follow HTTP status codes). Thanks to Fabien Wernli for his patch!
+       * df plugin: Fix handling of negative "available" counts. This can
+         occur with some file systems, for example UFS. Thanks to Toni Ylenius
+         for his patch.
+       * interface plugin: "mac" interfaces are now ignored on Solaris. These
+         pseudo-interfaces occur multiple times, causing warnings. Also switch
+         to 64-bit counters on Solaris, improving overflow behavior for
+         high-speed interfaces. Thanks to Eddy Geez and Fabien Wernli for
+         their patches.
+       * memory plugin: Account kernel and unused memory under Solaris. Thanks
+         to Fabien Wernli for his patch.
+       * network plugin: A bug in the interaction between the Network plugin
+         and filter chains has been fixed: When a filter modified a field such
+         as the hostname, subsequent values in the same network packets could
+         have ended up using the modified name rather than the original name.
+         Thanks to Sebastian Harl for identifying the problem.
+       * python plugin: A memory leak has been fixed. Thanks to Sven Trenkel
+         for fixing this bug!
  2011-10-14, Version 4.10.4
        * collectd: A mutex leak has been fixed in the meta data code. Thanks
          to Rafal Lesniak for his patch.
Simple merge
diff --cc src/common.c
Simple merge
diff --cc src/df.c
index 5391f50c852f8dea77e620683c1a2d5e51fd3eac,9d53b0b67eb7c326d3b1811682144d2a7cb6b14b..371a7fc3db9973b676322a75362d14b633b45a81
+++ b/src/df.c
@@@ -245,22 -274,54 +245,37 @@@ static int df_read (void
  
                blocksize = BLOCKSIZE(statbuf);
  
-               /* Sanity-check for the values in the struct */
 -              if (report_reserved)
 -              {
 -                      uint64_t blk_free;
 -                      uint64_t blk_reserved;
 -                      uint64_t blk_used;
 -
 -                      /*
 -                       * Sanity-check for the values in the struct
 -                       */
 -                      /* Check for negative "available" byes. For example UFS can
 -                       * report negative free space for user. Notice. blk_reserved
 -                       * will start to diminish after this. */
++              /*
++               * Sanity-check for the values in the struct
++               */
++              /* Check for negative "available" byes. For example UFS can
++               * report negative free space for user. Notice. blk_reserved
++               * will start to diminish after this. */
+ #if HAVE_STATVFS
 -                      /* Cast is needed to avoid compiler warnings.
 -                       * ((struct statvfs).f_bavail is unsigned (POSIX)) */
 -                      if (((int64_t) statbuf.f_bavail) < 0)
 -                              statbuf.f_bavail = 0;
++              /* Cast is needed to avoid compiler warnings.
++               * ((struct statvfs).f_bavail is unsigned (POSIX)) */
++              if (((int64_t) statbuf.f_bavail) < 0)
++                      statbuf.f_bavail = 0;
+ #elif HAVE_STATFS
 -                      if (statbuf.f_bavail < 0)
 -                              statbuf.f_bavail = 0;
++              if (statbuf.f_bavail < 0)
++                      statbuf.f_bavail = 0;
+ #endif
 -                      /* Make sure that f_blocks >= f_bfree >= f_bavail */
 -                      if (statbuf.f_bfree < statbuf.f_bavail)
 -                              statbuf.f_bfree = statbuf.f_bavail;
 -                      if (statbuf.f_blocks < statbuf.f_bfree)
 -                              statbuf.f_blocks = statbuf.f_bfree;
 -
 -                      blk_free = (uint64_t) statbuf.f_bavail;
 -                      blk_reserved = (uint64_t) (statbuf.f_bfree - statbuf.f_bavail);
 -                      blk_used = (uint64_t) (statbuf.f_blocks - statbuf.f_bfree);
 -                      
 -                      df_submit_one (disk_name, "df_complex", "free",
 -                                      (gauge_t) (blk_free * blocksize));
 -                      df_submit_one (disk_name, "df_complex", "reserved",
 -                                      (gauge_t) (blk_reserved * blocksize));
 -                      df_submit_one (disk_name, "df_complex", "used",
 -                                      (gauge_t) (blk_used * blocksize));
 -              }
 -              else /* compatibility code */
 -              {
 -                      gauge_t df_free;
 -                      gauge_t df_used;
 -
 -                      df_free = statbuf.f_bfree * blocksize;
 -                      df_used = (statbuf.f_blocks - statbuf.f_bfree) * blocksize;
 -
 -                      df_submit_two (disk_name, "df", df_used, df_free);
 -              }
++              /* Make sure that f_blocks >= f_bfree >= f_bavail */
 +              if (statbuf.f_bfree < statbuf.f_bavail)
 +                      statbuf.f_bfree = statbuf.f_bavail;
 +              if (statbuf.f_blocks < statbuf.f_bfree)
 +                      statbuf.f_blocks = statbuf.f_bfree;
 +
 +              blk_free     = (uint64_t) statbuf.f_bavail;
 +              blk_reserved = (uint64_t) (statbuf.f_bfree - statbuf.f_bavail);
 +              blk_used     = (uint64_t) (statbuf.f_blocks - statbuf.f_bfree);
 +
 +              df_submit_one (disk_name, "df_complex", "free",
 +                              (gauge_t) (blk_free * blocksize));
 +              df_submit_one (disk_name, "df_complex", "reserved",
 +                              (gauge_t) (blk_reserved * blocksize));
 +              df_submit_one (disk_name, "df_complex", "used",
 +                              (gauge_t) (blk_used * blocksize));
  
                /* inode handling */
                if (report_inodes)
diff --cc src/interface.c
Simple merge
diff --cc src/network.c
index 38534264e2bb5ff18cd1f472aa259e907d4aa8e6,8de557d27a17a1cb979b4c807d1857b9b1517f40..840577f5b49509f1d197c734666b91341d7b7eb8
@@@ -3230,16 -3214,16 +3230,16 @@@ static int network_stats_read (void) /
        sstrncpy (vl.plugin, "network", sizeof (vl.plugin));
  
        /* Octets received / sent */
 -      vl.values[0].counter = (counter_t) copy_octets_rx;
 -      vl.values[1].counter = (counter_t) copy_octets_tx;
 +      vl.values[0].derive = (derive_t) copy_octets_rx;
 +      vl.values[1].derive = (derive_t) copy_octets_tx;
        sstrncpy (vl.type, "if_octets", sizeof (vl.type));
-       plugin_dispatch_values (&vl);
+       plugin_dispatch_values_secure (&vl);
  
        /* Packets received / send */
 -      vl.values[0].counter = (counter_t) copy_packets_rx;
 -      vl.values[1].counter = (counter_t) copy_packets_tx;
 +      vl.values[0].derive = (derive_t) copy_packets_rx;
 +      vl.values[1].derive = (derive_t) copy_packets_tx;
        sstrncpy (vl.type, "if_packets", sizeof (vl.type));
-       plugin_dispatch_values (&vl);
+       plugin_dispatch_values_secure (&vl);
  
        /* Values (not) dispatched and (not) send */
        sstrncpy (vl.type, "total_values", sizeof (vl.type));
diff --cc src/plugin.c
Simple merge
diff --cc src/plugin.h
index e88047283d2325252b068f252f20b5c6a2b196e1,0b34ab1df146420e7a6a0a525fabbd7060a669c0..86d403400e88af2c04e987548aed48ad5d98fd57
@@@ -318,7 -308,7 +318,8 @@@ int plugin_unregister_notification (con
   *              function.
   */
  int plugin_dispatch_values (value_list_t *vl);
+ int plugin_dispatch_values_secure (const value_list_t *vl);
 +int plugin_dispatch_missing (const value_list_t *vl);
  
  int plugin_dispatch_notification (const notification_t *notif);
  
diff --cc src/pyvalues.c
Simple merge