This patch removes an extra "SIGNALS" section in the rrdcached.pod and
merges "[BUG] fixed hang in flush_file() introduced by per-file flush
condition". -- kevin brintnall
Moved signal handler setup out of daemonize(). Coalesced common code
in preparation for new signals. Documented behavior of existing signals.
-- kevin brintnall
Attached is a patch to lower the version requirements of libtool and
automake. I have tested this on CentOS 4.x with the specified
versions of libtool and automake and was able to build RRDTool fine.
I did *not* test building with PHP, tcl, ruby or Python though.
I also abstracted the version numbers of all the dependencies such
that editing them in the future will be easier.
-- Bernard Li
When -z <jitter> is specified, some updates may be timestamped up to
<jitter> seconcds in the future. Therefore, a timeout of now+1 may not be
sufficient. Set abs_timeout past the point where any updates are
currently specified. -- kevin brintnall
The PID file is created with open() in the parent process, while we still
have STDERR open. If it cannot be created, it complains verbosely to
stderr.
The PID file is written in the child process. The only way the fdopen()
will fail on a fd that is already open is if you're completely out of
memory. As in other places in the code, I didn't consider this a case
that required a very verbose message. (Search for "strdup failed"). If
you still think a more verbose message is called for, please suggest one.
The attached patch corrects the error message to complain about fdopen()
vs fopen(). I hadn't noticed that until you brought it up.
vdef calc was using end_orig to determine for which range it should do its
calculations which is odd, since orig is only the requested range as
invocation time and not the data range deliverd by fetch. It does fall
completely flat when shifting since shifting does not affect the original
data. Bug #177 reported by hokiel
This patch ensures that the "FLUSH" command will write the updates out to
RRD before returning to the user. Before, it returned when the update was
"dequeued"; updates were not necessarily on disk.
Also, for new nodes, the cache_lock is not held while we are setting up
the new node. We don't want to be holding the lock if the stat() blocks.
-- kevin brintnal
Support for IPv6 has been broken with revision 1522: Because IPv6-addresses
contain colons, simply checking for a colon and using everything after it does
destroy correctly formatted IPv6-addresses.
This patch checks for dots '.' in the address. If the address contains at least
one dot, it is considered to be a hostname or an IPv4-address and a simple
search for a colon is done.
If no dot is found, the code will check for an opening square bracket '[' at
the beginning of the address. If one if found, the format
[address]:port
is assumed.
If neither applies, the default port will be used.
-- Florian Forster
This adds support for <address>:<port> in the rrd client library.
Obviously this is required to take advantage of the server's ability to
bind to a non-standard port -- kevin brintnall
I finally finished the first version of the patch (attached) -- Fidelis Assis fidelis pobox.com
(this does not seem to quite work yet at least not in my hardy setup)
Fix for debian bug 498183 ... never *advise after the end of the
file. On sparc this causes a segfault. Thanks to Sebastian Harl and Jurij Smakov for finding this.
The previous code was broken: The response was read using `read(2)'. If
the server wasn't sending fast enough, the client would stop reading
before the entire message had been read.
This patch changes the communication code to use the (line based)
`fgets' function rather than the lower level `read' function. After
reading the first line (which contains the total number of line to be
expected), this precise number of lines is read - blocking if necessary.
Also, the missing four new statistic values have been added to
`rrdc_stats_get'.
--Folorian Forester
RRDcached patch. This implements an infrastructure, where rrd updates can be
sent to a daemon which caches them prior to bulk-updateing rrd files. See the rrdcached manual page.
-- Created by Florian Forster with some help from Kevin Brintnall.
regarding #183:
* move part of rrd_config.h out to a separate file, so that
autoconf is not confused by the more complex expressions.
* fix configure variable name to allow caching
* another attemt at fixing solaris 2.8 compile so that it
works out of the box.
The attached patch eliminates the many places where the rra_current pointer was maintained; the existing write/seek mechanisms update rrd_file->pos correctly.
Also, the seek at the front of process_arg is not necessary; write_to_rras will now take care to correct the file position at every update cycle.
This eliminates unnecessary rrd_seek() calls when MMAP is not enabled. -- kevin brintnall kbrint rufus.net
only link build and use rrd_getopt if there is no getopt_long provided by
by the os ... this should also fix problems for solaris 2.8 and other
non getopt_long oses who were not taken care of anymore after the intriduction of librrd.sym
Tobias Oetiker [Sun, 31 Aug 2008 22:53:49 +0000 (22:53 +0000)]
Improve performance by keeping multiple pango font descriptions. For the first invocation we are about 20% times as fast
for the second one about 4-5 times faster ...
Tobias Oetiker [Sun, 31 Aug 2008 10:55:24 +0000 (10:55 +0000)]
trying to improve the pango performance I added facilities to cache layout,context and more in between invocations of
the text function, unfortunately it does not seem to help all that much.
Tobias Oetiker [Mon, 4 Aug 2008 20:35:45 +0000 (20:35 +0000)]
The attached patch converts the given string to UTF-8 using glib's
g_locale_to_utf8() function. This function expects the string to be
encoded as specified by the locale settings, so this will fail if e.g.
you're using some script which is encoded in some way incompatible to
the locale settings. In this case, the patch falls back to use the
original string as provided by the user as there is no way to tell how
to interpret that string. So, in this case, you will still get the old
behavior (that pango warning and messed up strings in the graph).
However, imho this is perfectly fine since it should be up to the user
to take care of a sane environment. -- Sebastian Harl
Fix for #167 - rrdcreate is arguably missing a check for 'step>=1' for RRAs with AVERAGE as a CF. I ran into this when specifying 0.6 as a step value, assuming floats were also accepted. Patch attached here. -- Bogdan
Tobias Oetiker [Mon, 9 Jun 2008 16:10:39 +0000 (16:10 +0000)]
do NOT export lowlevel functions, since I have no intention supporting these
interfaces across versions. The symbols are in the library, so if someone
WANTS to code to them, they are free todo so, but they will have to use our
internal header files.
Tobias Oetiker [Sun, 8 Jun 2008 15:55:09 +0000 (15:55 +0000)]
From: Sebastian Harl sh tokkee.org
Date: Sun, 8 Jun 2008 15:01:05 +0200
Subject: [PATCH] Cleanup the symbols exported by librrd.
Up to know librrd exported a lot of symbols, most of which are to be
regarded as private symbols. This somewhat pollutes the API as the symbols
could, in theory, be used by external software and, more importantly,
makes symbol based dependencies (as recently introduced in e.g. Debian)
somewhat harder to implement.
This patch does a somewhat large-scale cleanup of the exported symbols:
* Introduced a librrd.sym file which contains all symbols that are to be
exported. This file is then passed to libtool using the -export-symbols
option which tells the linker to export the given symbols only (note:
according to the libtool manual, this has no effect on some
architectures - however, I assume that most architectures in use today
do support it).
librrd.sym contains all symbols originally defined in rrd.h sans
LockRRD() (which has been moved to rrd_tool.h). The following functions
have been added to rrd.h and the list of exported symbols (some of them
have been renamed, see below):
- rrd_info()
- rrd_info_free()
- rrd_info_print()
- rrd_info_push()
- rrd_lastupdate()
- rrd_update_v()
- rrd_strerror()
* Prefixed all public functions and types with "rrd_" to avoid name
clashes with other libraries. Also, while I was at it, I introduced
typedefs for all custom types and prefixed the time names with "_t" to
improve consistency:
- enum info_type -> rrd_info_type_t
- enum timetype -> rrd_timetype_t