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 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 failed. - 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+).
(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 HB
Yup, that would be the question. Having played around with endpoint coprocessors to implement real-time timeseries Aggregationen in 0.92 it would seem to be worth the effort to implement it if it didn't already exist, now that the coprocessor API has become somewhat stable. Am 29.01.2014 18:59 schrieb "Viral Bajaria" <[EMAIL PROTECTED]>:
NEW: Monitor These Apps!
Apache Lucene, Apache Solr and all other Apache Software Foundation projects and their respective logos are trademarks of the Apache Software Foundation.
Elasticsearch, Kibana, Logstash, and Beats are trademarks of Elasticsearch BV, registered in the U.S. and in other countries. This site and Sematext Group is in no way affiliated with Elasticsearch BV.
Service operated by Sematext