Start v1.6.0
Update third-party dependencies.
Add tests to reproduce AlreadyNSREd bug #81

Added two tests to reproduce the bug that will lead to retrial
RPCs when the code goes through KnownToBeNSREd region path in
the sendRpcToRegion in the HBaseClient.  This will turn worse
if the region is NSREd for some good amount time leading to
the failure of probe RPC with TooManyAttempts.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Do not schedule RPCs known to be NSRE'd for retry when they are first issued.

When issuing an RPC that is destined to a region that is known to be
unavailable, we used to add a callback on the RPC to potentially retry
it.  Once the region appeared to be available again, we re-dispatched
the RPC and added another callback to potentially retry it.  This
resulted in the RPC's callback chain having two (or more) callbacks to
retry the RPC, which could cause the RPC to execute more than once.

This fixes #81.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Fail the RPC when we fail to de-serialize its response.

Whenever we fail to de-serialize the response to an RPC, we throw an
exception that is caught by Netty, which then causes us to go into
exceptionCaught(), from which we ought to close the connection to HBase
and cleanup() all outstanding RPCs (either by re-scheduling them if we
can, or by making them fail with a ConnectionResetException).

The bug here is that the RPC for which we failed to de-serialize the
response is no longer considered "in flight" because we were handling
its response, so we never triggered its callback chain.  This change
fixes that by propagating the exception to the caller.
Fix compatibility issue with CDH5.

In the latest version of CDH5 (0.96.1.1+cdh5.0.2), the asynchbase client
fails if closing a scanner while there are still rows to be read.
Specifying numberOfRows == 0 avoids the issue (this matches the behavior
in the HBase synchronous client).

Without this fix, the client fails processing the close response with
the error: 'org.hbase.async.InvalidResponseException: Should not have
gotten any cell blocks, yet there are [num] bytes that follow the
protobuf response.  This should never happen.  Are you using an
incompatible version of HBase?'
Retry RPC at RegionMovedException.

AsyncHBase did not recognize RegionMovedException when HBase 0.96
raised it. It was converted to unknown RemoteException, and the
corresponding queries failed.  We need to retry the HBase RPC like
we do for NotServingRegionException.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Catch up with the protobuf changes in upstream HBase 0.98.
Fix increment coalescing integration tests for HBase 0.98

HBase 0.98 no longer creates a KV when we increment by zero,
so just work around that in our test.

This fixes #78.
Fix off-by-one error in error handling of batched edits.

The code AND the comment were both wrong, when we `continue' at that
point, `n' doesn't get incremented, so we were looping one extra time,
which was leading to an uncaught IndexOutOfBoundsException.

This bug would typically occur when a region moves from one server to
another, or becomes otherwise temporarily unavailable (e.g. the memstore
is really full and the region is getting flushed and is momentarily
throwing RegionTooBusyException).

This closes #77.
Add comparison filters and a timestamp filter.

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Craft a very unlikely key when sending probe "exists" RPCs.

Sometimes we need to "poke" HBase to see if a region is online or
a table exists.  Given a key, we prepend some unique suffix to make
it a lot less likely that we hit a real key with our probe, as doing
so might have some implications on the RegionServer's memory usage.

This closes #82.
Complain when a DeleteRequest is created with a zero-length qualifier list.

This closes #96.
MultiAction failure does not clone the HBaseException correctly

Signed-off-by: Benoit Sigoure <tsunanet@gmail.com>
Release v1.6.0
Merge branch 'master' of https://github.com/OpenTSDB/asynchbase into 1.6.0
merge upstream