hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tsuna <tsuna...@gmail.com>
Subject AsyncHBase 1.5.0 has been released
Date Fri, 24 Jan 2014 22:28:16 GMT
Hi all,
after 3 months in RC2 and 2 more months past that, I'm happy to
announce that AsyncHBase 1.5.0 is now officially out. AsyncHBase
remains true to its initial promise: the API is still backward
compatible, but under the hood it continues to work with all
production releases of HBase of the past few years.

This release was tested against HBase 0.89, 0.90, 0.92, 0.94, and
0.96.  On HBase 0.96, the performance is looking great, with
AsyncHBase still outperforming HTable by about 2x.

Tag: https://github.com/OpenTSDB/asynchbase/tree/v1.5.0
Pre-built jar: http://code.google.com/p/opentsdb/downloads/detail?name=asynchbase-1.5.0.jar
The release is also available in Maven central.

* Version 1.5.0 (2013-12-13) [67fc3b7]

This release introduces compatibility with HBase 0.96 and up, and adds
a dependency on Google's protobuf-java library.  Note that HBase 0.95.x,
which was a "developer preview" release train, is NOT supported.

Please note that support for explicit row locks has been removed from
HBase 0.95 and up.  While the classes and functionality remain usable
when using earlier versions of HBase, an `UnsupportedOperationException'
will be raised if one attempt to send a `RowLockRequest' to a newer
version of HBase.

Please note that while AsyncHBase never made any guarantees about
the exact order in which multiple edits are applied within a batch,
the order is now different when talking to HBase 0.96 and up.

