Sebastian Harl [Wed, 26 Mar 2008 08:44:04 +0000 (09:44 +0100)]
unixsock plugin: Open two different IO stream handles for reading and writing.
Full-duplex standard IO streams are not really supported on sockets.
Mixing input and output functions involves calls to lseek(2) which is
not supported on sockets and thus causes the IO operations to fail.
Opening two IO streams solves the problem.
Sebastian Harl [Wed, 26 Mar 2008 08:42:56 +0000 (09:42 +0100)]
unixsock plugin: Open two different IO stream handles for reading and writing.
Full-duplex standard IO streams are not really supported on sockets.
Mixing input and output functions involves calls to lseek(2) which is
not supported on sockets and thus causes the IO operations to fail.
Opening two IO streams solves the problem.
Sebastian Harl [Tue, 25 Mar 2008 18:58:20 +0000 (19:58 +0100)]
unixsock plugin: Open two different IO stream handles for reading and writing.
Full-duplex standard IO streams are not really supported on sockets.
Mixing input and output functions involves calls to lseek(2) which is
not supported on sockets and thus causes the IO operations to fail.
Opening two IO streams solves the problem.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Tue, 25 Mar 2008 14:59:40 +0000 (15:59 +0100)]
contrib/cussh.pl: Added support for LISTVAL.
Also fixed the following minor problems:
* the arguments passed to Collectd::Unixsock::putval() have been updated
to the current version of the Perl module
* remove newlines from the end of the input line - the unixsock plugin
currently seems to be buggy when receiving two newlines in a row
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Wed, 26 Mar 2008 08:34:14 +0000 (09:34 +0100)]
utils_cmd_{get,put}val.c: Fixed usage of parse_identifier().
This function modifies its first argument which, in these cases, is used
again after the function call. Now, a copy of the string is passed to
parse_identifier().
Sebastian Harl [Tue, 25 Mar 2008 14:58:15 +0000 (15:58 +0100)]
utils_cmd_{get,put}val.c: Fixed usage of parse_identifier().
This function modifies its first argument which, in these cases, is used
again after the function call. Now, a copy of the string is passed to
parse_identifier().
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Wed, 26 Mar 2008 08:28:40 +0000 (09:28 +0100)]
Disambiguated the protocol used by the unixsock (and other) plugins.
As discussed with Florian on IRC, the interpretation of the status line
returned by the unixsock plugin (et.al.) is now strictly specified. A status
greater than or equal to zero indicates success and the number of subsequent
lines of output. A negative status still indicates failure.
This way, frontends can manage the output without having to know any
command-specific interpretation rules.
The GETVAL command has been updated to implement this specification. It now
returns each value on a separate line. collectd-unixsock(5) has been updated
to reflect the changes.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Instead of parsing all options before doing any work, each option is now
handled right after it has been parsed. This has the following benefits:
* No need to allocate and construct any data structures.
* The timeout option may be used multiple times now, only affecting any
plugins listed after this.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Mon, 24 Mar 2008 11:06:49 +0000 (12:06 +0100)]
liboconfig: Include the filename in error messages.
As collectd now supports more than one config file, this is more
convenient.
A module-global variable is used for that purpose. If no filename is
available (e.g. if the user uses oconfig_parse_fh() directly), a string
like "<fd#X>" is used instead, where X is replaced by the file descriptor.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Florian Forster [Mon, 24 Mar 2008 10:33:32 +0000 (11:33 +0100)]
unixsock plugin: Use `src/utils_cmd_listval.[ch]' and remove the local cache.
Since no command uses the cache in the unixsock plugin anymore, it can be
removed. The implementation in `src/utils_cache.[ch]' is now used for all
commands, and all commands are in separate modules. This should be a
performance gain, since the implementation of unixsock used a linked list,
which is much slower than the AVL tree used in the global cache.
Also this resolves a nasty bug: The unixsock plugin used to use the _local_
interval setting when removing values from the cache. The global cache uses the
interval setting of the values themselves, to that mixing different intervals
in a big setup is now compatible with the `listval' and other commands.
Sebastian Harl [Sun, 9 Mar 2008 18:58:24 +0000 (19:58 +0100)]
configure: Do not preset $with_libstatgrab and $with_libdevstat.
Those variables are set when parsing the command line options and evaluated
inside the AC_ARG_WITH() macro. Presetting them overwrites any command line
options.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Tue, 18 Mar 2008 11:34:17 +0000 (12:34 +0100)]
perl plugin: Fixed the "EnableDebugger after LoadPlugin" warning.
For some strange reason my original patch (perl plugin: Warn if
"EnableDebugger" has been used after "LoadPlugin".) has been applied at the
wrong position (it has been applied to perl_config_includedir() instead of
perl_config_enabledebugger() - I have absolutely no clue why though).
Also, the check for the precondition of this warning has been fixed. In some
cases aTHX does not seem to be set, even though the Perl interpreter has
already been initialized. Now, perl_threads is used to check for that
condition.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Thu, 20 Mar 2008 12:22:15 +0000 (13:22 +0100)]
configfile.c: Include more than one files in lexicographical order.
Using qsort() and strcmp() the list of files (after reading the contents
of a directory or expanding globs) is sorted before inclusion. As the
order of options in the config file matters this is more convenient.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Thu, 20 Mar 2008 10:02:06 +0000 (11:02 +0100)]
configfile.c: Abort if any config file could not be read.
So far, when including all files from some directory, errors while reading
any of those config files have been reported but otherwise ignored. So,
collectd would run with some potentially incomplete configuration which is
not what I would expect.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Sebastian Harl [Thu, 20 Mar 2008 10:00:37 +0000 (11:00 +0100)]
configfile.c: Fixed a segfault after a parse error.
In cf_read_generic(), the parse result had not been checked to not be
NULL, which caused a segfault when trying to access any of its members.
Now, an error will be returned in that case.
Also, cf_ci_append_children() has been made more robust in that respect.
It now detects an empty source and does nothing in that case.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>
Florian Forster [Thu, 28 Feb 2008 14:15:53 +0000 (15:15 +0100)]
src/common.[ch]: Implemented `htond' and `ntohd' and applied it to the network plugin.
The functions convert doubles to the x86 representation or from the x86
representation to the representation used on the host. On x86 systems, this is
a NOP.
Florian Forster [Wed, 27 Feb 2008 22:22:36 +0000 (23:22 +0100)]
src/utils_cmd_flush.c: Allow two options: `plugin' and `timeout'
Both options are optional. The meaning of `timeout' is the same, but must now
be prepended with `timeout='. The new `plugin=' option allows the user to
select only specific plugins to flush.
network plugin: Align write access to the send buffer.
SPARC and possibly other architectures cannot access arbitrary memory
locations. This caused a `bus error' on SPARC when the network plugin was
loaded. This change hopefully fixes this problem.
This functions allows to get values from the cache without creating a
`value_list_t' and `data_set_t' first. The existing function `uc_get_rate' has
been changed to use this function, too.
Sebastian Harl [Tue, 26 Feb 2008 17:12:07 +0000 (18:12 +0100)]
collectd, plugin: Added support for "flush" callbacks.
A flush callback may be provided to make it possible to flush internal caches
(e.g. the rrdtool plugin's data cache) from outside the plugin. On SIGUSR1,
flush callback is invoked for all plugins. As flushing large amounts of data
might take some time a new thread is started to handle the request
asynchronously.
Thanks to Stefan Völkel for proposing this.
Signed-off-by: Sebastian Harl <sh@tokkee.org> Signed-off-by: Florian Forster <octo@huhu.verplant.org>