+2015-02-26, Version 5.4.2
+ * Build system: Numerous fixes. Thanks to Bjørn Nordbø, Jim Radford,
+ KOMEDA Shinji, Lauri Tirkkonen, Manuel Luis Sanmartin Rozada, Marc
+ Fournier, Rainer Müller, Yoga Ramalingam and Yves Mettier. #326,
+ #373, #653, #828
+ * collectd: A use-after-free has been fixed in the "parse_value()"
+ function. Thanks to Matthias Urlichs.
+ * collectd: Fix carriage return sign in types_list Thanks to Marc
+ Fournier and @NsLib.
+ * collectd: Fix programming error in src/configfile.c. Thanks to
+ Wilfried Goesgens.
+ * collectd: An off-by-one error has been fixed in the
+ "strstripnewline()" function. Patch by Florian Forster.
+ * collectd: Use the complain mechanism to report filter chain write
+ failures. Thanks to Sebastian Harl.
+ * collectd: Spelling and grammar of error messages have been fixed.
+ Thanks to Katelyn Perry and Tim Laszlo.
+ * collectdctl: Fixed buffering issues which caused trouble on AIX and
+ Solaris. Thanks to Yoga Ramalingam.
+ * Documentation: Details and example about multi-instance filterchain
+ targets have been added. Thanks to Marc Fournier.
+ * Documentation: The "CollectStatistics" option of the rrdcached has
+ been documented. Thanks to Micha Krause. #907
+ * Documentation: The write_redis has been documented. Thanks to Marc
+ Fournier.
+ * Documentation: The "GraphiteSeparateInstances" and
+ "GraphiteAlwaysAppendDS" options of the amqp have been documented.
+ Thanks to Marc Fournier.
+ * Documentation: Documentation of the "AutoLoadPlugin" option has been
+ improved. Thanks to Florian Forster. #715
+ * aggregation: "utils_vl_lookup": A race when creating user objects
+ has been fixed. Thanks to Sebastian Harl. #535
+ * cpu: Temperature code for Mac OS X has been removed.
+ Thanks to Florian Forster and Marc Fournier. #22
+ * cURL, cURL-JSON, cURL-XML and Write HTTP plugins: Call
+ "curl_global_init()" in the plugins' "init()" callback. Thanks to
+ Jeremy Katz.
+ * cURL and memcachec plugins: Fix calculation of gauge, average,
+ minimum and maximum. Previously, they were calculated from the start
+ of the daemon, which is not the documented behavior. Thanks to
+ Florian Forster. #663
+ * curl-json: A bug, which triggered when two URLs with a long common
+ prefix were configured, was fixed. Thanks to Marc Fournier. #582
+ * dbi: Compatibility with new versions of libdbi has been restored.
+ Thanks to Florian Forster. #950
+ * Exec, UnixSock plugins: Fix parsing of the "time" option of the
+ "PUTNOTIF" command. Thanks to Adrian Miron. #477
+ * ipmi: A conflict with the java over the "SIGUSR2" signal has been
+ fixed. Thanks to Vincent Bernat. #114
+ * java: Conversion from Java's time representation to collectd's
+ representation has been fixed. Thanks to Manuel Luis Sanmartín
+ Rozada.
+ * java: Make sure "cjni_thread_detach()" is called on all paths.
+ Thanks to Florian Forster.
+ * LogFile and SysLog plugins: Avoid total silence in case of a
+ misconfiguration. Thanks to Marc Fournier and Wilfried Goesgens.
+ * network: Support for recent versions of gcrypt has been added.
+ Thanks to Vincent Bernat. #632
+ * network: Robustness of the client connecting behavior has been
+ improved. Thanks to Florian Forster. #627
+ * python: Don't create empty "meta_data_t" objects. Thanks to Florian
+ Forster. #716
+ * python: Fix Py list length check in "cpy_build_meta()". Thanks to
+ Yoga Ramalingam.
+ * python: The "interval" member was fixed to export seconds as a
+ double. Thanks to Justin Burnham.
+ * RRDtool and RRDCacheD plugins: A memory leak when creating RRD files
+ has been fixed. Thanks to Yves Mettier. #661
+ * snmp: Fix a memory leak. Thanks to Marc Fournier and Pierre-Yves
+ Ritschard. #610, #804
+ * statsd: Support for samplerates in timer metrics was added. Thanks
+ to John Leach. #461
+ * swap: Fix behavior under OpenVZ by making "cached" optional. Thanks
+ to Florian Forster. #733
+ * threshold: Population of the "time" field in notifications has been
+ added. Thanks to Manuel Luis Sanmartín Rozada.
+ * libvirt: Only gather stats for running domains. Thanks to Ruben
+ Kerkhof.
+ * lvm: An issue with Volume Groups (VGs) without Logical Volumes (LVs)
+ has been fixed. Thanks to Jan Kundrát.
+ * write_graphite: Escape characters not supported by Graphite. Thanks
+ to Pierre-Yves Ritschard and Marc Fournier.
+ * write_http: Make callback names context-dependent. Thanks to Marc
+ Fournier. #821
+ * write_redis: A formatting bug, which resulted in totally unusable
+ numbers being transmitted to Redis, was fixed. Thanks to Marc
+ Fournier.
+ * write_riemann: Receive acknowledge message when using TCP. Thanks to
+ John-John Tedro.
+
2014-01-26, Version 5.4.1
* amqp plugin: Add support for RabbitMQ 0.4.x to avoid compiler
warnings. Thanks to Sebastian Harl for implementing this.
* zfs_arc plugin: Support for FreeBSD has been added. Thanks to Xin Li
for his patch.
+2015-02-26, Version 5.3.2
+ * Build system: Numerous fixes. Thanks to Bjørn Nordbø, Jim Radford,
+ KOMEDA Shinji, Lauri Tirkkonen, Manuel Luis Sanmartin Rozada, Marc
+ Fournier, Rainer Müller, Yoga Ramalingam and Yves Mettier. #326,
+ #373, #653, #828
+ * collectd: A use-after-free has been fixed in the "parse_value()"
+ function. Thanks to Matthias Urlichs.
+ * collectd: Fix carriage return sign in types_list Thanks to Marc
+ Fournier and @NsLib.
+ * collectd: Fix programming error in src/configfile.c Thanks to
+ Wilfried Goesgens.
+ * collectd: An off-by-one error has been fixed in the
+ "strstripnewline()" function. Patch by Florian Forster.
+ * collectd: Use the complain mechanism to report filter chain write
+ failures. Thanks to Sebastian Harl.
+ * collectd: Spelling and grammar of error messages have been fixed.
+ Thanks to Katelyn Perry and Tim Laszlo.
+ * collectdctl: Fixed buffering issues which caused trouble on AIX and
+ Solaris. Thanks to Yoga Ramalingam.
+ * Documentation: Details and example about multi-instance filterchain
+ targets have been added. Thanks to Marc Fournier.
+ * Documentation: The "CollectStatistics" option of the rrdcached has
+ been documented. Thanks to Micha Krause. #907
+ * Documentation: The write_redis has been documented. Thanks to Marc
+ Fournier.
+ * Documentation: The synopsis of the threshold has been fixed. Thanks
+ to Fabien Wernli.
+ * Documentation: The "GraphiteSeparateInstances" and
+ "GraphiteAlwaysAppendDS" options of the amqp have been documented.
+ Thanks to Marc Fournier.
+ * aggregation: "utils_vl_lookup": A race when creating user objects
+ has been fixed. Thanks to Sebastian Harl. #535
+ * cpu: Temperature code for Mac OS X has been removed.
+ Thanks to Florian Forster and Marc Fournier. #22
+ * csv: A regression which would lead to the "DataDir" option to be
+ ignored has been fixed. Thanks to Manuel Luis Sanmartin Rozada.
+ * curl, curl-json, curl-xml and write_http plugins: Call
+ "curl_global_init()" in the plugins' "init()" callback. Thanks to
+ Jeremy Katz.
+ * curl and memcachec plugins: Fix calculation of gauge, average,
+ minimum and maximum. Previously, they were calculated from the start
+ of the daemon, which is not the documented behavior. Thanks to
+ Florian Forster. #663
+ * dbi plugin: Compatibility with new versions of libdbi has been
+ restored. Thanks to Florian Forster. #950
+ * exec, unixsock plugins: Fix parsing of the "time" option of the
+ "PUTNOTIF" command. Thanks to Adrian Miron. #477
+ * java: Conversion from Java's time representation to collectd's
+ representation has been fixed. Thanks to Manuel Luis Sanmartín
+ Rozada.
+ * ipmi: A conflict with the java over the "SIGUSR2" signal has been
+ fixed. Thanks to Vincent Bernat. #114
+ * java: Make sure "cjni_thread_detach()" is called on all paths.
+ Thanks to Florian Forster.
+ * logfile and syslog plugins: Avoid total silence in case of a
+ misconfiguration. Thanks to Marc Fournier and Wilfried Goesgens.
+ * memcached: Connecting to a UNIX socket has been fixed. Thanks to Jim
+ Radford.
+ * network: Support for recent versions of gcrypt has been added.
+ Thanks to Vincent Bernat. #632
+ * network: Robustness of the client connecting behavior has been
+ improved. Thanks to Florian Forster. #627
+ * python: Don't create empty "meta_data_t" objects. Thanks to Florian
+ Forster. #716
+ * python: Fix Py list length check in "cpy_build_meta()". Thanks to
+ Yoga Ramalingam.
+ * python: The "interval" member was fixed to export seconds as a
+ double. Thanks to Justin Burnham.
+ * replace and set targets: Fix error message. Thanks to Marc Fournier.
+ #448
+ * rrdtool and rrdcached plugins: Honor the "DataDir" config option;
+ this fixes a regression. Thanks to Florian Forster. #380
+ * rrdtool and rrdcached plugins: A memory leak when creating RRD files
+ has been fixed. Thanks to Yves Mettier. #661
+ * snmp: Fix a memory leak. Thanks to Marc Fournier and Pierre-Yves
+ Ritschard. #610, #804
+ * swap: Fix behavior under OpenVZ by making "cached" optional. Thanks
+ to Florian Forster. #733
+ * threshold: Population of the "time" field in notifications has been
+ added. Thanks to Manuel Luis Sanmartín Rozada.
+ * libvirt: Only gather stats for running domains. Thanks to Ruben
+ Kerkhof.
+ * write_graphite: Escape characters not supported by Graphite. Thanks
+ to Pierre-Yves Ritschard and Marc Fournier.
+ * write_http: Make callback names context-dependent. Thanks to Marc
+ Fournier. #821
+ * write_riemann: Receive acknowledge message when using TCP. Thanks to
+ John-John Tedro.
+
2013-07-13, Version 5.3.1
* Documentation: Various fixes.
* Configuration: Fix error handling: Errors in included files were
libatasmart . . . . . $with_libatasmart
libcurl . . . . . . . $with_libcurl
libdbi . . . . . . . $with_libdbi
- libhiredis . . . . . $with_libhiredis
libesmtp . . . . . . $with_libesmtp
libganglia . . . . . $with_libganglia
libgcrypt . . . . . . $with_libgcrypt
+ libhal . . . . . . . $with_libhal
+ libhiredis . . . . . $with_libhiredis
libi2c-dev . . . . . $with_libi2c
libiokit . . . . . . $with_libiokit
libiptc . . . . . . . $with_libiptc
libmemcached . . . . $with_libmemcached
libmnl . . . . . . . $with_libmnl
libmodbus . . . . . . $with_libmodbus
+ libmongoc . . . . . . $with_libmongoc
libmysql . . . . . . $with_libmysql
libnetapp . . . . . . $with_libnetapp
libnetsnmp . . . . . $with_libnetsnmp
liboconfig . . . . . $with_liboconfig
libopenipmi . . . . . $with_libopenipmipthread
liboping . . . . . . $with_liboping
+ libowcapi . . . . . . $with_libowcapi
libpcap . . . . . . . $with_libpcap
libperfstat . . . . . $with_perfstat
libperl . . . . . . . $with_libperl
libxml2 . . . . . . . $with_libxml2
libxmms . . . . . . . $with_libxmms
libyajl . . . . . . . $with_libyajl
- libevent . . . . . . $with_libevent
- protobuf-c . . . . . $have_protoc_c
oracle . . . . . . . $with_oracle
+ protobuf-c . . . . . $have_protoc_c
python . . . . . . . $with_python
Features:
amqp . . . . . . . $enable_amqp
apache . . . . . . . $enable_apache
apcups . . . . . . . $enable_apcups
- aquaero . . . . . . . $enable_aquaero
apple_sensors . . . . $enable_apple_sensors
+ aquaero . . . . . . . $enable_aquaero
ascent . . . . . . . $enable_ascent
barometer . . . . . . $enable_barometer
battery . . . . . . . $enable_battery
bind . . . . . . . . $enable_bind
ceph . . . . . . . . $enable_ceph
+ cgroups . . . . . . . $enable_cgroups
conntrack . . . . . . $enable_conntrack
contextswitch . . . . $enable_contextswitch
- cgroups . . . . . . . $enable_cgroups
cpu . . . . . . . . . $enable_cpu
cpufreq . . . . . . . $enable_cpufreq
csv . . . . . . . . . $enable_csv
java . . . . . . . . $enable_java
load . . . . . . . . $enable_load
logfile . . . . . . . $enable_logfile
- lpar . . . . . . . . $enable_lpar
log_logstash . . . . $enable_log_logstash
+ lpar . . . . . . . . $enable_lpar
lvm . . . . . . . . . $enable_lvm
madwifi . . . . . . . $enable_madwifi
match_empty_counter . $enable_match_empty_counter
swap . . . . . . . . $enable_swap
syslog . . . . . . . $enable_syslog
table . . . . . . . . $enable_table
- tail . . . . . . . . $enable_tail
tail_csv . . . . . . $enable_tail_csv
+ tail . . . . . . . . $enable_tail
tape . . . . . . . . $enable_tape
target_notification . $enable_target_notification
target_replace . . . $enable_target_replace
/**
* collectd - src/dbi.c
- * Copyright (C) 2008-2013 Florian octo Forster
+ * Copyright (C) 2008-2015 Florian octo Forster
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
#include <dbi/dbi.h>
+/* libdbi 0.9.0 introduced a new thread-safe interface and marked the old
+ * functions "deprecated". These macros convert the new functions to their old
+ * counterparts for backwards compatibility. */
+#if !defined(LIBDBI_VERSION) || (LIBDBI_VERSION < 900)
+# define HAVE_LEGACY_LIBDBI 1
+# define dbi_initialize_r(a,inst) dbi_initialize(a)
+# define dbi_shutdown_r(inst) dbi_shutdown()
+# define dbi_set_verbosity_r(a,inst) dbi_set_verbosity(a)
+# define dbi_driver_list_r(a,inst) dbi_driver_list(a)
+# define dbi_driver_open_r(a,inst) dbi_driver_open(a)
+#endif
+
/*
* Data types
*/
/*
* Global variables
*/
+#if !defined(HAVE_LEGACY_LIBDBI) || !HAVE_LEGACY_LIBDBI
+static dbi_inst dbi_instance = 0;
+#endif
static udb_query_t **queries = NULL;
static size_t queries_num = 0;
static cdbi_database_t **databases = NULL;
return (-1);
}
- status = dbi_initialize (NULL);
+ status = dbi_initialize_r (/* driverdir = */ NULL, &dbi_instance);
if (status < 0)
{
- ERROR ("dbi plugin: cdbi_init: dbi_initialize failed with status %i.",
+ ERROR ("dbi plugin: cdbi_init: dbi_initialize_r failed with status %i.",
status);
return (-1);
}
else if (status == 0)
{
- ERROR ("dbi plugin: `dbi_initialize' could not load any drivers. Please "
+ ERROR ("dbi plugin: `dbi_initialize_r' could not load any drivers. Please "
"install at least one `DBD' or check your installation.");
return (-1);
}
- DEBUG ("dbi plugin: cdbi_init: dbi_initialize reports %i driver%s.",
+ DEBUG ("dbi plugin: cdbi_init: dbi_initialize_r reports %i driver%s.",
status, (status == 1) ? "" : "s");
return (0);
db->connection = NULL;
}
- driver = dbi_driver_open (db->driver);
+ driver = dbi_driver_open_r (db->driver, dbi_instance);
if (driver == NULL)
{
- ERROR ("dbi plugin: cdbi_connect_database: dbi_driver_open (%s) failed.",
+ ERROR ("dbi plugin: cdbi_connect_database: dbi_driver_open_r (%s) failed.",
db->driver);
INFO ("dbi plugin: Maybe the driver isn't installed? "
"Known drivers are:");
- for (driver = dbi_driver_list (NULL);
+ for (driver = dbi_driver_list_r (NULL, dbi_instance);
driver != NULL;
- driver = dbi_driver_list (driver))
+ driver = dbi_driver_list_r (driver, dbi_instance))
{
INFO ("dbi plugin: * %s", dbi_driver_get_name (driver));
}