YCSB 0.13.0
Pre-release
Pre-release
Note on non-production status: due to available testing time from our volunteers, core and datastore changes for this release did not meet our usual bar for release testing. As a result, we've decided to publish this release as-is and put effort towards reestablishing testing for the next release cycle. Users interested in making use of this release are advised to check on issue #981 for any status updates. If you get to test out one of the bindings changed in this release, please leave a note on that issue so that the work isn't repeated.
Incompatible Changes
- [generators] Our key generators have changed from using the
int
primitive type tolong
as a step towards providing greater key ranges. If you've implemented your own generator, measurements, or db binding this change will likely impact you. (see #911) - [core] Our DB API now makes use of the more basic interfaces of Java Collections Framework instead of HashMaps directly. If you've implementerd your own db bindings this change will likely impact you. (see #553)
- [JDBC] The JDBC binding now expects fields to be
TEXT
instead ofVARCHAR
. The Table setup utility has been updated to reflect this. - [Geode] Our Geode client binding now requires a minimum cluster version of 1.2.0. (see #995)
Known Issues
- The Cassandra CQL clients do not use prepared statements. (see #458)
- The mongodb binding does not honor the maxPoolSize=XX parameter and instead opens a connection per client thread. (see #317)
- Datastore drivers that lack timeouts may result in YCSB failing to honor the maxexecutiontime parameter. (see #618)
- "Latest" distribution does not work properly on update transactions. (see #640)
- Accumulo client currently always claims success even when the record it's supposed to operate on (e.g. for a read) doesn't exist. (see #699)
- JDK 9 and JDK 10 are not supported. (see #704)
- The newer scripts,
ycsb.sh
andycsb.bat
, don't work from a source checkout. Work around by using the python scriptycsb
(see #877)
Changes
- [Accumulo] client binding for Accumulo has been through a refactoring (see #947)
- [Aerospike] write policy updated to REPLACE_ONLY (see #937)
- [ArangoDB3] New binding added for Arango DB V3 (see #903)
- [Azure Document DB] New binding added for Azure Document DB (see #838)
- [Basic DB] New
basicdb.count
mode to track counts of operations (see #1005) - [Basic DB] New timeseries specific basicdb for use with experimental new timeseries workload (see #1008)
- [BigTable] Updated to the V2 client in 0.9.7 (see #978)
- [CloudSpanner] New binding added for Google's CloudSpanner (see #939)
- [Elasticsearch] New binding added for Elasticsearch version 5.x (see #925)
- [Geode] Updated binding to version 1.2 (see #995)
- [Google Datastore] Now uses default credentials when available (see #984)
- [HBase] New binding packaging added for HBase version 1.2 (see #970)
- [HBase] HBase 1.y bindings now use the same locking structure as the HBase 0.98 specific client (see #1028)
- [HBase] The HBase 0.98 binding now properly interrupts client threads (see #1025)
- [Memcached] Added support for the binary protocol (see #965)
- [S3] Fixed the S3 client to parse the entire object from the datastore (see #1010, #1021)
- [Solr] Add authentication for Kerberos protected Solr installations (see #887)
Framework Fixes and Changes
- [licensing] We discovered our ALv2 LICENSE text was malformed and corrected it (see #967)
- [core] Our ByteIterator implementation added an optional reset methods that may be used by binding implementers (see #999)
- [core] Our workload client now optionally can see the total thread count and an ID for itself (see #1000)
- [core] The workload class provide an operation enum that workloads can build on rather than Strings. (see #1002)
- [metrics] We now export histogram details for HdrHistogram to mimic the non-HDR histogram output (see #983)
- [core] Binding implementors can make use of a new NumericByteIterator to store encoded longs or double values (see #1003)
- [generators] Added the RandomDiscreteTimestampGenerator generator (see #1004)
- [workloads] Added a time series workload for testing time series focused data store. It is currently experimental. (see #1008)
- [logging] The estimated time remaining output now properly handles non-plural times. If you parse YCSB output instead of using a measurement exporter, this will break things. (see #1029)
- [community] We've added a CONTRIBUTING doc! (see #1026, or the CONTRIBUTING.md file)
- [cli] Some old bindings that didn't work are no longer listed in the CLI help. (see #328)
Thanks
Thanks to all the contributors that pushed on this release: @manolama, @twblamer.