Tobias Oetiker [Tue, 22 Nov 2011 15:40:22 +0000 (15:40 +0000)]
allow to restore xml files with zero row rras ... this is a degenerated case
that does not occure in the wild, as rrdtool prevents the creation of such
rrd files. But rrdtool restore 1.3 did allows to create them via restore.
Now this is possible again. Fix for #310.
Tobias Oetiker [Wed, 16 Nov 2011 16:49:10 +0000 (16:49 +0000)]
dbi_result_get_datetime_idx() return timestamp in UTC, but time axis on graph supposed to be in local time.
fix provided in #321
--This line, and those below, will be ignored--
M trunk/program/src/rrd_fetch_libdbi.c
M branches/1.4/program/src/rrd_fetch_libdbi.c
Tobias Oetiker [Thu, 23 Jun 2011 05:45:36 +0000 (05:45 +0000)]
Fix for #304: checking for time_t is done with AC_RUN_IFELSE which fails when cross-compiling. The size of time_t can be detected with AC_CHECK_SIZEOF. -- Michael Olbrich
fix rrd_create behaviour when mmaping on a full filesystem by actually 'filling' the file with
zero. -- Francois-Xavier Bourlet francois-xavier.bourlet dotcloud.com
Tobias Oetiker [Tue, 21 Dec 2010 16:50:16 +0000 (16:50 +0000)]
The buffer length for command buffers should be controlled by a single
#define. Renamed CMD_MAX to RRD_CMD_MAX and put into rrd_client.h
so that it is available to clients as well. -- kevin brintnall
Tobias Oetiker [Tue, 21 Dec 2010 16:38:48 +0000 (16:38 +0000)]
1) Sigma calculation had an error. The first data value in each bin didn't get squared.
2) "rrdfillmissing" was dummy. I have added code to do the work. The parameter has NOW to be in seconds. In doc it is
given in steps. The size of steps depends to much on size of graph so I think its easier to use seconds and internal
calculate the number of steps.
Tobias Oetiker [Tue, 21 Dec 2010 16:06:32 +0000 (16:06 +0000)]
rrdcached: Fix permissions of the default socket.
If neither the "-l" nor the "-P" options have been given, a UNIX domain
socket at a default location is created. However, due to a missing
initialization in this case, the "permissions" field will be left at
zero (no command allowed).
This patch fixes this problem by allowing all commands on the default
socket if no "-P" option is given. -- Florian Forster
Tobias Oetiker [Mon, 20 Dec 2010 07:03:40 +0000 (07:03 +0000)]
add extra space to LDFLAGS when building ruby bindings ... otherwhise this will break if there is already content in LDFLAGS ... fix for #284 thanks dam at opencsw.
Tobias Oetiker [Thu, 11 Nov 2010 16:06:55 +0000 (16:06 +0000)]
Here is a patch that fixes a serious endless loop problem on 32 bit
architectures near the timestamp 2^31 (oh yes - y2k038 is showing its ugly
face) when using the graph command(s). Once the endtime of a graph is
above the mentioned timestamp, mktime always returns -1 (and correctly
so), causing some loops to loop forever. The patch fixes this, causing
some strange output, but there is no other sane way to handle this (expect
by switching to a 64 bit platform). -- Peter Stamfest
Tobias Oetiker [Tue, 9 Nov 2010 16:15:06 +0000 (16:15 +0000)]
make sure we do not try to draw points all that far outside the drawing area
since some versions of cairo seem to go unstable when this happens. -- Peter Stamfest
Tobias Oetiker [Mon, 11 Oct 2010 07:48:45 +0000 (07:48 +0000)]
* introduce a new rrd_create_r2 call to fix the no-overwrite api mess
* various fixes to new rrd_cached comands as suggested by kevin
1. Remove opt_no_overwrite and the rrd_create_set_no_overwrite function as they are ugly. Make opt_no_overwrite a local var.
2. Add 'no_overwrite' param to the rrd_create_r and rename as rrd_create_r2, add rrd_create_r that calls rrd_create_r2 with a 0 for the no_overwrite function, preserving the API parameter format but allowing an extended arg list that can be used by rrd_create and rrd_handle_request_create
3. Add -O option to rrdcached command line to force no-overwrite on any creates
4. Add -O option on create via rrdcached to optionally add no-overwrite (cannot remove it is it was previously set at start)
5. Fix rrd_handle_request_last to check the queue instead of forcing a flush. Remove -no-flush option from LAST command since it is now no longer relevant as we're querying the cache chain
6. Fix ulong/unsigned long issue for compilation under windows
7. Change rrd_handle_request_create to only accept timestamp parameters, not at-syntax, in order to be threadsafe. This is no loss since the rrd_client already pre-parses any at-style syntax
8. Reinstate missing free() in rrd_info.c and rrd_last.c
1. Add INFO <filename>, FIRST <filename> <index>, LAST <filename> and
CREATE <rrdfile> [-b start][-s step][-O] <DSdefs> <RRAdefs> to the rrdcached
functions.
2. Add rrd_create_set_no_overwrite as a function in rrd_create.c to allow
the overwrite flag to be set from rrd_daemon.c
3. Add rrdc_info, rrdc_first, rrdc_last, rrdc_create functions in
rrd_client.c
4. Add rrdcached support to rrd_info(), rrd_first(), rrd_last() and
rrd_create()
5. Add --noflush (-F) option to rrd_info(), rrd_last() to prevent cache
flushing before function call if required for efficiency
6. Add --daemon option to rrd_info(), rrd_first() for rrdcached support
7. Add buffer_add_ulong function to rrd_client.c (used by new rrdc_*
functions)
8. Add rrd_clear_error() call to rrd_create_r () to clean up bug if create
called more than once
9. Add -O option to rrdcached to force no-overwrite mode in CREATE function
the original version never restored the locale since it held a copy of the
new locale and not the old one despite the name. bug found by Pawe? 'Reef' Polewicz
Tobias Oetiker [Sun, 22 Aug 2010 17:56:02 +0000 (17:56 +0000)]
First bug: in function rrd_fetch_fn_libdbi() variable 'struct sql_table_helper table_help'
field 'filename' is uninitialized. So, if a sql error happens, it does not print an error like this
rrd_set_error( "libdbi: problems connecting to db with connect string %s - error: %s",th->filename,dbi_errstr);
instead of, it dumps core.
Second bug: when the output data buffer is allocated, it allocated for 'rows-1' max index, but in
'fetch loop' 'idx' may be equal to 'rows', so it needs one more extra record in data.
* make rrd_getopt compile on solaris
* unify isinf isnan definitions for compilation and configuration
* replace round by rint if round is not available
Tobias Oetiker [Wed, 30 Jun 2010 12:48:47 +0000 (12:48 +0000)]
src/rrd_client.c: Fix a potential segmentation fault in "get_path".
The "get_path" function is called at least from "rrdc_update" without
checking for a connection first. In that case the "sd_path" pointer may be
NULL, so dereferencing it without checking for NULL is not good behavior.
This patch checks all arguments of the "get_path" function and returns an
error if any pointer is NULL. -- Florian Forster
Tobias Oetiker [Wed, 2 Jun 2010 04:45:21 +0000 (04:45 +0000)]
rrd_client.c: gcc 4.0.1 produced a warning and require same types. Warning shown was:
"assignement discards qualifers from pointer target type" -- Antoine MUSSO
Tobias Oetiker [Fri, 28 May 2010 04:55:14 +0000 (04:55 +0000)]
[rrd_client.c] RRD client should resolve all paths when talking to a unix socket. This allows realpath() to resolve symbolic links, "..", etc. reported by: Eduardo Bragatto -- kevin brintnall
"rrd_parsetime" uses (many) global variables and is thus not
thread-safe. Using it in the FETCH command reproducably segfaults the
caching daemon.
This replacement will only work with "simple" integers, i. e. times
specified as "1272470594" (sometime on April 28th) or "-3600" (one hour
ago). -- Florian Forster
When specifying a relative path (-j option) rrd_cached would segfault when
trying to read past journals (journal_init function). Added an extra check
to journal_init before reading the directory, and, when parsing the command
line options, to expand the relative path to an absolute path. -- Adrian-Ioan Vasile yoyo@opennet.ro
Relicense the RRDCacheD client interface under the MIT license. This
allows the interface to be used from non-GPL applications by copying the
source code files into the projects source tree. -- Florian Forster rrdtool@octo.it
Tobias Oetiker [Mon, 29 Mar 2010 19:18:06 +0000 (19:18 +0000)]
Rather than calling "FLUSH" for each RRD file needed for drawing a
graph and then accessing the file directly, use the "FLUSH" command to
receive the data required for drawing a graph.
The daemon can now be specified in one of three ways:
* A new option has been added to the "DEF" option. If the "DEF" command
includes the option "daemon=...", then the given daemon is used for
accessing that file only. This option takes precedence over all
other options. The value given follows the same syntax as other ways
to specify a daemon address, thouh colons need to be escaped from
rrdgraph(1).
* The "--daemon" option can be given to the overall "rrdtool graph"
command. When given, this address is used for all file accesses
except those which explicitely contain a "daemon=..." option.
* If the "RRDCACHED_ADDRESS" environment variable is set, it's value
is used as the daemon address. This is the lowest priority option
and only used if no other option is given.
One nice detail is that with ":daemon=...", the cache address can be
specified for each "DEF:" definition. It is therefore possible to graph
values stored on several servers in one graph ? even if several RRD
files have the same name. -- Florian
Tobias Oetiker [Mon, 29 Mar 2010 19:10:58 +0000 (19:10 +0000)]
src/rrd_format.c: Implemented "cf_to_string"
A simple helper function to turn an "enum cf_en" to a string. The returned
pointer points to static memory and doesn't need to be freed. -- Florian
Tobias Oetiker [Mon, 29 Mar 2010 17:05:33 +0000 (17:05 +0000)]
src/rrd_fetch.c: Use "rrdc_fetch" if daemon is available.
Instead of flushing the file via the connection to the daemon and then
accessing it directly, use the "FETCH" command to access the file via
the RRDCacheD. This removes ambiguities with absolute and relative paths
and makes it possible to read data from files that are not available
locally. -- Florian