Skip to content

Releases: brianfrankcooper/YCSB

YCSB 0.3.1

12 Sep 04:45
Compare
Choose a tag to compare

This is a patch release that should only contain fixes for problems found in prior releases. All users
are encouraged to upgrade. MongoDB users in particular should consider the impact of #344.

Known Issues

  • ❗ Current Cassandra CQL binding does not work with Cassandra 2.1+ (see #293, #369).
  • Current HBase binding does not work with HBase 0.94, 0.96, or 0.98 (see #343).
  • The mongodb binding does not honor the maxPoolSize=XX parameter and instead opens a connection per client thread (see #317).
  • ‼️ Running directly from a source checkout on Windows is not supported (see #335).
  • Running directly from a source checkout against the Basic datastore fails (see #336).
  • Several unsupported datastore bindings are still listed in CLI help (see #328).
  • The Accumulo binding may report errors during cleanup (see #340).
  • The HBase binding does not report a clear error message on encountering version incompatibility (see #343).
  • Unclear error message when java is not found in launcher script (see #345).

Datastore Bindings

Tested Support

The following datastore bindings have been verified as working as of this release:

  • Apache Accumulo 1.6.0 via the accumulo binding.
  • Apache Cassandra 2.0.15 via the cassandra-cql and cassandra-10 bindings.
  • Apache HBase 1.0.0 via the hbase-10 binding.
  • MongoDB 2.0.9, 2.2.7, 2.4.14, 2.6.10, 3.0.4 via the mongodb and mongodb-async bindings. Additionally MongoDB 1.8.5 via the mongodb-async binding.
    • ❗ Scan workloads now work with the MongDB binding (see #344)
  • Tarantool 1.6.1 via the tarantool binding.
  • Aerospike 3.5.15 via the aerospike binding.

Untested

The following datastore bindings are present but have not been confirmed as a part of release testing. Referenced issue numbers are those fixed as a part of this release.

  • Apache Cassandra versions prior to 2.0
  • Couchbase 1.1
  • DynamoDB 1.3
  • ElasticSearch
  • Gemfire 8.1
  • Infinispan 7.2.2
  • JDBC
  • OrientDB 1.7.5
  • Redis 2.0
  • HyperTable 0.9

Framework Changes

Miscellaneous changes

Additional updates and fixes to the core package are in this release:

  • Add estimated time remaining to status messages (see #239).
  • Shutdown the status thread as soon as clients complete (see #316).
  • Fix hdrhistogram recorder/logger initialization error (see #381).

0.3.1 Release Candidate 1

22 Aug 03:32
Compare
Choose a tag to compare
Pre-release

UPPERCASE WARNING: THIS IS A RELEASE CANDIDATE AND IS NOT INTENDED FOR DOWNSTREAM USE.

This source is a candidate for release version 0.3.1. Please see #391 for testing instructions and where to leave your feedback.

Compared to the previous release, this candidate includes

  • #362 Update MongoDB driver to 3.0.3
  • #381 Work around HDRHistogram initialization bug
  • #359 Shutdown the client as soon as all workers are complete
  • #239 Print estimated time remaining in status thread

Additionally, it includes some project internals (#366, #389, #393)

YCSB 0.3.0

08 Aug 05:36
Compare
Choose a tag to compare

Known Issues

  • ❗ Current Cassandra CQL binding does not work with Cassandra 2.1+ (see #293, #369).
  • Current HBase binding does not work with HBase 0.94, 0.96, or 0.98 (see #343).
  • ❗ MongoDB's current driver doesn't properly handle scan workloads (see #344)
  • The mongodb binding does not honor the maxPoolSize=XX parameter and instead opens a connection per client thread (see #317).
  • ‼️ Running directly from a source checkout on Windows is not supported (see #335).
  • Running directly from a source checkout against the Basic datastore fails (see #336).
  • Several unsupported datastore bindings are still listed in CLI help (see #328).
  • The Accumulo binding may report errors during cleanup (see #340).
  • The HBase binding does not report a clear error message on encountering version incompatibility (see #343).
  • Unclear error message when java is not found in launcher script (see #345).

Datastore Bindings

Tested Support

The following datastore bindings have been verified as working as of this release:

  • Apache Accumulo 1.6.0 via the accumulo binding (see #340).
  • Apache Cassandra 2.0.15 via the cassandra-cql and cassandra-10 bindings.
    • The port used for Cassandra is now a parameter instead of a constant. (see #360).
    • The Cassandra binding has been updated to use CQL. Downstream users are advised to transition. (see #145).
  • Apache HBase 1.0.0 via the hbase-10 binding.
  • MongoDB 2.0.9, 2.2.7, 2.4.14, 2.6.10, 3.0.4 via the mongodb and mongodb-async bindings. Additionally MongoDB 1.8.5 via the mongodb-async binding.
    • There are several fixes and updates to the MongoDB client.
  • Tarantool 1.6.1 via the tarantool binding (see #292, #319).
  • πŸ†• Aerospike 3.5.15 via the aerospike binding (see #113).

Untested

The following datastore bindings are present but have not been confirmed as a part of release testing. Referenced issue numbers are those fixed as a part of this release.

  • Apache Cassandra versions prior to 2.0
  • Couchbase 1.1
  • DynamoDB 1.3
  • ElasticSearch
  • Gemfire 8.1
  • Infinispan 7.2.2
    • New client implementation for Infinispan 5.x running in client-server mode (see #228).
  • JDBC
  • OrientDB 1.7.5 (#183)
  • Redis 2.0
  • HyperTable 0.9

Framework Changes

Miscellaneous changes

Additional updates and fixes to the core package are in this release:

  • Execute correct number of operations, even if not a multiple of thread count (see PR #338).

0.3.0 Release Candidate 3

27 Jul 21:27
Compare
Choose a tag to compare
Pre-release

UPPERCASE WARNING: THIS IS A RELEASE CANDIDATE AND IS NOT INTENDED FOR DOWNSTREAM USE.

This source is a candidate for release version 0.3.0. Please see #358 for testing instructions and where to leave your feedback.

Relative to the previous release candidate, this candidate includes the following changes:

  • Fix codestyle in measurements section of code (missing commit in RC2).

0.3.0 Release Candidate 2

25 Jul 01:22
Compare
Choose a tag to compare
Pre-release

UPPERCASE WARNING: THIS IS A RELEASE CANDIDATE AND IS NOT INTENDED FOR DOWNSTREAM USE.

This source is a candidate for release version 0.3.0. Please see #358 for testing instructions and where to leave your feedback.

Relative to the previous release candidate, this candidate includes the following changes:

  • [core] Move returncode handling to OneMeasurement

0.3.0 Release Candidate 1

18 Jul 04:14
Compare
Choose a tag to compare
Pre-release

UPPERCASE WARNING: THIS IS A RELEASE CANDIDATE AND IS NOT INTENDED FOR DOWNSTREAM USE.

This source is a candidate for release version 0.3.0. Please see #358 for testing instructions and where to leave your feedback.

Relative to the previous release, this candidate includes the following changes:

  • Add support for Aerospike.
  • Refactoring of infinispan binding.
  • Upgrade of OrientDB from 1.0.1 -> 1.7.5-SNAPSHOT.
  • Fixes and updates to the MongoDB client.
  • Change the port of Cassandra to be a parameter instead of a constant.
  • Execute correct number of operations, even if not a multiple of thread count.
  • More reasonable write overload handling.
  • Document correct default timeout.

YCSB 0.2.0

08 Jul 02:19
Compare
Choose a tag to compare

Incompatible Changes

Datastore Bindings

  • ‼️ The Voldemort binding has been removed due to lack of published client artifacts (see #297)
  • ‼️ The MapKeeper binding has been removed due to lack of published client artifacts (see #210)
  • The HBase binding no longer supports HBase versions prior to 0.94 (previously 0.90 worked)
  • The Gemfire binding has updated its expected version to Gemfire 8

Framework

  • ❗ The latency measurements reported for Read-Modify-Write workloads have changed from milliseconds to microseconds (see #86)

Other

  • The WIP script bin/ycsb.sh has been removed (see #191)
  • YCSB no longer provides a CHANGES.txt file (see #294)

Known Issues

  • ❗ Current Cassandra CQL binding does not work with Cassandra 2.1 (see #293)
  • Current HBase binding does not work with HBase 0.94, 0.96, or 0.98 (see #343)
  • ❗ MongoDB's current driver doesn't properly handle scan workloads (see #344)
  • Client status thread continues to run for several seconds after operations are completed (see #316)
  • The mongodb binding does not honor the maxPoolSize=XX parameter and instead opens a connection per client thread (see #317)
  • ‼️ Running directly from a source checkout on Windows is not supported (see #335)
  • Running directly from a source checkout against the Basic datastore fails (see #336)
  • Several unsupported datastore bindings are still listed in CLI help (see #328)

Datastore Bindings

Tested Support

The following datastore bindings have been verified as working as of this release:

  • πŸ†• Apache Accumulo 1.6.0 via the accumulo binding (see #170)
  • Apache Cassandra 2.0.15 via the cassandra-cql and cassandra-10 bindings
    • The Cassandra binding has been updated to use CQL. Downstream users are advised to transition. (see #145)
  • Apache HBase 1.0.0 via the hbase-10 binding
    • The HBase binding has added support for the new stable HBase 1 API (see #225). Several bug fixes are also present (#79, #100, #141, #188, #256, #274, #278, #283, #325); notably, HBase clients no longer buffer client side by default.
  • MongoDB 2.0.9, 2.2.7, 2.4.14, 2.6.10, 3.0.4 via the mongodb and mongodb-async bindings. Additionally MongoDB 1.8.5 via the mongodb-async binding.
    • The MongoDB binding has added a new binding that leverages a third-party asynchronous client (see #180). Additionally, several bug fixes are present (#81, #82, #95, #137, #253, #277, #301).
  • πŸ†• Tarantool 1.6.1 via the tarantool binding (see #292, #319)

Untested

The following datastore bindings are present but have not been confirmed as a part of release testing. Referenced issue numbers are those fixed as a part of this release.

  • Apache Cassandra versions prior to 2.0 (#89)
  • πŸ†• Couchbase 1.1 (#136)
  • πŸ†• DynamoDB 1.3 (#88, #97)
  • πŸ†• ElasticSearch 0.19 (#93, #108)
  • Gemfire 8.1 (#94, #123, #268)
  • πŸ†• HyperTable 0.9 (#85)
  • Infinispan 7.1
  • JDBC (#47)
  • πŸ†• OrientDB 1.0 (#76)
  • Redis 2.0 (#167, #173)

Framework Changes

Latency capture via HDRHistogram

Users may opt-in to having transaction latencies measured via the HdrHistogram library by specifying hdrhistogram for the measurementtype property.

$ bin/ycsb load basic -P workloads/workloada -p measurementtype=hdrhistogram 

See #214 and HdrHistogram: A better latency capture method for more information.

Measuring transaction latency against a fixed schedule

This release incorporates changes to properly measure latency against a regular schedule of transactions (also referred to as the coordinated omission problem). Users must opt-in to this methodology by setting the measurement.interval property to intended.

$ bin/ycsb load basic -P workloads/workloada -p measurement.interval=intended 

See #214 and Correcting YCSB's Coordinated Omission problem for more information.

Verifying written data

Users may opt-in to writing a verifiable data set and having the correctness of stored values checked via the dataintegrity property. Note that turning on this feature changes the kinds of values that are written as a part of the test.

$ bin/ycsb load basic -P workloads/workloada -p dataintegrity=true

See #91 for more information

Exporting measurements as a JSON array

In addition to the extant ability to export measurements as a series of JSON objects, users may now opt-in to exporting measurements as a single JSON array by setting the exporter property to the JSONArrayMeasurementsExporter class.

$ bin/ycsb load basic -P workloads/workloada -p exportfile=somefile.json -p exporter=com.yahoo.ycsb.measurements.exporter.JSONArrayMeasurementsExporter

See #289 for more information.

Measurements changes

  • #100 YCSB now measures the cleanup phase of testing in microseconds. For datastore bindings that include the option of client-side buffering, such as HBase, the clean up period should also be measured by the datastore binding as an UPDAE to cover the final flush to the datastore.
  • #207 Measurements.getSummary is now synchronized.

Workload changes

  • #275 Zipfian generator now respects min/max parameters
  • #288 RandomByteIterator now generates bytes between 0x20 and 0x7F (previously 0x20 and 0x3F)

Other Changes

Datastore binding specific binary artifacts

YCSB now provides convenience binary artifacts that contain just the files needed to run against a particular datastore (e.g. just MongoDB). These artifacts should work just like the normal distribution but will be substantially smaller in size.

Artifacts are generated during the build for any datastore binding that provides a README.md. Artifacts are published as a part of the release process if they are tested during the release process.

See #250 for more information.

Workload Template

Users interested in creating their own workloads can now start from the set of all available properties; found in workloads/workload_template.

See #92 for more information

Status output changes

Status updates during a job run now include a timestamp. (#111)

Travis-CI for testing

YCSB now uses Travis-CI to test proposed patches. Contributors who add new datastore bindings are encouraged to leverage Travis-CI's support for standing up local test datastore instances to provide better tests.

See #164 and #284 for more information.

0.2.0 Release Candidate 3

30 Jun 16:05
Compare
Choose a tag to compare
Pre-release

UPPERCASE WARNING: THIS IS A RELEASE CANDIDATE AND IS NOT INTENDED FOR DOWNSTREAM USE.

This source is a candidate for release 0.2.0. Please see #266 for testing instructions and where to leave your feedback.

Compared to RC2, this RC changes:

  • MongoDB binding now correctly uses the 'mongodb.url' parameter and defaults to a database named 'ycsb'
  • HBase binding now aborts during initialization if the passed table does not exist.
  • Tarantool binding now properly handles scans
  • HBase README now explains pre-splitting
  • running from a source checkout now works
  • running a datastore binding with a name that doesn't match directory (e.g. hbase-10, cassandra-cql) now works
  • CHANGELOG has been removed

0.2.0 Release Candidate 2

20 Jun 15:08
Compare
Choose a tag to compare
Pre-release

UPPERCASE WARNING: THIS IS A RELEASE CANDIDATE AND IS NOT INTENDED FOR DOWNSTREAM USE.

This source is a candidate for release 0.2.0. Please see #266 for testing instructions and where to leave your feedback.

Compared to RC1, this RC changes:

  • The YCSB client launching utility has been updated to only include the libraries and configuration directory of the datastore binding that is currently in use

0.2.0 Release Candidate 1

19 Jun 06:55
Compare
Choose a tag to compare
Pre-release

UPPERCASE WARNING: THIS IS A RELEASE CANDIDATE AND IS NOT INTENDED FOR DOWNSTREAM USE.

This source is a candidate for release 0.2.0. Please see #266 for testing instructions and where to leave your feedback.