Don't rely on some non-portable shell substitutions.

According to Autoconf's manual, ${var##word} is required by POSIX but
doesn't work on Solaris 10's retarded /bin/sh.

Change-Id: I21d385e11ae002f4f32453b9d73bfcb9b4c1149c
Quote some shell variable values.

Change-Id: I2b2e30487aa9dd32a1dbc3a1da268aeb94f39148
Upgrade to asynchbase 1.3.2.

Change-Id: I2c677fbb7a4da2c9d129c9ee56082a05c5088cb9
Upgrade to Netty 3.5.2.

Change-Id: I2723644bd9193aac6430445744ed78e4da773e0a
Fix yet another sign extension bug.

There is no code path that writes one-byte long integer values, but this
bug causes forward compatibility issues with future releases that will
write one-byte long integer values.

!@#$%^ you Java for not having `unsigned'.

Change-Id: Ib3c03b7a63bce9aacf7e26a5a1d84f00e2dacaea
Fix regression that prevents reading pre-1.0 floating point values.

Before OpenTSDB 1.0, floating point values were incorrectly encoded
when stored in HBase.  Their flags pretended they were stored on 4
bytes, but they were instead stored on 8 bytes with 4 leading zeros.
This bug got fixed in f4f405c9, with a workaround added to detect
such values and fix them automatically as part of the compaction
process.

The code contains an optimization, however, to skip the compaction
for single-KeyValue rows.  This is because if a row contains only
one KeyValue, there is obviously no point in running it through the
compaction code, since there is nothing to compact.  But because
the compaction code was the one that was transparently fixing up
those incorrectly encoded floating point values, this optimization
prevented them from getting fixed up.

So add some code to detect this case and fix up the KeyValue anyway.

There was also another bug in the code dumping time series data, where
it was also ignoring this corner case and incorrectly parsing the value.

In both cases the end result for a user is that the code would pretend
the value is 0, when in fact it's not.

Thanks to Paula Keezer for reporting the bug.

Change-Id: I8cc8915602185a3085ad0228554494efdc1ba1e1
check_tsd: add a --rate flag.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Update asynchbase, Netty, and suasync.
Don't log an "Unexpected exception" when a client connection times out.
Fix for 30d integer overflow in DateTimeBox.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Properly allow use of both axis with a log scale.

This closes #92.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Add styling options to smooth curves.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Additional accessors to BuildData to avoid cross-jar inlining.

This closes #101.
Add the ability to use mouse for drag-to-zoom on graphs.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Stop tracking mouse movements when not using the zoom box.
Add -W (downsample window) flag.

Previously if you said you wanted to downsample, it would just use
your duration (lookback) window as the downsample period.
This lets you specify either.

Change-Id: Ic03ea56d325140b33248eff335818159094bd43c
Reviewed-by: Tony Landells <tony@stumbleupon.com>
Reviewed-by: Benoit Sigoure <tsuna@stumbleupon.com>
Tested-by: Dave Barr <barr@stumbleupon.com>
Don't block mouse click events on the image.

Doing so means that when the focus is on one of the text boxes,
clicking on the image doesn't remove the focus from the text box,
which is annoying as change of focus is often used to trigger an
update of the graph.

Also increase the minimum selection size to avoid unintentional
drag-to-zoom events, which happen easily with a touch pad.