[rrd-developers] rrdtool: update fails on negative timestamp

Sebastian Harl sh at tokkee.org
Fri Apr 10 16:49:25 CEST 2009

Hi again,

On Tue, Apr 07, 2009 at 10:11:57PM +0200, Sebastian Harl wrote:
> On Tue, Apr 07, 2009 at 07:35:30PM +0200, Tobias Oetiker wrote:
> > Today Sebastian Harl wrote:
> > > On Sat, Oct 08, 2005 at 03:14:15PM +0200, Frank Zacharias wrote:
> > > > rrdupdate(1) states: "Negative time values are subtracted from the current time." But if i try:
> > > >
> > > > $> rrdtool update filename.rrd -t dsname -timstamp:U
> > > >
> > > > it fails with: "ERROR: unknown option 'filename.rrd'". The timestamp is
> > > > in `date +%s'-format.
> > >
> > > Well, since '-' marks the beginning of an option, you'd need to separate
> > > options and timestamp/value-list tuples using '--' in this case. However, as
> > > of version 1.3.5, this does not work either:
> > >
> > >   $ rrdtool update file.rrd -t ds -- -5:42 && date
> > >   ERROR: file.rrd: illegal attempt to update using time -5 when last update
> > >   time is 1239115940 (minimum one second step)
> > >   1239116951
> > >
> > > Apparently, this feature got lost somewhere on the way.
> > hmmm I didn't know of this 'feature' what time would '-5:42' be ?
> Uhm ... '-5:42' is the timestamp and the value to be submitted to the
> RRD file, i.e. the usual data passed to rrdupdate(1). As mentioned in
> the original bug report (see above), the rrdupdate(1) manpage states
> that "negative time value are substracted from the current time", so I'd
> expect this example to insert the value 42 at time 'now' minus 5.

Let me rephrase that to, hopefully, make it clear:

The rrdupdate(1) manpage states the following:


  The data used for updating the RRD was acquired at a certain time.
  This time can either be defined in seconds since 1970-01-01 or by
  using the letter ’N’, in which case the update time is set to be the
  current time. Negative time values are subtracted from the current
  time. [...]

So, I'd expect the following to happen:

When using N:<values>, RRDtool calls time() to get the current time (in
seconds since the epoch) and uses that as timestamp when storing the
values. That works fine.

When using 1234567890:<values>, RRDtool uses the given timestamp (in
seconds since the epoch). That works fine as well.

When using -5:<values>, RRDtool calls time() to get the current time (in
seconds since the epoch) and subtracts 5 (in this case) from it. The
result will be used as timestamp when storing the values. That does not
currently work, but, instead, fails with the error mentioned in the
example above.

So, now, the question is: Did I misunderstand the manpage? I'm not sure
how to interpret the last sentence (from the quote above) then and I'd
appreciate an explanation. Else, did that feature ever exist? If not,
why is it documented in the manpage? How should it behave in the future?
I.e., either the manpage or rrdupdate(1) should be fixed ...


Sebastian "tokkee" Harl +++ GnuPG-ID: 0x8501C7FC +++ http://tokkee.org/

Those who would give up Essential Liberty to purchase a little Temporary
Safety, deserve neither Liberty nor Safety.         -- Benjamin Franklin

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
Url : http://lists.oetiker.ch/pipermail/rrd-developers/attachments/20090410/c17e4456/attachment.bin 

More information about the rrd-developers mailing list