New public APIs:
  - Scanners can now use a variety of different filters via the new
    `ScanFilter' interfaces and its various implementations.
  - It's possible to specify specific families to scan via `setFamilies'.
  - Scanners can put an upper bound on the amount of data fetched by RPC
    via the new `setMaxNumKeyValues' (works with HBase 0.96 and up only).
  - HBaseRpc now has a `failfast()' and a `setFailfast(boolean)' pair
    of methods to allow RPCs to fail as soon as their encounter an
    issue out of the ordinary (e.g. not just a `NotSuchRegionException').
  - `GetRequest' has additional constructor overloads that make its API
    more uniform with that of other RPCs.
  - HBaseClient has new `prefetchMeta' methods to prefetch metadata about
    the regions of a table (for the entire table or a given key range).

Noteworthy bug fixes:
  - DeleteRequest wasn't honoring its timestamp if one was given (#58).
  - When a connection attempt fails, buffered RPCs weren't cleaned up
    or retried properly.
  - When one RPC fails because of another one (e.g. we fail to send an
    RPC because a META lookup failed), the asynchronous exception that
    is given to the callback now properly carries the original RPC that
  - There was an unlikely race condition that could cause an NPE while
    trying to retrieve the ROOT region from ZooKeeper.
  - There was an unlikely race if the client got disconnected right
    after successfully establishing a connection to a RegionServer, while
    it was flushing RPC buffered while waiting to be connected.  Also
    when those RPCs were flushed, the batchable RPCs weren't given a
    chance to get batched.
  - It was not possible to scan the ROOT region (or the hbase:meta region
    when using HBase 0.96+).

$ git diff --stat v1.4.1..v1.5.0 | tail -n 1
 72 files changed, 5213 insertions(+), 540 deletions(-)

(a fair amount of the new lines comes from all the .proto files
imported from HBase's source tree)

$ git shortlog v1.4.1..v1.5.0
Andrey Stepachev (1):
      Add support for multiple families/qualifiers in scanners.

Benoit Sigoure (76):
      Start v1.5.0.
      Add Viral to AUTHORS for his work on ScanFilter.
      Document ScanFilter and prevent it from being subclassed externally.
      Convert the regexp key filtering mechanism to the ScanFilter.
      Document how to run integration tests.
      Enhance filters a bit and add integration tests.
      Add a new helper function to produce better errors during tests.
      Mention new scanner filters in NEWS.
      Allow RPCs to fail-fast.
      Update NEWS / THANKS.
      Update suasync to 1.3.2.
      Properly clean up when connection fails before being opened.
      Properly report which RPC has failed in HasFailedRpcException.
      Fix a small race condition when looking up the ROOT region.
      Add HBase protocol buffers to the compilation process.
      De-serialize the HBase 0.95+ znode that points to META.
      Fix the process of META lookups for HBase 0.95 and up.
      Send the proper "hello" message to HBase 0.95 and up.
      Remove some unused helper code to create buffers.
      Update the per-RPC header for HBase 0.95+.
      Refactor how RPC objects know what RPC method they're for.
      Compile Java code generated from protobuf files separately.
      Kill some trailing whitespaces.
      Add a helper function to de-serialize Protocol Buffer VarInt32.
      Add a semi-evil helper class to avoid copying byte arrays from protobufs.
      De-serialize RPC responses from HBase 0.95+.
      Add a helper function to de-serialize protocol buffers.
      Handle META lookups with 0.95+.
      Dedup byte arrays when deserializing KeyValues from 0.95+.
      Make sure we have all the data we need before de-serializing.
      Convert GetRequest to HBase 0.95+.
      Convert AtomicIncrementRequest to HBase 0.95+.
      Make the run target depend on the jar.
      Sync protobuf files with changes made in the HBase 0.95 branch.
      Add some make variables for the compilers used.
      Add support for "cell blocks".
      Avoid unnecessary string copies on each RPC.
      Convert scanners and filters to HBase 0.95+.
      Add a missing accessor to retrieve the max number of KVs on a Scanner.
      Expose HBase 0.95's ability to limit the number of bytes
returned by a scanner.
      Log the channel when logging outgoing RPCs.
      Convert single-put RPCs to HBase 0.95+.
      Ensure that RPCs that shouldn't get cell blocks don't.
      Convert the CAS RPC to HBase 0.95+.
      Convert single-Delete RPCs to HBase 0.95+.
      Catch up with the protobuf changes made in 0.96
      Explicit row locks are no longer supported in HBase 0.95 and up.
      The 'getProtocolVersion' RPC no longer exists in 0.95+.
      Add support for batched edits with HBase 0.96+.
      Optimize multi-action a bit with HBase 0.95+ by sorting less.
      Remove some warnings that come up when compiling with JDK 7.
      Note that ColumnRangeFilter was added in HBase 0.92.
      Upgrade to logback 1.0.13.
      Upgrade to SLF4J 1.7.5.
      Make sure to not schedule timers with a negative timeout.
      Add some constructor overloads for GetRequest.
      Upgrade to async 1.4.0.
      Add a couple integration tests covering NoSuchColumnFamilyException.
      Fix distclean: remove com/google/protobuf from the build directory.
      Update NEWS for the v1.5.0 release.
      Prevent warnings due to generated protobuf classes.
      Properly flush queued up RPCs upon connecting.
      Make sure we compile for Java 6.
      Add a note regarding some infuriating limitations of the JRE.
      Fix an edge case in HBase 0.96 one-shot scanners.
      Add/improve a few toString() methods.
      Fix accesses to "hbase:meta".
      Make Scanner usable with -ROOT- / hbase:meta.
      Handle an edge case with `prefetchMeta' related to 0.96 compatibility.
      Fix the distclean rule so we can distclean twice in a row.
      Have pom.xml cleaned during `distclean'.
      Upgrade to Netty 3.8.0.
      Fix bug in deserialization of the `Multi' RPC in HBase 0.96
      Add additional logging when decoding fails with an uncaught exception.
      Release 1.5.0.

Brandon Forehand (1):
      Add support for prefetching the meta region.

Phil Smith (1):
      Here's some one-liners to compile and run tests.

St.Ack (1):
      Make mvn build accomodate protobuf files

Viral Bajaria (2):
      Initial commit for ScanFilter.
      Add more scanner filters.

Xun Liu (2):
      Properly honor timestamps in DeleteRequest.
      Add support to delete a value at the specified timestamp.

Benoit "tsuna" Sigoure

View raw message