[Release] Ruby Driver 3.0.0 GA!

9 views
Skip to first unread message

Sandeep Tamhankar

unread,
May 23, 2016, 2:34:20 PM5/23/16
to DataStax Ruby Driver for Apache Cassandra User Mailing List
Fellow Ruby hackers,

Today we released the long-awaited GA of the Ruby driver v3.0.0! We have come a long way since the v2.1.x line. Check out our release blog post for all the details.

This release adds full support for Apache Cassandra versions 2.2.x and 3.x. Here's a consolidated list of updates gleaned from the change-log:

Features:
  • Increased default request timeout (the timeout option to Cassandra.cluster), from 10 seconds to 12 seconds because C* defaults to a 10 second timeout internally. The extra two seconds is buffer so that the client can report the timeout in the server. This is also consistent with the Java driver.
  • Expand client_timestamps cluster configuration option to allow user to specify his own generator for client timestamps.
  • Add protocol_version configuration option to allow the user to force the protocol version to use for communication with nodes.
  • Expose listen_address and broadcast_address in Cassandra::Host if available.
  • Add support for materialized views in the schema metadata.
  • Add support for Cassandra indexes in the schema metadata.
  • Add or expose the id, options, keyspace, partition_key, clustering_columns, and clustering_order attributes to table and view schema objects.
  • Add crc_check_chance and extensions attributes to ColumnContainer options.
  • Make cluster configuration options list publicly available. (Thanks, Evan Prothro!)
  • Add connections_per_local_node, connections_per_remote_node, requests_per_connection cluster configuration options to tune parallel query execution and resource usage.
  • Add Cassandra::Logger class to make it easy for users to enable debug logging in the client.
  • Added optional time out to Cassandra::Future#get
  • Allow skipping bound values or using Cassandra::UNSET explicitly.
  • Add support for smallint, tinyint, date (Cassandra::Date) and time (Cassandra::Time) data types.
  • Add new errors: Cassandra::Errors::ReadError, Cassandra::Errors::WriteError, and Cassandra::Errors::FunctionCallError.
  • Include schema metadata for User Defined Functions and User Defined Aggregates.
  • Include client ip addresses in request traces, only on Cassandra 3.x.
  • Add new retry policy decision Cassandra::Retry::Policy#try_next_host.
  • Support specifying statement idempotence with the new idempotent option when executing.
  • Support sending custom payloads when preparing or executing statements using the new payload option.
  • Expose custom payloads received with responses on server exceptions and Cassandra::Execution::Info instances.
  • Expose server warnings on server exceptions and Cassandra::Execution::Info instances.

Breaking Changes:
  • Cassandra::Future#join is now an alias to Cassandra::Future#get and will raise an error if the future is resolved with one.
  • Default consistency level is now :local_one.
  • Enable tcp no-delay by default.
  • Unavailable errors are retried on the next host in the load balancing plan by default.
  • Statement execution no longer retried on timeouts, unless :idempotent => true has been specified when executing.
  • The Datacenter-aware load balancing policy (Cassandra::LoadBalancing::Policies::DCAwareRoundRobin) defaults to using nodes in the local DC only. In prior releases, the policy would fall back to remote nodes after exhausting local nodes. Specify a positive value (or nil for unlimited) for max_remote_hosts_to_use when initializing the policy to allow remote node use.
Bug Fixes:
  • [RUBY-120] Tuples and UDTs can be used in sets and hash keys.
  • [RUBY-143] Retry querying system table for metadata of new hosts when prior attempts fail, ultimately enabling use of new hosts.
  • [RUBY-150] Fixed a protocol decoding error that occurred when multiple messages are available in a stream.
  • [RUBY-151] Decode incomplete UDTs properly.
  • [RUBY-154] Improve batch request performance, which had regressed in 3.0.0 beta1.
  • [RUBY-155] Request timeout timer should not include request queuing time.
  • [RUBY-156] Do not drop response frames that follow a frame containing a warning.
  • [RUBY-161] Protocol version negotiation in mixed version clusters should not fall back to v1 unless it is truly warranted.    
  • [RUBY-180] Column ordering is not deterministic in Table metadata.
  • [RUBY-185] Internal columns in static-compact and dense tables should be ignored.
  • [RUBY-186] Custom type column metadata should be parsed properly for C* 3.x schemas. 
  • [RUBY-207] Get NoMethodError when handling a write-timeout error using a downgrading consistency retry policy.
  • [RUBY-214] Client timestamps in JRuby are not fine-grained enough, causing timestamp collisions and lost rows in C*.
Enjoy!
Reply all
Reply to author
Forward
0 new messages