DataStax Enterprise 6.8 release notes
DataStax Enterprise 6.8.x release notes are now hosted here: DSE 6.8.4 and later release notes |
DataStax Enterprise release notes cover cluster requirements, upgrade guidance, components, security updates, changes and enhancements, issues, and resolved issues for DataStax Enterprise (DSE) 6.8.x.
Requirement for Uniform Licensing
All nodes in each DataStax licensed cluster must be uniformly licensed to use the same subscription. For example, if a cluster contains five nodes, all five nodes within that cluster must be DSE. Mixing different subscriptions within a cluster is not permitted. The DataStax Advanced Workloads Pack may be added to any DSE cluster in an incremental fashion. For example, a 10-node DSE cluster may be extended to include three nodes of the Advanced Workloads Pack. “Cluster” means a collection of nodes running the software which communicate with one another using gossip. See Enterprise Terms.
Upgrade information
DSE Search and DSE Graph performance variability can result after upgrades from DSE 5.1 to DSE 6.0 and later, especially if environments do not adhere to the DataStax hardware layout recommendations. See Planning and testing DataStax Enterprise deployments. The DSE Advanced Performance feature introduced in DSE 6.0 included a fundamental architecture change. Performance is highly dependent on data access patterns and varies from customer to customer. This upgrade impact affects only DataStax customers using DSE Search and/or DSE Graph. In response to this scenario:
|
Upgrade advice | Compatibility | ||
---|---|---|---|
Before you upgrade to a later major version, upgrade to the latest patch release on your current version. Be sure to read the relevant upgrade documentation. |
|||
Check the compatibility page for your products. |
|||
|
DataStax Drivers: You may need to recompile your client application code. |
||
Use DataStax Bulk Loader for loading and unloading data. |
Loads and unloads data to/from:
|
What’s new in DataStax Enterprise 6.8
-
Four times faster streaming-- what took hours now takes minutes. Based on zero copy streaming from Apache Cassandra 4.0, DSE 6.8 tackles and tames the increasing complexity and chaos of cloud infrastructure.
-
Four times faster recovery from node failure.
-
Four times faster addition of new nodes to the cluster.
-
Ability to stream whole and partial SSTables.
By allowing partial SSTables, DSE’s zero copy streaming applies to more use cases, especially STCS or TWCS, where partial SSTable streaming is the most common use case.
-
-
DataStax Graph
-
Graph-optimized data model. Graph implemented as a native extension of Cassandra’s data model.
-
Graph-specific API. Enables developers to more easily join, explore, match, and traverse distributed, large-scale data sets.
-
-
Kubernetes
-
DataStax Kubernetes Operator for Apache Cassandra® — also known as Cass Operator — is a separate product designed to automate deployments and management of open-source Apache Cassandra 3.11.7 or 3.11.6, or DSE 6.8.x databases in a Kubernetes cluster. See the Cass Operator documentation.
-
-
Storage-Attached Indexing (SAI)
-
SAI works with DSE 6.8.0 and later database tables. See the SAI documentation.
-
SAI makes it possible to create multiple secondary indexes on the same database table, with each SAI index based on any column in the DSE 6.8.0 or later database. Exception: there is no need to define an SAI index based on the partition key when it’s comprised of only one column.
-
Starting in DSE 6.8.2, users can also define an SAI index using one of the columns in the table’s composite partition key. A composite partition key means that the partition is based on multiple columns. In this case with an SAI index, users specify just one of the columns that comprises the composite partition key. Users could define a separate SAI index that specifies another single column from the composite partition key. See Examine SAI column index and query rules.
-
SAI indexes provide a simpler operational model, helping users accelerate their path to developing apps. SAI removes commonly encountered stumbling blocks that otherwise occur with Solr configuration details and esoteric tuning parameters.
-
-
Other Enhancements
-
Anti-Entropy: Incremental NodeSync.
Enabled by default when creating new table.
-
Security enhancements:
-
Allow setting of pre-hashed passwords using CQL.
-
New TRUNCATE and UPDATE Permissions.
-
Encryption on the SSTable Partition Index.
-
-
User productivity:
-
Allow filtering using IN restrictions
-
Faster DSE Tools startup.
-
-
Guardrails. This optional feature helps you avoid mistakes and prevents implementing known anti-patterns. Each guardrail are enabled individually. For a complete list of guardrails and a detailed description, see Guardrails in the cassandra.yaml file.
-
DSEFS:
-
Provides more reliable startup and shutdown.
-
Improved DSEFS directory delete performance; skips the recursive delete check on DSEFS.
-
-
DSE Analytics:
-
Spark 2.4.
-
Ability to supply TTL and WriteTime based on Column in a DataFrame.
-
-
DSE Search. Removes legacy Solr Join syntax for non partition key JOINS.
-
Performance improvement: Reduces chunk cache heap overhead.
-
-
Deprecated or removed functionality
Deprecated functionality will be removed in a future version.
-
Classic DSE Graph, replaced by DataStax Graph.
-
DSE Graph Loader. DataStax Bulk Loader 1.5 and later loads graph data.
-
In Memory (deprecated).
-
Multi-Instance (deprecated).
-
Tiered Storage (deprecated).
-
DSE 6.8.3 release notes
DataStax Enterprise 6.8.x release notes are now hosted here: DSE 6.8.4 and later release notes |
25 August 2020
6.8.3 Components
All components from DSE 6.8.3 are listed. Components updated since DSE 6.8.2 (if any) are indicated with an asterisk (*).
-
Apache Solr™ 6.0.1.4.2794
-
Apache Spark™ 2.4.0.16
-
Apache TinkerPop™ 3.4.5-20200107-6cec00d8
-
Apache Tomcat® 8.0.53
-
DSE Java Driver 1.10.0-dse+20200217
-
Netty 4.1.25.7.dse
-
Spark JobServer 0.8.0.49
DSE 6.8.3 is compatible with Apache Cassandra 3.11 and adds additional production-certified changes, if any.
Along with Cassandra 3.11.6, DSE 6.8.3 is supported by DataStax Kubernetes Operator for Apache Cassandra.
DSE 6.8.3 Highlights
-
Support for Storage Attached Indexes (SAI)
DSE database
-
Fixed a bug where on clusters with small token counts sstableloader could fail. (DB-4463)
6.8.3 DSE database
Changes and enhancements:
-
Storage-Attached Indexing (SAI) completed its Beta and is now a generally available (GA) DSE feature. Use it to create one or more secondary indexes on DSE tables. See (SAI).
-
Support for
decimal
andvarint
data types with SAI indexed columns. (DSP-20794 and DSP-17647) -
SAI metrics can be exposed via Metrics Collector and Grafana. DataStax provides prepackaged Grafana dashboards that integrate with DSE Metrics Collector. Use DSE Metrics Collector to export metrics to a monitoring tool like Prometheus, and then visualize the metrics in the Grafana dashboards. See the GitHub-hosted Metrics Reporter resources. Specifically for SAI metrics, refer to Monitor SAI indexes. (DSP-21111)
-
Support for collection indexing via SAI, and querying CQL collections. See CREATE CUSTOM INDEX and the SAI collection map examples. (DSP-20014)
Resolved issues:
-
Fixed a bug where on clusters with small token counts sstableloader could fail. (DB-4463)
Known issues:
-
None.
6.8.3 DSE Search
Changes and enhancements:
-
Search-related latency metrics will now decay in time like other metrics. Named queries (using query.name parameter) will now have separate latency metrics. New mbean atributes are available for search latency metrics: TotalLatency (us), Min, Max, Mean, StdDev, DurationUnit, MeanRate, OneMinuteRate, FiveMinuteRate, FifteenMinuteRate, RateUnit, 98th, 999th. (DSP-19612)
-
Fixed a bug where after several months of up time an encrypted index wouldn’t accept more writes unless the core is reloaded. (DSP-21234)
6.8.3 DataStax Graph
Changes and enhancements:
-
This change allows traversal in to UDTs via the 'properties' and 'values' steps. (DSP-21248)
-
Fixed type mismatch errors in graph traversals that use simplePath() and as() in presence of search index on edges with composite vertex keys (DSP-21309)
DataStax Bulk Loader
DataStax Apache Kafka™ Connector
Cassandra changes for DSE 6.8.3
DataStax Enterprise 6.8.3 is compatible with Apache Cassandra™ 3.11 and includes all production-certified enhancements from previous versions.
General upgrade advice for DSE 6.8.3
DataStax Enterprise 6.8.3 is compatible with Apache Cassandra® 3.11. All upgrade advice from previous versions applies. Carefully reviewing the DataStax Enterprise upgrade planning and upgrade instructions can ensure a smooth upgrade and avoid pitfalls and frustrations.
DataStax Enterprise 6.8.3 is compatible with Apache Cassandra 3.11 and adds Cassandra changes for DSE 6.8.3.
For additional advice about upgrading between versions of Apache Cassandra, see General upgrade advice for DSE 6.8.1.
TinkerPop changes for DSE 6.8.3
DataStax Enterprise (DSE) 6.8.3 includes all changes from previous DSE versions. See TinkerPop upgrade documentation for all changes.
DSE 6.8.2 release notes
DataStax Enterprise 6.8.x release notes are now hosted here: DSE 6.8.4 and later release notes |
31 July 2020
6.8.2 Components
All components from DSE 6.8.2 are listed. Components updated since DSE 6.8.1 (if any) are indicated with an asterisk (*).
-
Apache Solr™ 6.0.1.4.2769
-
Apache Spark™ 2.4.0.16
-
Apache TinkerPop™ 3.4.5 with additional production-certified changes
-
Apache Tomcat® 8.0.53
-
DSE Java Driver 1.10.0-dse+20200217
-
Netty 4.1.25.7.dse
-
Spark JobServer 0.8.0.49
DSE 6.8.2 is compatible with Apache Cassandra 3.11 and adds additional production-certified changes, if any.
Along with Cassandra 3.11.6, DSE 6.8.2 is supported by DataStax Kubernetes Operator for Apache Cassandra.
Experimental features
DataStax Labs provides the Apache Cassandra and DataStax communities with non-supported previews of potential production software enhancements, tools, aids, and partner software designed to increase productivity. See DataStax Labs and DSE OpsCenter Labs features.
DSE 6.8.2 Highlights
DSE database
-
New
systemd
units for package installs on RHEL and other compatible operating systems. See RedHat systemd configuration. -
New
nodetool import
command that lets you import SSTables from one or more directories. See nodetool import. -
Several new settings in
cassandra.yaml
. See 6.8.2 DSE database changes and enhancements below. -
Storage-Attached Indexing (SAI), a beta feature, adds supports for defining an index based on an individual column that is part of the table’s composite partition key. You can define separate, additional SAI indexes on other individual columns in the same table’s composite partition key. SAI 6.8.x continues to support defining multiple SAI indexes on any non-partition key column in the same table. See Examine SAI column index and query rules.
DSE security
Enhanced LDAP settings to properly handle nested groups so that LDAP enumerates all ancestors of a user’s distinguishedName
.
Inherited groups retrieval with directory_search
and members_search
types.
Fixed fetching parent groups of a role that’s mapped to an LDAP group.
See the security section of this topic.
6.8.2 DSE database
Changes and enhancements:
-
New
systemd
units for package installs on RHEL and other compatible operating systems. See RedHat systemd configuration. (DSP-7603) -
New
nodetool import
command that lets you import SSTables from one or more directories. See nodetool import. (DB-3253) -
New disk-usage guardrail,
disk_usage_max_disk_size_in_gb
, added incassandra.yaml
. See disk_usage_max_disk_size_in_gb. (DB-4380) -
New
snapshot_before_dropping_column
configuration option added incassandra.yaml
. See snapshot_before_dropping_column.(DB-2690) -
Increased the default
direct_reads_size_in_mb
value incassandra.yaml
. See direct_reads_size_in_mb. (DB-4348) -
New entries to
jvm.options
to assist with capturing thread dumps. (DSP-20778) -
If encryption is set on an SSTable, the SAI indexes are encrypted as well. Specifically the entire trie string terms dictionary is encrypted. Also, the user-readable sections of the kdtree are encrypted. See About SAI encryption. (DSP-16939)
-
Storage-Attached Indexing (SAI) adds support for queries using SAI indexes based on
INET
columns (IPv4 and IPv6). The queries may use EQ, GT, LT, GE, and LE operators. (DSP-17734) -
Storage-Attached Indexing (SAI), a beta feature, adds supports for defining an index based on an individual column that is part of the table’s composite partition key. You can define separate, additional SAI indexes on other individual columns in the same table’s composite partition key. SAI 6.8.x continues to support defining multiple SAI indexes on any non-partition key column in the same table. See Examine SAI column index and query rules. (DSP-20634)
-
PKCS11 keystore is supported in Advanced workloads. See keystore_type. (DSP-20094)
-
Python 2.7.x and 3.6+ are supported for
cqlsh
. (DB-4151) -
When working on encrypted SSTables, Cassandra tools such as
sstabledump
orsstablesplit
need to create a remote connection inReplicatedKeyProvider
to a Cassandra node in order to be able to decrypt the sstables. (Thesstableloader
tool is not affected.) However, if security is enabled on the cluster, the tools won’t be able to decrypt the sstables because they have no way of specifying security parameters for the cluster connection. (DSP-12666) -
LDAP servers can now handle multiple, comma separated addresses, with or without a port. If the port is not provided, the
ldap_options.server_port
parameter is used by default. See LDAP options. (DSP-13086)
Resolved issues:
-
Recording a slow CQL query to the log will no longer block the thread. (DSP-20894)
-
Fixed an issue where after a node replacement procedure, the bootstrap indexing in DSE Search was happening only on one TPC core. (DB-4049)
-
Fixed an issue to prevent an unbounded number of flushing tasks for memtables that are almost empty. (DB-4376)
-
Fixed an issue that caused nodes to crash after an upgrade from DSE 5.1 to 6.7.7. (DB-4379)
-
Fixed the problem with unrepairable digest mismatch between nodes running DSE 5.0.x and DSE 5.1+ (during upgrade) where the query includes a subset of columns. (DB-4399)
-
Fix an issue that was causing excessive contention during encryption/decryption operations. The fix resulted in an encryption/decryption performance improvement. (DB-4419)
-
Fixed an issue where during a large test run that reached a density of about 9TB/node, several instances of a TPC
WouldBlockException
messages, related toNodeSync
, appeared in the logs of multiple nodes. (DB-4456) -
Fixed a problem with the treatment of zeroes in the type
decimal
that could cause assertion errors, or not being able to find some rows if their key is 0 written using different precisions, or both. (DB-4472) -
Fixed the
NullPointerException
issue described in CASSANDRA-14200: NPE when dumping sstable with null value for timestamp column. (DB-4512) -
An issue that occurred while attempting to create an SSTable index (SASI) in 6.8.0 has been fixed. Previously, attempts to create a SASI index resulted in a
NoSuchMethod
error. (DSP-20720) -
Fixed an issue where the bloom filter false-positive rate calculation did not properly take into account true negatives, such as cases where read operations were attempted on non-existing rows. (DB-3246)
Known issues:
-
None.
6.8.2 DSE security
Changes and enhancements:
-
Enhanced LDAP settings to properly handle nested groups so that LDAP enumerates all ancestors of a user’s
distinguishedName
. (DSP-20107)-
Implemented inherited groups retrieval with both
directory_search
andmemberof_search
types. Before the change, even though inherited groups were requested, our LDAP feature did not take it into account at all. Users will see the difference immediately; no change in configuration is required (given the LDAP configuration is correct). -
Fixed fetching parent groups of a role which is mapped to an LDAP group. Previously when DSE needed to ascertain the roles that the particular role belonged to, DSE could get the roles only if the role of interest represented an LDAP user. When it represented an LDAP group, DSE sometimes received an empty set; in some cases, it worked by coincidence. To make this feature work, update its group search configuration. Refer to the
group_search_filter
description indse.yaml
. -
Added new options that allow you to configure optimized retrieval of parent groups including inherited ones in a single round-trip, when LDAP server supports such queries. In
dse.yaml
, seeall_groups_xxx
underldap_options
.
-
-
Two new LDAP options in
dse.yaml
(DSP-12612)-
extra_user_search_bases
-
extra_group_search_bases
See extra_user_search_bases and extra_group_search_bases.
-
-
While there is no change in default behavior, there is a new
render_cql_literals
option indse.yaml
under audit logging section, which isfalse
by default. When enabled, bound variables for logged statements will be rendered as CQL literals, which means there will be additional quotation marks and escaping, as well as values of all complex types (collections, tuples, UDTs) will be in human readable format. (DSP-17032) -
When DSE tries one authentication scheme and finds that the password is invalid, DSE now tries another scheme, but only if the user has a scheme permission for that other scheme. Example scenarios:
if user has permission to authenticate with scheme A, try scheme A if authenticated with A, success, exit if user has permission to authenticate with scheme B, try scheme B if authenticated with B, success, exit otherwise fail, exit
In summary, DSE controls which schemes should be tried by applying scheme permissions. Also, DSE will not try to use the scheme for which the user has no permission. (DSP-20903)
-
Raised the upper bound limit on DSE LDAP caches. See ldap_options.credentials_validity_in_ms and ldap_options.search_validity_in_seconds. (DSP-21072)
-
Provided information about how to get tools — such as
sstabledump
,sstablerepairedset
, andsstableloader
— working with SSTables that are encrypted with Transparent Data Encryption. See Using tools with TDE-encrypted SSTables. (DSP-20940)
Resolved security issues:
-
CVE security issues:
-
Fixed CVE-2019-20444 issue in which
HttpObjectDecoder.java
in Netty, before 4.1.44, allowed an HTTP header that lacked a colon. (DB-4068) -
Addressed the Jackson databind vulnerability (CVE-2020-8840) by upgrading
jackson-databind
to 2.9.10.4. (DSP-20981)
-
-
Fixed some security vulnerabilities for Solr HTTP REST API when authorization is enabled. Now, users with no appropriate permissions can perform search operations. Resources can be deleted when authorization is enabled, given the correct permissions. (DSP-20749)
-
Fixed an issue where the audit logging did not capture search queries. (DSP-21058)
-
Fixed an error condition when DSE failed to get the LDAP roles while refreshing a database schema. (DSP-21075)
6.8.2 DSE Analytics
Changes and enhancements:
PKCS11 keystore is supported in Advanced workloads. See keystore_type. (DSP-20094)
6.8.2 DSEFS
Changes and enhancements:
-
In DSEFS,
fsck
(file system consistency check) throttling is possible viap
or-parallelism
arguments. In the following example, the command performsfsck
by repairing up to 8 files at a time:dse fs fsck -p 8
This feature provides is a way to minimize
fsck
impact on overloaded clusters. TheLocationService
relies on Cassandra gossip. As a result of this change, connection/request timeouts no longer mark locations as unavailable. See the fsck reference topic. (DSP-20773)
Resolved DSEFS issues:
-
Backported the fix from DSP-15762: optimize remove recursive implementation - to lower the tombstone impact on Spark jobs. (DSP-20750)
-
Fixed excessive number of connections. (DSP-21021)
[[#682search]] === 6.8.2 DSE Search
Changes and enhancements:
-
PKCS11 keystore is supported in Advanced workloads. See keystore_type. (DSP-20094)
-
Reduced the encrypted search core loading/reloading time. (DSP-20692)
Resolved Search issues:
-
Fixed some security vulnerabilities for Solr HTTP REST API when authorization is enabled. Now, users with no appropriate permissions can perform search operations. Resources can be deleted when authorization is enabled, given the correct permissions. (DSP-20749)
-
Fixed an issue where a decryption block cache occasionally was not operational (SOLR-14498) (DSP-20987)
-
Fixed an issue where the audit logging did not capture search queries. (DSP-21058)
-
Fixed an issue where, after an LCM upgrade, the Solr http API was broken either through curl or the Solr UI. (DSP-21115)
-
Fixed an issue where after a node replacement procedure, the bootstrap indexing in DSE Search was happening only on one TPC core. (DB-4049)
6.8.2 DataStax Graph
Changes and enhancements:
PKCS11 keystore is supported in Advanced workloads. See keystore_type. (DSP-20094)
Resolved Graph issues:
Fixed an issue where DataStax Graph failed to complete a search query based on timestamp. (DSP-21117)
Cassandra changes for DSE 6.8.2
DataStax Enterprise 6.8.2 is compatible with Apache Cassandra™ 3.11 and includes all production-certified enhancements from previous versions.
General upgrade advice for DSE 6.8.2
General upgrade advice for DataStax Enterprise 6.8.0
DataStax Enterprise 6.8.2 is compatible with Apache Cassandra® 3.11. All upgrade advice from previous versions applies. Carefully reviewing the DataStax Enterprise upgrade planning and upgrade instructions can ensure a smooth upgrade and avoid pitfalls and frustrations.
DataStax Enterprise 6.8.2 is compatible with Apache Cassandra 3.11 and adds Cassandra changes for DSE 6.8.2.
For additional advice about upgrading between versions of Apache Cassandra, see General upgrade advice for DSE 6.8.1.
TinkerPop changes for DSE 6.8.2
DataStax Enterprise (DSE) 6.8.2 includes all changes from previous DSE versions. See TinkerPop upgrade documentation for all changes.
DSE 6.8.1 release notes
DataStax Enterprise 6.8.x release notes are now hosted here: DSE 6.8.4 and later release notes |
19 June 2020
6.8.1 Components
All components from DSE 6.8.1 are listed. Components that are updated for DSE 6.8.0 are indicated with an asterisk (*).
-
Apache Solr™ 6.0.1.4.2746 *
-
Apache Spark™ 2.4.0.14 *
-
Apache TinkerPop™ 3.4.5 with additional production-certified changes *
-
Apache Tomcat® 8.0.53
-
DSE Java Driver 1.10.0-dse+20200217
-
Netty 4.1.25.6.dse
-
Spark JobServer 0.8.0.49 *
DSE 6.8.1 is compatible with Apache Cassandra 3.11 and adds additional production-certified changes, if any.
Along with Cassandra 3.11.6, DSE 6.8.1 is supported by DataStax Kubernetes Operator for Apache Cassandra.
Experimental features
DataStax Labs provides the Apache Cassandra and DataStax communities with non-supported previews of potential production software enhancements, tools, aids, and partner software designed to increase productivity. See DataStax Labs and DSE OpsCenter Labs features.
6.8.1 Highlights
-
A connection pool is created of each LDAP server separately and once the connection is attempted, the best pool is chosen using a simple heuristic. Circuit breaker is used for temporarily disabling those servers which frequently fail to connect. Also, the pool is chosen that has the greatest number of idle connections. Failover parameters are configured through system properties. A new method was added to LDAP mbean to reset LDAP connections - that is, close all connection pools and recreate them.
6.8.1 DSE database
Changes and enhancements:
-
Added entries to jvm.options to assist with capturing thread dumps. (DSP-20778)
-
The frequency of range queries performed by lease manager is now configurable via
dse.lease.refresh.interval.seconds
system property, JMX, anddsetool
command. (DSP-20696) -
LDAP servers can now handle multiple, comma-separated addresses, with or without a port. If a port is not provided, the port parameter is used by default so there is no change in configuration for existing users who have LDAP configured. (DSP-13086)
-
DecayingEstimatedHistogram
now decays even when there are no updates, so invalid metric values do not linger. (DSP-20674) -
Recording a slow CQL query to the log will no longer block the thread. (DSP-20894)
-
Added functionality to query
role_stats
whenstats
is enabled underrole_management_options
indse.yaml
. (DB-4283) -
Fixed issue of failing to restore backup schema for locally-stored backups. This issue did not affect backups stored on a shared directory or remote blob store. (DB-4297)
-
Fixed
StackOverflowError
thrown during read repairs affecting only large clusters or clusters with enabled vnodes. (DB-4350) -
When
internode_encryption: dc,
new nodes fail to bootstrap. (DB-4435) -
Increased default
direct_reads_size_in_mb
value. Previously it was 2M per core + 2M shared. It is now 4M per core + 4M shared. (DB-4348) -
The replica side filtering
dtests test_update_on_wide_table
andtest_complementary_update_with_limit_on_static_column_with_not_empty_partitions
are more reliable. (DB-4043) -
Fixed a problem where continuous paging sessions could leak if the continuous result sets on the driver side were not exhausted or cancelled. Now, when the client connection is terminated, all the corresponding internal continuous paging sessions are cancelled as well. (DB-4313)
-
Allows DSE non-reserved keywords to be used as user-defined type (UDT) name. (DB-4387)
-
Fixed bug that caused nodes to crash after an upgrade from 5.1 to 6.7.7. (DB-4379)
-
New command to asynchronously enable/disable NodeSync on many nodes with
nodesync service enable/disable [-n nodes]
. (DB-4386) -
Fixed read inconsistencies described in CASSANDRA-12126. (DB-3873)
-
Improved the estimated values of histogram percentiles reported via JMX. In some cases, the percentiles may go slightly up for DSE 6.0+. (DB-4275)
-
The
stream_max_outbound_buffers_in_kb
configuration option is now optimally tuned based on the desiredstream_throughput_outbound_megabits_per_sec
andinter_dc_stream_throughput_outbound_megabits_per_sec
; the default value of 0 is recommended. (DB-4063) -
Reduced impact of streaming on performance of source nodes. (DB-4372)
-
Added
--disable-history
option to cqlsh that disables saving history to disk for current execution. Addedhistory
section tocqlshrc
which is called with boolean parameterdisabled
that is set toFalse
by default. (DB-3843) -
Security updates:
-
Added
dse.ldap.retry_interval.ms
system property, which sets the time between subsequent retries when trying authentication using LDAP server. (DSP-20298) -
Added a new JMX attribute of
ConnectionSearchPassword
forLdapAuthenticator
bean, which updates the LDAP search password without the need to restart DSE. (DSP-18928) -
Fixed LDAP cursors leak. (DSP-20623)
-
Upgraded Jackson Core and Jackson Mapper to address CVE-2019-10172. (DSP-20073)
-
Known issues:
-
None.
6.8.1 DSE Analytics
Changes and enhancements:
-
Security updates:
-
Patched hive with HIVE-13390 to fix CVE-2016-3083. (DSP-20612)
-
Resolved issues:
-
Internal continuous paging sessions were not closed when
LIMIT
clause was added in SQL query, which caused sessions leak and inability to close the Spark application gracefully because the Java driver waited indefinitely for orphaned sessions to finish. (DSP-19804)
6.8.1 DSEFS
Changes and enhancements:
-
Security updates:
-
DSEFS internode encrypted communication doesn’t fail when
server_encryption_options.require_endpoint_verification
is enabled. (DSP-20689)
-
6.8.1 DSE Graph
Changes and enhancements:
-
Fixed search queries in core graph for complex types such as date and time. (DSP-20685)
-
Prior to this ticket, running any
ALTER TABLE ... WITH table_properties
CQL statement would strip the an existing table’s vertex label or edge label. Now those should be preserved. (DSP-20901)
6.8.1 DSE Search
Changes and enhancements:
-
Reduced the encrypted search core loading and reloading time. (DSP-20692)
-
Fixed the
suggest
request handler to requireselect
permission. Previously,suggest
request handler returnedforbidden
response when authorization was on, regardless of the user permissions. (DSP-20697) -
Security updates:
-
Fixed some security vulnerabilities for Solr HTTP REST API when authorization is enabled. Now, users with no appropriate permissions cannot perform search operations. Resources can be deleted when authorization is enabled, given the correct permissions. (DSP-20749)
-
Cassandra changes for DSE 6.8.1
DataStax Enterprise 6.8.1 is compatible with Apache Cassandra™ 3.11 and includes all production-certified enhancements from previous versions.
General upgrade advice for DSE 6.8.1
DataStax Enterprise 6.8.1 is compatible with Apache Cassandra® 3.11. All upgrade advice from previous versions applies. Carefully reviewing the DataStax Enterprise upgrade planning and upgrade instructions can ensure a smooth upgrade and avoid pitfalls and frustrations.
DataStax Enterprise 6.8.1 is compatible with Apache Cassandra 3.11 and adds Cassandra changes for DSE 6.8.1.
Additional advice for upgrading between versions of Apache Cassandra includes:
Cassandra 4.0 changes
-
Catch non-IOException in FileUtils.close to make sure that all resources are closed (CASSANDRA-15225)
-
Nodetool import row cache invalidation races with adding SSTables to tracker (CASSANDRA-14529)
-
Let nodetool import take a list of directories (CASSANDRA-14442)
-
nodetool import cleanup and improvements (CASSANDRA-14417)
-
Add ability to load new SSTables from a separate directory (CASSANDRA-6719)
-
Add a few options to nodetool verify (CASSANDRA-14201)
-
Make all DDL statements idempotent and not dependent on global state (CASSANDRA-13426)
-
Always close RT markers returned by ReadCommand#executeLocally() (CASSANDRA-14515)
-
BloomFilter serialization format should not change byte ordering (CASSANDRA-9067)
-
Remove unused on-heap BloomFilter implementation (CASSANDRA-14152)
-
Add a virtual table to expose settings (CASSANDRA-14573)
-
Add a virtual table to expose caches (CASSANDRA-14538)
-
Fix up chunk cache handling of metrics (CASSANDRA-14628)
-
Add a virtual table to expose active client connections (CASSANDRA-14458)
-
Clean up and refactor client metrics (CASSANDRA-14524)
-
NodeTool clientstats should show SSL Cipher (CASSANDRA-14322)
-
Add ability to specify driver name and version (CASSANDRA-14275)
-
Add nodetool clientlist (CASSANDRA-13665)
-
Pad uncompressed chunks when they would be interpreted as compressed (CASSANDRA-14892)
-
Bind to correct local address in 4.0 streaming (CASSANDRA-14362)
-
Set broadcast address in internode messaging handshake (CASSANDRA-14579)
-
Internode messaging handshake sends wrong messaging version number (CASSANDRA-14540)
-
Use Netty for streaming (CASSANDRA-12229)
-
Use Netty for internode messaging (CASSANDRA-8457)
-
Correct and clarify SSLFactory.getSslContext method and call sites (CASSANDRA-14314)
-
Properly close StreamCompressionInputStream to release any ByteBuf (CASSANDRA-13906)
-
Correctly close Netty channels when a stream session ends (CASSANDRA-13905)
-
Fix buffer length comparison when decompressing in Netty-based streaming (CASSANDRA-13899)
-
Race condition when closing stream sessions (CASSANDRA-13852)
-
Make monotonic read / read repair configurable (CASSANDRA-14635)
-
Improve read repair blocking behavior (CASSANDRA-10726)
-
Add coordinator write metric per CF (CASSANDRA-14232)
-
Make PartitionUpdate and Mutation immutable (CASSANDRA-13867)
-
Disable old native protocol versions on demand (CASSANDRA-14659)
-
Refactor CompactionStrategyManager (CASSANDRA-14621)
-
Extend IAuthenticator to accept peer SSL certificates (CASSANDRA-14652)
-
For LCS, single SSTable up-level is handled inefficiently (CASSANDRA-12526)
-
Fix setting min/max compaction threshold with LCS (CASSANDRA-14388)
-
Support light-weight transactions in cassandra-stress (CASSANDRA-13529)
-
Add a virtual table to expose all running sstable tasks (CASSANDRA-14457)
-
Implement virtual keyspace interface (CASSANDRA-7622)
-
cassandra-stress throws NPE if insert section isn’t specified in user profile (CASSSANDRA-14426)
-
nodetool listsnapshots is missing local system keyspace snapshots (CASSANDRA-14381)
-
CVE-2017-5929 Security vulnerability and redefine default log rotation policy (CASSANDRA-14183)
-
Fix sstablemetadata date string for minLocalDeletionTime (CASSANDRA-14132)
-
Make sub-range selection for non-frozen collections return null instead of empty (CASSANDRA-14182)
-
Fix cassandra-stress startup failure (CASSANDRA-14106)
-
Fix trivial log format error (CASSANDRA-14015)
-
Allow sstabledump to do a json object per partition (CASSANDRA-13848)
-
Remove unused and deprecated methods from AbstractCompactionStrategy (CASSANDRA-14081)
-
Fix Distribution.average in cassandra-stress (CASSANDRA-14090)
-
Presize collections (CASSANDRA-13760)
-
Add GroupCommitLogService (CASSANDRA-13530)
-
Parallelize initial materialized view build (CASSANDRA-12245)
-
Fix flaky SecondaryIndexManagerTest.assert[Not]MarkedAsBuilt (CASSANDRA-13965)
-
Make LWTs send resultset metadata on every request (CASSANDRA-13992)
-
Fix flaky indexWithFailedInitializationIsNotQueryableAfterPartialRebuild (CASSANDRA-13963)
-
Introduce leaf-only iterator (CASSANDRA-9988)
-
Allow only one concurrent call to StatusLogger (CASSANDRA-12182)
-
Refactoring to specialised functional interfaces (CASSANDRA-13982)
-
Speculative retry should allow more friendly params (CASSANDRA-13876)
-
Throw exception if we send/receive repair messages to incompatible nodes (CASSANDRA-13944)
-
Replace usages of MessageDigest with Guava’s Hasher (CASSANDRA-13291)
-
Add nodetool cmd to print hinted handoff window (CASSANDRA-13728)
-
Fix some alerts raised by static analysis (CASSANDRA-13799)
-
Checksum sstable metadata (CASSANDRA-13321, CASSANDRA-13593)
-
Add result set metadata to prepared statement MD5 hash calculation (CASSANDRA-10786)
-
Add incremental repair support for --hosts, --force, and subrange repair (CASSANDRA-13818)
-
Refactor GcCompactionTest to avoid boxing (CASSANDRA-13941)
-
Expose recent histograms in JmxHistograms (CASSANDRA-13642)
-
Add SERIAL and LOCAL_SERIAL support for cassandra-stress (CASSANDRA-13925)
-
LCS needlessly checks for L0 STCS candidates multiple times (CASSANDRA-12961)
-
Update lz4 to 1.4.0 (CASSANDRA-13741)
-
Throttle base partitions during MV repair streaming to prevent OOM (CASSANDRA-13299)
-
Improve short read protection performance (CASSANDRA-13794)
-
Fix AssertionError in short read protection (CASSANDRA-13747)
-
Use compaction threshold for STCS in L0 (CASSANDRA-13861)
-
Fix problem with min_compress_ratio: 1 and disallow ratio < 1 (CASSANDRA-13703)
-
Add extra information to SASI timeout exception (CASSANDRA-13677)
-
Rework CompactionStrategyManager.getScanners synchronization (CASSANDRA-13786)
-
Add additional unit tests for batch behavior, TTLs, Timestamps (CASSANDRA-13846)
-
Add keyspace and table name in schema validation exception (CASSANDRA-13845)
-
Emit metrics whenever we hit tombstone failures and warn thresholds (CASSANDRA-13771)
-
Allow changing log levels via nodetool for related classes (CASSANDRA-12696)
-
Add stress profile yaml with LWT (CASSANDRA-7960)
-
Reduce memory copies and object creations when acting on ByteBufs (CASSANDRA-13789)
-
simplify mx4j configuration (Cassandra-13578)
-
Fix trigger example on 4.0 (CASSANDRA-13796)
-
force minimum timeout value (CASSANDRA-9375)
-
Add bytes repaired/unrepaired to nodetool tablestats (CASSANDRA-13774)
-
Don’t delete incremental repair sessions if they still have sstables (CASSANDRA-13758)
-
Fix pending repair manager index out of bounds check (CASSANDRA-13769)
-
Don’t use RangeFetchMapCalculator when RF=1 (CASSANDRA-13576)
-
Don’t optimise trivial ranges in RangeFetchMapCalculator (CASSANDRA-13664)
-
Use an ExecutorService for repair commands instead of new Thread(..).start() (CASSANDRA-13594)
-
Fix race / ref leak in anticompaction (CASSANDRA-13688)
-
Fix race / ref leak in PendingRepairManager (CASSANDRA-13751)
-
Enable ppc64le runtime as unsupported architecture (CASSANDRA-13615)
-
Improve sstablemetadata output (CASSANDRA-11483)
-
Support for migrating legacy users to roles has been dropped (CASSANDRA-13371)
-
Introduce error metrics for repair (CASSANDRA-13387)
-
Refactoring to primitive functional interfaces in AuthCache (CASSANDRA-13732)
-
Update metrics to 3.1.5 (CASSANDRA-13648)
-
batch_size_warn_threshold_in_kb can now be set at runtime (CASSANDRA-13699)
-
Avoid always rebuilding secondary indexes at startup (CASSANDRA-13725)
-
Upgrade JMH from 1.13 to 1.19 (CASSANDRA-13727)
-
Upgrade SLF4J from 1.7.7 to 1.7.25 (CASSANDRA-12996)
-
Default for start_native_transport now true if not set in config (CASSANDRA-13656)
-
Don’t add localhost to the graph when calculating where to stream from (CASSANDRA-13583)
-
Allow skipping equality-restricted clustering columns in ORDER BY clause (CASSANDRA-10271)
-
Use common nowInSec for validation compactions (CASSANDRA-13671)
-
Improve handling of IR prepare failures (CASSANDRA-13672)
-
Send IR coordinator messages synchronously (CASSANDRA-13673)
-
Flush system.repair table before IR finalize promise (CASSANDRA-13660)
-
Fix column filter creation for wildcard queries (CASSANDRA-13650)
-
Add 'nodetool getbatchlogreplaythrottle' and 'nodetool setbatchlogreplaythrottle' (CASSANDRA-13614)
-
fix race condition in PendingRepairManager (CASSANDRA-13659)
-
Allow noop incremental repair state transitions (CASSANDRA-13658)
-
Run repair with down replicas (CASSANDRA-10446)
-
Added started & completed repair metrics (CASSANDRA-13598)
-
Added started & completed repair metrics (CASSANDRA-13598)
-
Improve secondary index (re)build failure and concurrency handling (CASSANDRA-10130)
-
Improve calculation of available disk space for compaction (CASSANDRA-13068)
-
Change the accessibility of RowCacheSerializer for third party row cache plugins (CASSANDRA-13579)
-
Allow sub-range repairs for a preview of repaired data (CASSANDRA-13570)
-
NPE in IR cleanup when columnfamily has no sstables (CASSANDRA-13585)
-
Fix Randomness of stress values (CASSANDRA-12744)
-
Allow selecting Map values and Set elements (CASSANDRA-7396)
-
Fast and garbage-free Streaming Histogram (CASSANDRA-13444)
-
Update repairTime for keyspaces on completion (CASSANDRA-13539)
-
Add configurable upper bound for validation executor threads (CASSANDRA-13521)
-
Bring back maxHintTTL propery (CASSANDRA-12982)
-
Add testing guidelines (CASSANDRA-13497)
-
Add more repair metrics (CASSANDRA-13531)
-
RangeStreamer should be smarter when picking endpoints for streaming (CASSANDRA-4650)
-
Avoid rewrapping an exception thrown for cache load functions (CASSANDRA-13367)
-
Log time elapsed for each incremental repair phase (CASSANDRA-13498)
-
Add multiple table operation support to cassandra-stress (CASSANDRA-8780)
Cassandra 3.11.2 changes
-
Cassandra is now relying on the JVM options to properly shutdown on OutOfMemoryError. By default it will rely on the OnOutOfMemoryError option as the ExitOnOutOfMemoryError and CrashOnOutOfMemoryError options are not supported by the older 1.7 and 1.8 JVMs. A warning will be logged at startup if none of those JVM options are used. See CASSANDRA-13006 for more details.
Cassandra 3.11.2 upgrade considerations
-
Creating Materialized View with filtering on non-primary-key base column (added in CASSANDRA-10368) is disabled, because the liveness of view row is depending on multiple filtered base non-key columns and base non-key column used in view primary-key. This semantic cannot be supported without storage format change, see CASSANDRA-13826. For append-only use case, you may still use this feature with a startup flag: "-Dcassandra.mv.allow_filtering_nonkey_columns_unsafe=true"
-
The NativeAccessMBean isAvailable method will only return true if the native library has been successfully linked. Previously it was returning true if JNA could be found but was not taking into account link failures.
-
Primary ranges in the system.size_estimates table are now based on the keyspace replication settings and adjacent ranges are no longer merged (CASSANDRA-9639).
-
In 2.1, the default for otc_coalescing_strategy was 'DISABLED'. In 2.2 and 3.0, it was changed to 'TIMEHORIZON', but that value was shown to be a performance regression. The default for 3.11.0 and newer has been reverted to 'DISABLED'. Users upgrading from Cassandra 2.2 or 3.0 should be aware that the default has changed.
-
The StorageHook interface has been modified to allow to retrieve read information from SSTableReader (CASSANDRA-13120).
-
Materialized Views for upgrades from DSE 5.1.1 or 5.1.2 or any version DSE 5.0.10 or later:
-
Cassandra will no longer allow dropping columns on tables with Materialized Views.
-
A change was made in the way the Materialized View timestamp is computed, which may cause an old deletion to a base column which is view primary key (PK) column to not be reflected in the view when repairing the base table post-upgrade. This condition is only possible when a column deletion to an MV primary key (PK) column not present in the base table PK (via UPDATE base SET view_pk_col = null or DELETE view_pk_col FROM base) is missed before the upgrade and received by repair after the upgrade. If such column deletions are done on a view PK column which is not a base PK, it’s advisable to run repair on the base table of all nodes prior to the upgrade. Alternatively it’s possible to fix potential inconsistencies by running repair on the views after upgrade or drop and re-create the views. See CASSANDRA-11500 for more details.
-
Removal of columns not selected in the Materialized View (via UPDATE base SET unselected_column = null or DELETE unselected_column FROM base) may not be properly reflected in the view in some situations so we advise against doing deletions on base columns not selected in views until this is fixed on CASSANDRA-13826.
-
Cassandra 3.10 changes
-
Runtime modification of concurrent_compactors is now available via nodetool concurrent_compactors.
-
Support for the assignment operators +=/-= has been added for update queries.
-
An Index implementation may now provide a task which runs prior to joining the ring. See CASSANDRA-12039
-
Filtering on partition key columns is now also supported for queries without secondary indexes.
-
A slow query log has been added: slow queries will be logged at DEBUG level. For more details refer to CASSANDRA-12403 and slow_query_log_timeout_in_ms in cassandra.yaml.
-
Support for GROUP BY queries has been added.
-
A new compaction-stress tool has been added to test the throughput of compaction for any cassandra-stress user schema. see compaction-stress help for how to use.
-
Prepared statements are now persisted in the table prepared_statements in the system keyspace. Upon startup, this table is used to preload all previously prepared statements - i.e. in many cases clients do not need to re-prepare statements against restarted nodes.
-
cqlsh can now connect to older Cassandra versions by downgrading the native protocol version. Please note that this is currently not part of our release testing and, as a consequence, it is not guaranteed to work in all cases. See CASSANDRA-12150 for more details.
-
Snapshots that are automatically taken before a table is dropped or truncated will have a "dropped" or "truncated" prefix on their snapshot tag name.
-
Metrics are exposed for successful and failed authentication attempts. These can be located using the object names org.apache.cassandra.metrics:type=Client,name=AuthSuccess and org.apache.cassandra.metrics:type=Client,name=AuthFailure respectively.
-
Add support to "unset" JSON fields in prepared statements by specifying DEFAULT UNSET. See CASSANDRA-11424 for details
-
Allow TTL with null value on insert and update. It will be treated as equivalent to inserting a 0.
-
Removed outboundBindAny configuration property. See CASSANDRA-12673 for details.
Cassandra 3.10 upgrade considerations
-
Support for alter types of already defined tables and of UDTs fields has been disabled. If it is necessary to return a different type, please use casting instead. See CASSANDRA-12443 for more details.
-
Specifying the default_time_to_live option when creating or altering a materialized view was erroneously accepted (and ignored). It is now properly rejected.
-
Only Java and JavaScript are now supported UDF languages. The sandbox in 3.0 already prevented the use of script languages except Java and JavaScript.
-
Compaction now correctly drops sstables out of CompactionTask when there isn’t enough disk space to perform the full compaction. This should reduce pending compaction tasks on systems with little remaining disk space.
-
Request timeouts in cassandra.yaml (read_request_timeout_in_ms, etc) now apply to the "full" request time on the coordinator. Previously, they only covered the time from when the coordinator sent a message to a replica until the time that the replica responded. Additionally, the previous behavior was to reset the timeout when performing a read repair, making a second read to fix a short read, and when subranges were read as part of a range scan or secondary index query. In 3.10 and higher, the timeout is no longer reset for these "subqueries". The entire request must complete within the specified timeout. As a consequence, your timeouts may need to be adjusted to account for this. See CASSANDRA-12256 for more details.
-
Logs written to stdout are now consistent with logs written to files. Time is now local (it was UTC on the console and local in files). Date, thread, file and line info where added to stdout. (see CASSANDRA-12004)
-
The 'clientutil' jar, which has been somewhat broken on the 3.x branch, is not longer provided. The features provided by that jar are provided by any good java driver and we advise relying on drivers rather on that jar, but if you need that jar for backward compatiblity until you do so, you should use the version provided on previous Cassandra branch, like the 3.0 branch (by design, the functionality provided by that jar are stable accross versions so using the 3.0 jar for a client connecting to 3.x should work without issues).
-
(Tools development) DatabaseDescriptor no longer implicitly startups components/services like commit log replay. This may break existing 3rd party tools and clients. In order to startup a standalone tool or client application, use the DatabaseDescriptor.toolInitialization() or DatabaseDescriptor.clientInitialization() methods. Tool initialization sets up partitioner, snitch, encryption context. Client initialization just applies the configuration but does not setup anything. Instead of using Config.setClientMode() or Config.isClientMode(), which are deprecated now, use one of the appropiate new methods in DatabaseDescriptor.
-
Application layer keep-alives were added to the streaming protocol to prevent idle incoming connections from timing out and failing the stream session (CASSANDRA-11839). This effectively deprecates the streaming_socket_timeout_in_ms property in favor of streaming_keep_alive_period_in_secs. See cassandra.yaml for more details about this property.
-
Duration literals support the ISO 8601 format. By consequence, identifiers matching that format (e.g P2Y or P1MT6H) will not be supported anymore (CASSANDRA-11873).
Cassandra 3.8 changes
-
Shared pool threads are now named according to the stage they are executing tasks for. Thread names mentioned in traced queries change accordingly.
-
A new option has been added to cassandra-stress "-rate fixed={number}/s" that forces a scheduled rate of operations/sec over time. Using this, stress can accurately account for coordinated ommission from the stress process.
-
The cassandra-stress "-rate limit=" option has been renamed to "-rate throttle="
-
hdr histograms have been added to stress runs, it’s output can be saved to disk using: "-log hdrfile=" option. This histogram includes response/service/wait times when used with the fixed or throttle rate options. The histogram file can be plotted on http://hdrhistogram.github.io/HdrHistogram/plotFiles.html
-
TimeWindowCompactionStrategy has been added. This has proven to be a better approach to time series compaction and new tables should use this instead of DTCS. See CASSANDRA-9666 for details.
-
DateTieredCompactionStrategy has been deprecated - new tables should use TimeWindowCompactionStrategy. Note that migrating an existing DTCS-table to TWCS might cause increased compaction load for a while after the migration so make sure you run tests before migrating. Read CASSANDRA-9666 for background on this.
-
Change-Data-Capture is now available. See cassandra.yaml and for cdc-specific flags and a brief explanation of on-disk locations for archived data in CommitLog form. This can be enabled via ALTER TABLE … WITH cdc=true. Upon flush, CommitLogSegments containing data for CDC-enabled tables are moved to the data/cdc_raw directory until removed by the user and writes to CDC-enabled tables will be rejected with a WriteTimeoutException once cdc_total_space_in_mb is reached between unflushed CommitLogSegments and cdc_raw.
CDC is disabled by default in the .yaml file. Do not enable CDC on a mixed-version cluster as it will lead to exceptions which can interrupt traffic. Once all nodes have been upgraded to 3.8 it is safe to enable this feature and restart the cluster.
Cassandra 3.10 upgrade considerations
-
The ReversedType behaviour has been corrected for clustering columns of BYTES type containing empty value. Scrub should be run on the existing SSTables containing a descending clustering column of BYTES type to correct their ordering. See CASSANDRA-12127 for more details.
-
Ec2MultiRegionSnitch will no longer automatically set broadcast_rpc_address to the public instance IP if this property is defined on cassandra.yaml.
-
The name "json" and "distinct" are not valid anymore a user-defined function names (they are still valid as column name however). In the unlikely case where you had defined functions with such names, you will need to recreate those under a different name, change your code to use the new names and drop the old versions, and this before upgrade (see CASSANDRA-10783 for more details).
Cassandra 3.7 upgrade considerations
-
A maximum size for SSTables values has been introduced, to prevent out of memory exceptions when reading corrupt SSTables. This maximum size can be set via max_value_size_in_mb in cassandra.yaml. The default is 256MB, which matches the default value of native_transport_max_frame_size_in_mb. SSTables will be considered corrupt if they contain values whose size exceeds this limit. See CASSANDRA-9530 for more details.
Cassandra 3.6 changes
-
JMX connections can now use the same auth mechanisms as CQL clients. New options in cassandra-env.(sh|ps1) enable JMX authentication and authorization to be delegated to the IAuthenticator and IAuthorizer configured in cassandra.yaml. The default settings still only expose JMX locally, and use the JVM’s own security mechanisms when remote connections are permitted. For more details on how to enable the new options, see the comments in
cassandra-env.sh
. A new class of IResource, JMXResource, is provided for the purposes of GRANT/REVOKE via CQL. See CASSANDRA-10091 for more details. Also, directly setting JMX remote port via the com.sun.management.jmxremote.port system property at startup is deprecated. See CASSANDRA-11725 for more details. -
JSON timestamps are now in UTC and contain the timezone information, see CASSANDRA-11137 for more details.
-
Collision checks are performed when joining the token ring, regardless of whether the node should bootstrap. Additionally, replace_address can legitimately be used without bootstrapping to help with recovery of nodes with partially failed disks. See CASSANDRA-10134 for more details.
-
Key cache will only hold indexed entries up to the size configured by column_index_cache_size_in_kb in cassandra.yaml in memory. Larger indexed entries will never go into memory. See CASSANDRA-11206 for more details.
-
For tables having a default_time_to_live specifying a TTL of 0 will remove the TTL from the inserted or updated values.
-
Startup is now aborted if corrupted transaction log files are found. The details of the affected log files are now logged, allowing the operator to decide how to resolve the situation.
-
Filtering expressions are made more pluggable and can be added programatically via a QueryHandler implementation. See CASSANDRA-11295 for more details.
Cassandra 3.4 changes
-
Internal authentication now supports caching of encrypted credentials. Reference cassandra.yaml:credentials_validity_in_ms
-
Remote configuration of auth caches via JMX can be disabled using the the system property cassandra.disable_auth_caches_remote_configuration
-
sstabledump tool is added to be 3.0 version of former sstable2json. The tool only supports v3.0+ SSTables. See tool’s help for more detail.
-
The mbean interfaces org.apache.cassandra.auth.PermissionsCacheMBean and org.apache.cassandra.auth.RolesCacheMBean are deprecated in favor of org.apache.cassandra.auth.AuthCacheMBean. This generalized interface is common across all caches in the auth subsystem. The specific mbean interfaces for each individual cache will be removed in a subsequent major version.
Cassandra 3.2 changes
-
We now make sure that a token does not exist in several data directories. This means that we run one compaction strategy per data_file_directory and we use one thread per directory to flush. Use nodetool relocatesstables to make sure your tokens are in the correct place, or just wait and compaction will handle it. See CASSANDRA-6696 for more details.
-
bound maximum in-flight commit log replay mutation bytes to 64 megabytes tunable via cassandra.commitlog_max_outstanding_replay_bytes
-
Support for type casting has been added to the selection clause.
-
Hinted handoff now supports compression. Reference cassandra.yaml:hints_compression.
Hints compression is currently disabled by default.
-
The Thrift API is deprecated and will be removed in Cassandra 4.0.
Cassandra 3.2 upgrade considerations
-
The compression ratio metrics computation has been modified to be more accurate.
-
Running Cassandra as root is prevented by default.
-
JVM options are moved from cassandra-env.(sh|ps1) to jvm.options.
Cassandra 3.1 upgrade considerations
-
The return value of SelectStatement::getLimit as been changed from DataLimits to int.
-
Custom index implementation should be aware that the method Indexer::indexes() has been removed as its contract was misleading and all custom implementation should have almost surely returned true inconditionally for that method.
-
GC logging is now enabled by default (you can disable it in the jvm.options file if you prefer).
TinkerPop changes for DSE 6.8.1
DataStax Enterprise (DSE) 6.8.1 includes all changes from previous DSE releases that are in addition to Apache TinkerPop™ 3.4.5
DSE 6.8.0 release notes
DataStax Enterprise 6.8.x release notes are now hosted here: DSE 6.8.4 and later release notes |
30 March 2020
6.8.0 Components
-
Apache Solr™ 6.0.1.4.2718
-
Apache Spark™ 2.4.0.13
-
Apache TinkerPop™ 3.4.5 with additional production-certified changes
-
Apache Tomcat® 8.0.53
-
DSE Java Driver 1.10.0-dse+20200217
-
Netty 4.1.25.6.dse
-
Spark Jobserver 0.8.0.49 (DSE custom version)
-
DSE 6.8 is based on Apache Cassandra® 3.11 with additional production-certified changes.
DSE 6.8.0 is compatible with Apache Cassandra 3.11 and adds additional production-certified changes.
Along with Cassandra 3.11.6, DSE 6.8.0 is supported by a new product offering, DataStax Kubernetes Operator for Apache Cassandra.
Experimental features
DataStax Labs provides the Apache Cassandra and DataStax communities with non-supported previews of potential production software enhancements, tools, aids, and partner software designed to increase productivity. See DataStax Labs and DSE OpsCenter Labs features.
6.8.0 DSE database
Changes and enhancements:
-
Beta version of Storage-Attached Indexing (SAI), which provides traditional relational database indexing capabilities for DSE, without complexity or operational challenges. Includes the revised
CREATE CUSTOM INDEX
command with a newUSING 'StorageAttachedIndex'
clause. See the SAI topics and the CREATE CUSTOM INDEX command. -
Beta version of the DSE Backup and Restore Service, which enables cluster-wide backup and restore operations. Intended for users of DataStax Kubernetes Operator for Apache Cassandra® (Cassandra Operator).
-
Performance improvement: Better memtable memory usage. (DB-2164)
-
DataStax recommends enabling NodeSync on base tables with materialized views. See Materialized views maintenance guidelines. (DB-2831)
-
Simplified maintenance of materialized views by requiring periodic repair of only base tables. Updates on columns indexed in materialized views might see a performance regression of up to 20% in throughput and latency. (DB-2816)
-
New client requests rate and internode message rate usage statistics are output from nodetool tpstats. (DB-3619)
-
Fixed a rare race during streaming that could have resulted in aborted SSTable files being left on disk. (DB-2733)
-
Compaction performance improvement with new
cassandra.yaml
pick_level_on_streaming option. (DB-1658) -
Incremental NodeSync service on newly created tables is now on by default. (DB-3934)
-
Existing tables that did not have NodeSync service enabled in DSE 6.7 and earlier are not affected after upgrade.
-
Existing tables with NodeSync service enabled in DSE 6.7 and earlier retain incremental NodeSync service enabled after upgrade.
-
To disable NodeSync service for all new tables, use the -Ddse.nodesync.disable_on_new_tables system parameter.
-
To disable NodeSync for a single table, use the table property:
ALTER TABLE table_name WITH nodesync = { 'enabled' : 'false' }
-
-
Introduce new
TRUNCATE
permission. (DB-74)-
Deprecate
MODIFY
permission. -
New
UPDATE
permission allows DML statementsINSERT
,UPDATE
, andDELETE
. -
New
TRUNCATE
permissions allows execution ofTRUNCATE
statement. DataStax recommends migrating fromMODIFY
permission. Thoroughly plan and implement this migration with care in case aROLE
needs theTRUNCATE
permission.
-
-
Create new settings system view by merging CASSANDRA-14573. Allows select properties to be modified. (DB-37)
Column Name CQL Type Column Type Description name
text
partition key
The property name
value
text
regular
The property value as text
writeable
boolean
regular
true if the property can be updated, false otherwise
-
In
cassandra.yaml
,memtable_flush_writers
now defaults to 8 andmemtable_cleanup_threshold
now defaults tomax(0.2, 1 / (memtable_flush_writers + 1))
to establish a lower bound. PendingTasks metric attached to allJMXEnabledThreadPoolExecutor
instances, includingMemtableFlushWriter
, now excludes currently executing tasks. (DB-2871) -
Fix error that occurs when
initialCapacity
overflows during continuous paging. (DB-2852) -
dsetool ring shows in-progress search index building during bootstrap. (DSP-15281)
-
Improved output of
nodetool tablestats
to accurately report when no data is available. (DB-2854) -
New cqlsh command line option to set
consistency-level
toserial
. (DB-4225) -
Remove the serialization header partition/clustering key validation for secondary-index sstables and changes the validation to consider the element type. (DB-4111)
-
Keyspace and table names now allow 222 characters. (DB-2128)
-
Fix
viewbuildstatus
error that returns incorrect value. (DB-2397) -
nodetool stop
hasanticompaction
option. (DB-3821) -
New
ALL TABLES
permission allows permissions on all of the tables of a keyspace, but not the keyspace itself. (DB-3823) -
Log messages for leak detection now specify if the leaked resource has negative consequences. (DB-3827)
-
Fix potentially incorrect dropped messages in case of time drifts. (DB-3891)
-
Change in validation method for
initial_token
andnum_tokens
forcassandra.yaml
. (DB-1618) -
Fix a bug to correctly estimate the size of the on-heap memtable metadata. (DB-2086)
-
Starting from DSE 6.8.0, if nodes need to communicate via a different interface than the one configured as the
listen_address
, you must configure the additional interface as thebroadcast_address
. If no routing exists between the two interfaces, you need to eventually setlisten_on_broadcast_address: true
. (DB-4142) -
Fix bug to allow
LIST ROLES
andLIST USERS
to work withsystem-keyspace-filtering
enabled. (DB-4221) -
nodetool compactionstats
now accurately shows the pending tasks for TimeWindowCompactionStrategy (TWCS). (DB-3495) -
DROP KEYSPACE
now waits for interrupted compactions to finish before dropping the keyspace. (DB-3575) -
During the execution of CQL queries, check guardrails are ignored if the user is a superuser or for internal system queries. (DB-3654)
-
Replaced
stream_entire_sstables
for Cassandra withzerocopy_streaming_enabled
for DataStax Enterprise, along with the related options. (DB-3832) -
Improved handling of SSTable min and max clustering. (DB-3728)
-
For
cassandra.yaml
configuration, onlyTLS
is allowed for theprotocol
option for client_encryption_options and server_encryption_options for security. (DB-2786) -
New counter metrics for submitted traversals and throughput are under
com.datastax.bdp.metrics.graph
. (DSP-17009) -
Improved performance of dsetool, dse client-tool, dse fs, and nodetool commands. (DSP-17586)
-
DataStax Bulk Loader is not included with DataStax Enterprise installations, but can be installed separately. (DSP-19469)
-
The application_name and application_version attributes set by the Python driver flow through to driver event reporting and Insights. cqlsh sets these attributes to appropriate values so connected clients appear neatly in Insights and other reporting. (DSP-20119)
-
Incremental Nodesync is disabled when an ordering partitioner configured. (DB-4024)
-
Added
hostname_verification
toldap_options
indse.yaml
. (DSP-20302) -
Add the ability to add the reason for re-indexing to the dsetool core_indexing_status command. (DSP-20264)
-
Make the search reference visible in the error message for LDAP connections. (DSP-20578)
-
The
jvm.options
file is now namedjvm-server.options
. (DSP-20769) -
Security updates:
-
Allow setting of pre-hashed passwords via CQL. (DB-3293)
-
Fix min/max clustering keys being stored in plain text in SSTable statistics. (DB-3845)
-
Upgrade Apache Solr to address CVE-2018-8026. (DSP-16653)
-
Upgrade Jackson Databind to address CVE-2018-11307 and CVE-2019-14540 (DSP-18099, DB-2911, DSP-17964)
-
Apache Spark local privilege escalation vulnerability: CVE-2018-11760. (DSP-18225)
-
Upgrade spray-json to prevent Denial Of Service (DoS) vulnerability CVE-2018-18854 and CVE-2018-18853. (DSP-19208)
-
Upgrade Apache MINA Core library to 2.0.21 to prevent a security issue where Apache MINA Core was vulnerable to information disclosure. (DSP-19213)
-
Upgrade Jackson Databind to address CVE-2019-16942. (DSP-19896)
-
Remove Jodd Core dependency that created vulnerability to Arbitrary File Writes. (DSP-19206)
-
Known issues:
-
Streaming throughput (bootstrapping, decommissioning nodes) may be slower on networks with high latency. (DB-4041)
Workaround: Expand streaming buffers setting the following in
cassandra.yaml
: -
Certain workloads may cause higher context switches and increased latencies. (DSP-20499)
Workaround: Set system properties during startup:
-Ddse.tpc.work_stealing_max_unparks=1
-
NoSuchMethod error returned when creating SASI index. (DSP-20720)
6.8.0 DSE Analytics
Changes and enhancements:
-
Improved reliability of no-space-left-on-device detection. The DSEFS min_free_space default value in
dse.yaml
is reduced from 5 GB to 256 MB. (DSP-16873) -
Apache Spark™ 2.4 runs with Scala 2.11.12 by default. Upgrade the compile time dependencies for structured streaming and other experimental Spark features. Even though most Spark jobs from earlier Spark 2.x builds can run on Spark 2.4 without recompiling, DataStax recommends that you recompile your applications against Spark 2.4 to guarantee compatibility. (DSP-17823)
-
Add the ability to set time-to-live (TTL) and WriteTime in DseGraphFrames and Spark DataFrames. (DSP-17044)
-
Bring-Your-Own-Spark (BYOS) builds include dependencies for Joda and Commons-Configuration. (DSP-20512)
-
During Spark Application startup,
Exception: java.lang.ExceptionInInitializerError thrown from the UncaughtExceptionHandler in thread "main"
was logged, sometimes instead of a meaningful error. (DSP-20474) -
New
spark.cassandra.query.consistency.level
parameter sets the default consistency level for sessions accessed by Spark Connector. The default consistency level for HiveMetaStore is LOCAL_QUORUM. (DSP-19982) -
Changes to IN clauses. (DSP-15203)
-
Multiple IN clauses on partition and clustering keys can be pushed down to Cassandra.
-
If cross product of values in IN clauses exceeds
spark.sql.dse.inClauseToJoinConversionThreshold
, thenJoinWithCassandraTable
is performed instead. -
If cross product of values in IN clauses exceeds
spark.sql.dse.inClauseToFullScanConversionThreshold
, then full table scan is performed instead.
-
6.8.0 DSEFS
Changes and enhancements:
-
Running Spark applications with large number of partitions creates many tombstones and may cause tombstone warnings or in extreme cases a job failure. DSE 6.8 reduces the number of tombstones created during Spark job commit and improves performance of some Spark jobs up to 60%. (DSP-15762)
-
When creating a file through WebHDFS API, DSEFS does not verify WX permissions of parent’s parent when and the parent exists. (DSP-20355)
-
Allow DSEFS to use mixed case keyspaces to connect directly to the dsefs keyspace. (DSP-20354)
-
DSEFS node identifiers are now the same as DSE node identifiers. The NODE_ID file in the
dsefs
working directory is no longer needed. (DSP-18009) -
Add support for multiple contact points for DSEFS implementation of the Hadoop FileSystem. Provides FileSystem URI with
dsefs://host0[:port][,host1[:port]]/
. ( DSP-19704) -
DSEFS local file system implementation now returns alphabetically sorted directories and files when using wildcards and listing command. (DSP-20057)
-
DSEFS now stores information about data usage in the local storage directory instead of Cassandra. This change improves reliability if some nodes are down. (DSP-15349)
-
Improve reliability of DSEFS internode connections. Fix error for missing session key when cluster nodes were down. (DSP-15347)
-
Improved DSEFS node health reported by
dsefs df
for consistency withdsetool status
andnodetool status
. (DSP-15346)
6.8.0 DSE Graph
Changes and enhancements:
-
Traversal length is hard-coded to 90 steps and traversals with more steps fail with an error message to split it into multiple smaller traversals. (DSP-17657)
-
Enhanced Graph OLAP Spark configuration. (DSP-17832)
-
New Spark configuration properties in
resources/graph/conf/olap.properties
. -
New
dse client-tool graph-olap
commands.
-
-
DataStax Graph (core) changes:
-
Changed delimiters and a checksum make IDs more readable and removes the need to manually construct IDs. (DSP-15963)
-
Support for user-defined types (UDTs) is added. (DSP-16030)
-
System is now available while aliased. Alias for a missing graph now allows a user to issue commands. Exceptions occur when accessing
'g'
(or the alias),'graph'
, or'schema'
. (DSP-16682) -
.withReplication is mandatory. Classic is no longer a valid engine to create a graph using the new syntax. (DSP-16698)
-
Timeouts from
dse.yaml
are still valid. However, there is no Gremlin-exposed traversal source or graph configuration. To change timeouts, set them on the driver connection. Timeouts cannot exceed limits set indse.yaml
. (DSP-16758) -
Improved user experience when authorization errors occur. (DSP-18125)
-
Fixed Graph cleanUp failures due to duplicate properties on dangling edges. (DSP-20460)
-
-
Track latencies for unaliased, global, and per-graph traversals. (DSP-16455)
-
Upgraded dependency for Graph prototyping to TinkerPop 3.4.0. (DSP-16452)
-
Introduces
with()
step modulator which will enable DSE Graph to modify step behaviors as ing.addV('person').with(ttl, 1000)
-
Removes deprecated rebindings option; older drivers going back to 3.1.x can no longer connect.
-
min()
andmax()
work on any Comparable to allow forg.V().values('name').min()
. -
Reduces barrier steps (
min()
,max()
,mean()
,sum()
) so no result is returned if there is no input rather thanNaN
or0
, which could lead to unintuitive results. -
Changes the order of
select()
scopes to make it easier to select a specific map entry if a side-effect existed with the same name.
-
-
The AndStep, OrStep, DedupGlobalStep, RangeGlobalStep, NotStep, SelectStep, SelectOneStep, OrderGlobalStep, and WherePredicateStep steps are valid when determining whether to route OLAP traversals to DseGraphFrames. (DSP-16233)
-
Allow range queries using part of the Custom Vertex ID. This change requires the partition key components to be specified before the range query may be specified on the clustering key components. (DSP-12501)
-
Add read/write support for TTL and WriteTime into DataGraphFrames (DGF). (DSP-19304)
-
Expose configuration and metrics for Gremlin query cache. (DSP-20240)
-
Change classic Graph query so vertices are read from
_p
tables in Cassandra usingSELECT ... WHERE <vertex primary key columns>
statement. The search predicate is applied in memory. (DSP-20230) -
Update TinkerPop version bump, which changes the following settings if SSL configuration options are used for Gremlin Console and TinkerPop drivers:
-
Added:
-
keyStore
-
keyStorePassword
-
trustStore
-
trustStorePassword
-
keyStoreType
-
sslEnabledProtocols
-
sslCipherSuites
-
sslSkipCertValidation
-
-
Deprecated:
-
trustCertChainFile
-
keyCertChainFile
-
keyFile
-
keyPassword (DSP-17552)
-
-
Known issues:
-
Server could get slow or unresponsive if lots of long-running traversals are canceled. (DSP-20425)
Workaround: Run with shorter traversal timeouts, if traversal allows.
6.8.0 DSE Search
Changes and enhancements:
-
Unbounded facet searches are no longer allowed. (DSP-18693)
-
facet.limit
< 0 is no longer supported. Override the defaultfacet.limit
of 20000 with the-Dsolr.max.facet.limit.size
system property. -
This change adds guardrails that can cause misconfigured faceting queries to fail. Before upgrading, set an explicit
facet.limit
.
-
-
The dsetool stop_core_reindex command now mentions the node in the output message. (DSP-17090)
-
Legacy Solr join queries are no longer valid. The
to
,from
, andforce
parameters are invalid. Joins can no longer be performed on non-partition key columns or on different keyspaces. (DSP-17431) -
The dsetool core_indexing_status command now mentions the indexing reason in the output message.
-
The recommendation to enable live indexing on only one search core per cluster was too conservative. See Tuning search for maximum indexing throughput and Capacity planning for DSE Search. Be sure to follow the DataStax recommendations for your environment. (DSP-17939)
-
DSE Management API is available for enhancing operation with Kubernetes. (DSP-18785)
-
Improved real-time search to fix a docValues bug. (DSP-20300)
-
Passing TextField Solr fields with docValues to facet.field, facet.pivot, group.field, and sort (including native CQL Solr queries that use a TextField with docValues with ORDER BY) is now illegal and will fail the query in question. (DSP-18238)
-
Improved guidance with warnings when index rebuild is required for ALTER SEARCH INDEX, RELOAD SEARCH INDEX, and dsetool reload_core commands. (DSP-19347)
-
Replicas with non-queryable indexes will be skipped by the coordinator node to improve availability for index read. During
nodetool rebuild_index
, Storage-Attached Indexing (SAI) will be marked as non-queryable until the index build finishes, while 2i will remain queryable. (DSP-19543) For related information, see What is SAI?. -
Error messages related to Solr errors contain better descriptions of the root cause. (DSP-13792)
Known issues:
-
Mixed workloads with very wide partitions could see diminished performance. (DSP-20386)
Workaround: Set system property in startup:
-Dnetty.eventloop.tasks_processing_time_limit_ms=100
Cassandra enhancements for DSE 6.8.0
DataStax Enterprise 6.8.0 is compatible with Apache Cassandra® 3.11 and adds these production-certified enhancements:
-
Add ability to encrypt sstables (CASSANDRA-9633)
-
Catch non-IOException in FileUtils.close to make sure that all resources are closed (CASSANDRA-15225)
-
Nodetool import row cache invalidation races with adding SSTables to tracker (CASSANDRA-14529)
-
Let nodetool import take a list of directories (CASSANDRA-14442)
-
Nodetool import cleanup and improvements (CASSANDRA-14417)
-
Add ability to load new SSTables from a separate directory (CASSANDRA-6719)
-
Add a few options to nodetool verify (CASSANDRA-14201)
-
Make all DDL statements idempotent and not dependent on global state (CASSANDRA-13426)
-
BloomFilter serialization format should not change byte ordering (CASSANDRA-9067)
-
Remove unused on-heap BloomFilter implementation (CASSANDRA-14152)
-
Add a virtual table to expose settings (CASSANDRA-14573)
-
Add a virtual table to expose caches (CASSANDRA-14538)
-
Expose buffer cache metrics in caches virtual table. (CASSANDRA-14626)
-
Fix up chunk cache handling of metrics (CASSANDRA-14628)
-
Add a virtual table to expose active client connections (CASSANDRA-14458)
-
Clean up and refactor client metrics (CASSANDRA-14524)
-
NodeTool clientstats should show SSL Cipher (CASSANDRA-14322)
-
Add ability to specify driver name and version (CASSANDRA-14275)
-
Add nodetool clientlist (CASSANDRA-13665)
-
Bind to correct local address in 4.0 streaming (CASSANDRA-14362)
-
Set broadcast address in internode messaging handshake (CASSANDRA-14579)
-
Internode messaging handshake sends wrong messaging version number (CASSANDRA-14540)
-
Use Netty for streaming (CASSANDRA-12229)
-
Use Netty for internode messaging (CASSANDRA-8457)
-
Correct and clarify SSLFactory.getSslContext method and call sites (CASSANDRA-14314)
-
Remove
read_repair_chance
/dc_local_read_repair_chance
(CASSANDRA-13910) -
Properly close StreamCompressionInputStream to release any ByteBuf (CASSANDRA-13906)
-
Correctly close Netty channels when a stream session ends (CASSANDRA-13905)
-
Fix buffer length comparison when decompressing in Netty-based streaming (CASSANDRA-13899)
-
Race condition when closing stream sessions (CASSANDRA-13852)
-
dtest failure: snapshot_test.py:TestSnapshot.test_basic_snapshot_and_restore (CASSANDRA-13836)
-
Make monotonic read / read repair configurable (CASSANDRA-14635)
-
Improve read repair blocking behavior (CASSANDRA-10726)
-
Add coordinator write metric per CF (CASSANDRA-14232)
-
Make PartitionUpdate and Mutation immutable (CASSANDRA-13867)
-
Disable old native protocol versions on demand (CASSANDRA-14659)
-
Refactor CompactionStrategyManager (CASSANDRA-14621)
-
Extend IAuthenticator to accept peer SSL certificates (CASSANDRA-14652)
-
For LCS, single SSTable up-level is handled inefficiently (CASSANDRA-12526)
-
Fix setting min/max compaction threshold with LCS (CASSANDRA-14388)
General upgrade advice for DSE 6.8.0
DataStax Enterprise 6.8.0 is compatible with Apache Cassandra® 3.11. All upgrade advice from previous versions applies. Carefully reviewing the DataStax Enterprise upgrade planning and upgrade instructions can ensure a smooth upgrade and avoid pitfalls and frustrations.
DataStax Enterprise 6.8.0 is compatible with Apache Cassandra 3.11 and adds Cassandra enhancements for DSE 6.8.0.
Additional advice for upgrading between versions of Apache Cassandra includes:
Cassandra 4.0 changes
-
Catch non-IOException in FileUtils.close to make sure that all resources are closed (CASSANDRA-15225)
-
Nodetool import row cache invalidation races with adding SSTables to tracker (CASSANDRA-14529)
-
Let nodetool import take a list of directories (CASSANDRA-14442)
-
nodetool import cleanup and improvements (CASSANDRA-14417)
-
Add ability to load new SSTables from a separate directory (CASSANDRA-6719)
-
Add a few options to nodetool verify (CASSANDRA-14201)
-
Make all DDL statements idempotent and not dependent on global state (CASSANDRA-13426)
-
Always close RT markers returned by ReadCommand#executeLocally() (CASSANDRA-14515)
-
BloomFilter serialization format should not change byte ordering (CASSANDRA-9067)
-
Remove unused on-heap BloomFilter implementation (CASSANDRA-14152)
-
Add a virtual table to expose settings (CASSANDRA-14573)
-
Add a virtual table to expose caches (CASSANDRA-14538)
-
Fix up chunk cache handling of metrics (CASSANDRA-14628)
-
Add a virtual table to expose active client connections (CASSANDRA-14458)
-
Clean up and refactor client metrics (CASSANDRA-14524)
-
NodeTool clientstats should show SSL Cipher (CASSANDRA-14322)
-
Add ability to specify driver name and version (CASSANDRA-14275)
-
Add nodetool clientlist (CASSANDRA-13665)
-
Pad uncompressed chunks when they would be interpreted as compressed (CASSANDRA-14892)
-
Bind to correct local address in 4.0 streaming (CASSANDRA-14362)
-
Set broadcast address in internode messaging handshake (CASSANDRA-14579)
-
Internode messaging handshake sends wrong messaging version number (CASSANDRA-14540)
-
Use Netty for streaming (CASSANDRA-12229)
-
Use Netty for internode messaging (CASSANDRA-8457)
-
Correct and clarify SSLFactory.getSslContext method and call sites (CASSANDRA-14314)
-
Properly close StreamCompressionInputStream to release any ByteBuf (CASSANDRA-13906)
-
Correctly close Netty channels when a stream session ends (CASSANDRA-13905)
-
Fix buffer length comparison when decompressing in Netty-based streaming (CASSANDRA-13899)
-
Race condition when closing stream sessions (CASSANDRA-13852)
-
Make monotonic read / read repair configurable (CASSANDRA-14635)
-
Improve read repair blocking behavior (CASSANDRA-10726)
-
Add coordinator write metric per CF (CASSANDRA-14232)
-
Make PartitionUpdate and Mutation immutable (CASSANDRA-13867)
-
Disable old native protocol versions on demand (CASSANDRA-14659)
-
Refactor CompactionStrategyManager (CASSANDRA-14621)
-
Extend IAuthenticator to accept peer SSL certificates (CASSANDRA-14652)
-
For LCS, single SSTable up-level is handled inefficiently (CASSANDRA-12526)
-
Fix setting min/max compaction threshold with LCS (CASSANDRA-14388)
-
Support light-weight transactions in cassandra-stress (CASSANDRA-13529)
-
Add a virtual table to expose all running sstable tasks (CASSANDRA-14457)
-
Implement virtual keyspace interface (CASSANDRA-7622)
-
cassandra-stress throws NPE if insert section isn’t specified in user profile (CASSSANDRA-14426)
-
nodetool listsnapshots is missing local system keyspace snapshots (CASSANDRA-14381)
-
CVE-2017-5929 Security vulnerability and redefine default log rotation policy (CASSANDRA-14183)
-
Fix sstablemetadata date string for minLocalDeletionTime (CASSANDRA-14132)
-
Make sub-range selection for non-frozen collections return null instead of empty (CASSANDRA-14182)
-
Fix cassandra-stress startup failure (CASSANDRA-14106)
-
Fix trivial log format error (CASSANDRA-14015)
-
Allow sstabledump to do a json object per partition (CASSANDRA-13848)
-
Remove unused and deprecated methods from AbstractCompactionStrategy (CASSANDRA-14081)
-
Fix Distribution.average in cassandra-stress (CASSANDRA-14090)
-
Presize collections (CASSANDRA-13760)
-
Add GroupCommitLogService (CASSANDRA-13530)
-
Parallelize initial materialized view build (CASSANDRA-12245)
-
Fix flaky SecondaryIndexManagerTest.assert[Not]MarkedAsBuilt (CASSANDRA-13965)
-
Make LWTs send resultset metadata on every request (CASSANDRA-13992)
-
Fix flaky indexWithFailedInitializationIsNotQueryableAfterPartialRebuild (CASSANDRA-13963)
-
Introduce leaf-only iterator (CASSANDRA-9988)
-
Allow only one concurrent call to StatusLogger (CASSANDRA-12182)
-
Refactoring to specialised functional interfaces (CASSANDRA-13982)
-
Speculative retry should allow more friendly params (CASSANDRA-13876)
-
Throw exception if we send/receive repair messages to incompatible nodes (CASSANDRA-13944)
-
Replace usages of MessageDigest with Guava’s Hasher (CASSANDRA-13291)
-
Add nodetool cmd to print hinted handoff window (CASSANDRA-13728)
-
Fix some alerts raised by static analysis (CASSANDRA-13799)
-
Checksum sstable metadata (CASSANDRA-13321, CASSANDRA-13593)
-
Add result set metadata to prepared statement MD5 hash calculation (CASSANDRA-10786)
-
Add incremental repair support for --hosts, --force, and subrange repair (CASSANDRA-13818)
-
Refactor GcCompactionTest to avoid boxing (CASSANDRA-13941)
-
Expose recent histograms in JmxHistograms (CASSANDRA-13642)
-
Add SERIAL and LOCAL_SERIAL support for cassandra-stress (CASSANDRA-13925)
-
LCS needlessly checks for L0 STCS candidates multiple times (CASSANDRA-12961)
-
Update lz4 to 1.4.0 (CASSANDRA-13741)
-
Throttle base partitions during MV repair streaming to prevent OOM (CASSANDRA-13299)
-
Improve short read protection performance (CASSANDRA-13794)
-
Fix AssertionError in short read protection (CASSANDRA-13747)
-
Use compaction threshold for STCS in L0 (CASSANDRA-13861)
-
Fix problem with min_compress_ratio: 1 and disallow ratio < 1 (CASSANDRA-13703)
-
Add extra information to SASI timeout exception (CASSANDRA-13677)
-
Rework CompactionStrategyManager.getScanners synchronization (CASSANDRA-13786)
-
Add additional unit tests for batch behavior, TTLs, Timestamps (CASSANDRA-13846)
-
Add keyspace and table name in schema validation exception (CASSANDRA-13845)
-
Emit metrics whenever we hit tombstone failures and warn thresholds (CASSANDRA-13771)
-
Allow changing log levels via nodetool for related classes (CASSANDRA-12696)
-
Add stress profile yaml with LWT (CASSANDRA-7960)
-
Reduce memory copies and object creations when acting on ByteBufs (CASSANDRA-13789)
-
simplify mx4j configuration (Cassandra-13578)
-
Fix trigger example on 4.0 (CASSANDRA-13796)
-
force minimum timeout value (CASSANDRA-9375)
-
Add bytes repaired/unrepaired to nodetool tablestats (CASSANDRA-13774)
-
Don’t delete incremental repair sessions if they still have sstables (CASSANDRA-13758)
-
Fix pending repair manager index out of bounds check (CASSANDRA-13769)
-
Don’t use RangeFetchMapCalculator when RF=1 (CASSANDRA-13576)
-
Don’t optimise trivial ranges in RangeFetchMapCalculator (CASSANDRA-13664)
-
Use an ExecutorService for repair commands instead of new Thread(..).start() (CASSANDRA-13594)
-
Fix race / ref leak in anticompaction (CASSANDRA-13688)
-
Fix race / ref leak in PendingRepairManager (CASSANDRA-13751)
-
Enable ppc64le runtime as unsupported architecture (CASSANDRA-13615)
-
Improve sstablemetadata output (CASSANDRA-11483)
-
Support for migrating legacy users to roles has been dropped (CASSANDRA-13371)
-
Introduce error metrics for repair (CASSANDRA-13387)
-
Refactoring to primitive functional interfaces in AuthCache (CASSANDRA-13732)
-
Update metrics to 3.1.5 (CASSANDRA-13648)
-
batch_size_warn_threshold_in_kb can now be set at runtime (CASSANDRA-13699)
-
Avoid always rebuilding secondary indexes at startup (CASSANDRA-13725)
-
Upgrade JMH from 1.13 to 1.19 (CASSANDRA-13727)
-
Upgrade SLF4J from 1.7.7 to 1.7.25 (CASSANDRA-12996)
-
Default for start_native_transport now true if not set in config (CASSANDRA-13656)
-
Don’t add localhost to the graph when calculating where to stream from (CASSANDRA-13583)
-
Allow skipping equality-restricted clustering columns in ORDER BY clause (CASSANDRA-10271)
-
Use common nowInSec for validation compactions (CASSANDRA-13671)
-
Improve handling of IR prepare failures (CASSANDRA-13672)
-
Send IR coordinator messages synchronously (CASSANDRA-13673)
-
Flush system.repair table before IR finalize promise (CASSANDRA-13660)
-
Fix column filter creation for wildcard queries (CASSANDRA-13650)
-
Add 'nodetool getbatchlogreplaythrottle' and 'nodetool setbatchlogreplaythrottle' (CASSANDRA-13614)
-
fix race condition in PendingRepairManager (CASSANDRA-13659)
-
Allow noop incremental repair state transitions (CASSANDRA-13658)
-
Run repair with down replicas (CASSANDRA-10446)
-
Added started & completed repair metrics (CASSANDRA-13598)
-
Added started & completed repair metrics (CASSANDRA-13598)
-
Improve secondary index (re)build failure and concurrency handling (CASSANDRA-10130)
-
Improve calculation of available disk space for compaction (CASSANDRA-13068)
-
Change the accessibility of RowCacheSerializer for third party row cache plugins (CASSANDRA-13579)
-
Allow sub-range repairs for a preview of repaired data (CASSANDRA-13570)
-
NPE in IR cleanup when columnfamily has no sstables (CASSANDRA-13585)
-
Fix Randomness of stress values (CASSANDRA-12744)
-
Allow selecting Map values and Set elements (CASSANDRA-7396)
-
Fast and garbage-free Streaming Histogram (CASSANDRA-13444)
-
Update repairTime for keyspaces on completion (CASSANDRA-13539)
-
Add configurable upper bound for validation executor threads (CASSANDRA-13521)
-
Bring back maxHintTTL propery (CASSANDRA-12982)
-
Add testing guidelines (CASSANDRA-13497)
-
Add more repair metrics (CASSANDRA-13531)
-
RangeStreamer should be smarter when picking endpoints for streaming (CASSANDRA-4650)
-
Avoid rewrapping an exception thrown for cache load functions (CASSANDRA-13367)
-
Log time elapsed for each incremental repair phase (CASSANDRA-13498)
-
Add multiple table operation support to cassandra-stress (CASSANDRA-8780)
Cassandra 3.11.2 changes
-
Cassandra is now relying on the JVM options to properly shutdown on OutOfMemoryError. By default it will rely on the OnOutOfMemoryError option as the ExitOnOutOfMemoryError and CrashOnOutOfMemoryError options are not supported by the older 1.7 and 1.8 JVMs. A warning will be logged at startup if none of those JVM options are used. See CASSANDRA-13006 for more details.
Cassandra 3.11.2 upgrade considerations
-
Creating Materialized View with filtering on non-primary-key base column (added in CASSANDRA-10368) is disabled, because the liveness of view row is depending on multiple filtered base non-key columns and base non-key column used in view primary-key. This semantic cannot be supported without storage format change, see CASSANDRA-13826. For append-only use case, you may still use this feature with a startup flag: "-Dcassandra.mv.allow_filtering_nonkey_columns_unsafe=true"
-
The NativeAccessMBean isAvailable method will only return true if the native library has been successfully linked. Previously it was returning true if JNA could be found but was not taking into account link failures.
-
Primary ranges in the system.size_estimates table are now based on the keyspace replication settings and adjacent ranges are no longer merged (CASSANDRA-9639).
-
In 2.1, the default for otc_coalescing_strategy was 'DISABLED'. In 2.2 and 3.0, it was changed to 'TIMEHORIZON', but that value was shown to be a performance regression. The default for 3.11.0 and newer has been reverted to 'DISABLED'. Users upgrading from Cassandra 2.2 or 3.0 should be aware that the default has changed.
-
The StorageHook interface has been modified to allow to retrieve read information from SSTableReader (CASSANDRA-13120).
-
Materialized Views for upgrades from DSE 5.1.1 or 5.1.2 or any version DSE 5.0.10 or later:
-
Cassandra will no longer allow dropping columns on tables with Materialized Views.
-
A change was made in the way the Materialized View timestamp is computed, which may cause an old deletion to a base column which is view primary key (PK) column to not be reflected in the view when repairing the base table post-upgrade. This condition is only possible when a column deletion to an MV primary key (PK) column not present in the base table PK (via UPDATE base SET view_pk_col = null or DELETE view_pk_col FROM base) is missed before the upgrade and received by repair after the upgrade. If such column deletions are done on a view PK column which is not a base PK, it’s advisable to run repair on the base table of all nodes prior to the upgrade. Alternatively it’s possible to fix potential inconsistencies by running repair on the views after upgrade or drop and re-create the views. See CASSANDRA-11500 for more details.
-
Removal of columns not selected in the Materialized View (via UPDATE base SET unselected_column = null or DELETE unselected_column FROM base) may not be properly reflected in the view in some situations so we advise against doing deletions on base columns not selected in views until this is fixed on CASSANDRA-13826.
-
Cassandra 3.10 changes
-
Runtime modification of concurrent_compactors is now available via nodetool concurrent_compactors.
-
Support for the assignment operators +=/-= has been added for update queries.
-
An Index implementation may now provide a task which runs prior to joining the ring. See CASSANDRA-12039
-
Filtering on partition key columns is now also supported for queries without secondary indexes.
-
A slow query log has been added: slow queries will be logged at DEBUG level. For more details refer to CASSANDRA-12403 and slow_query_log_timeout_in_ms in cassandra.yaml.
-
Support for GROUP BY queries has been added.
-
A new compaction-stress tool has been added to test the throughput of compaction for any cassandra-stress user schema. see compaction-stress help for how to use.
-
Prepared statements are now persisted in the table prepared_statements in the system keyspace. Upon startup, this table is used to preload all previously prepared statements - i.e. in many cases clients do not need to re-prepare statements against restarted nodes.
-
cqlsh can now connect to older Cassandra versions by downgrading the native protocol version. Please note that this is currently not part of our release testing and, as a consequence, it is not guaranteed to work in all cases. See CASSANDRA-12150 for more details.
-
Snapshots that are automatically taken before a table is dropped or truncated will have a "dropped" or "truncated" prefix on their snapshot tag name.
-
Metrics are exposed for successful and failed authentication attempts. These can be located using the object names org.apache.cassandra.metrics:type=Client,name=AuthSuccess and org.apache.cassandra.metrics:type=Client,name=AuthFailure respectively.
-
Add support to "unset" JSON fields in prepared statements by specifying DEFAULT UNSET. See CASSANDRA-11424 for details
-
Allow TTL with null value on insert and update. It will be treated as equivalent to inserting a 0.
-
Removed outboundBindAny configuration property. See CASSANDRA-12673 for details.
Cassandra 3.10 upgrade considerations
-
Support for alter types of already defined tables and of UDTs fields has been disabled. If it is necessary to return a different type, please use casting instead. See CASSANDRA-12443 for more details.
-
Specifying the default_time_to_live option when creating or altering a materialized view was erroneously accepted (and ignored). It is now properly rejected.
-
Only Java and JavaScript are now supported UDF languages. The sandbox in 3.0 already prevented the use of script languages except Java and JavaScript.
-
Compaction now correctly drops sstables out of CompactionTask when there isn’t enough disk space to perform the full compaction. This should reduce pending compaction tasks on systems with little remaining disk space.
-
Request timeouts in cassandra.yaml (read_request_timeout_in_ms, etc) now apply to the "full" request time on the coordinator. Previously, they only covered the time from when the coordinator sent a message to a replica until the time that the replica responded. Additionally, the previous behavior was to reset the timeout when performing a read repair, making a second read to fix a short read, and when subranges were read as part of a range scan or secondary index query. In 3.10 and higher, the timeout is no longer reset for these "subqueries". The entire request must complete within the specified timeout. As a consequence, your timeouts may need to be adjusted to account for this. See CASSANDRA-12256 for more details.
-
Logs written to stdout are now consistent with logs written to files. Time is now local (it was UTC on the console and local in files). Date, thread, file and line info where added to stdout. (see CASSANDRA-12004)
-
The 'clientutil' jar, which has been somewhat broken on the 3.x branch, is not longer provided. The features provided by that jar are provided by any good java driver and we advise relying on drivers rather on that jar, but if you need that jar for backward compatiblity until you do so, you should use the version provided on previous Cassandra branch, like the 3.0 branch (by design, the functionality provided by that jar are stable accross versions so using the 3.0 jar for a client connecting to 3.x should work without issues).
-
(Tools development) DatabaseDescriptor no longer implicitly startups components/services like commit log replay. This may break existing 3rd party tools and clients. In order to startup a standalone tool or client application, use the DatabaseDescriptor.toolInitialization() or DatabaseDescriptor.clientInitialization() methods. Tool initialization sets up partitioner, snitch, encryption context. Client initialization just applies the configuration but does not setup anything. Instead of using Config.setClientMode() or Config.isClientMode(), which are deprecated now, use one of the appropiate new methods in DatabaseDescriptor.
-
Application layer keep-alives were added to the streaming protocol to prevent idle incoming connections from timing out and failing the stream session (CASSANDRA-11839). This effectively deprecates the streaming_socket_timeout_in_ms property in favor of streaming_keep_alive_period_in_secs. See cassandra.yaml for more details about this property.
-
Duration literals support the ISO 8601 format. By consequence, identifiers matching that format (e.g P2Y or P1MT6H) will not be supported anymore (CASSANDRA-11873).
Cassandra 3.8 changes
-
Shared pool threads are now named according to the stage they are executing tasks for. Thread names mentioned in traced queries change accordingly.
-
A new option has been added to cassandra-stress "-rate fixed={number}/s" that forces a scheduled rate of operations/sec over time. Using this, stress can accurately account for coordinated ommission from the stress process.
-
The cassandra-stress "-rate limit=" option has been renamed to "-rate throttle="
-
hdr histograms have been added to stress runs, it’s output can be saved to disk using: "-log hdrfile=" option. This histogram includes response/service/wait times when used with the fixed or throttle rate options. The histogram file can be plotted on http://hdrhistogram.github.io/HdrHistogram/plotFiles.html
-
TimeWindowCompactionStrategy has been added. This has proven to be a better approach to time series compaction and new tables should use this instead of DTCS. See CASSANDRA-9666 for details.
-
DateTieredCompactionStrategy has been deprecated - new tables should use TimeWindowCompactionStrategy. Note that migrating an existing DTCS-table to TWCS might cause increased compaction load for a while after the migration so make sure you run tests before migrating. Read CASSANDRA-9666 for background on this.
-
Change-Data-Capture is now available. See cassandra.yaml and for cdc-specific flags and a brief explanation of on-disk locations for archived data in CommitLog form. This can be enabled via ALTER TABLE … WITH cdc=true. Upon flush, CommitLogSegments containing data for CDC-enabled tables are moved to the data/cdc_raw directory until removed by the user and writes to CDC-enabled tables will be rejected with a WriteTimeoutException once cdc_total_space_in_mb is reached between unflushed CommitLogSegments and cdc_raw.
CDC is disabled by default in the .yaml file. Do not enable CDC on a mixed-version cluster as it will lead to exceptions which can interrupt traffic. Once all nodes have been upgraded to 3.8 it is safe to enable this feature and restart the cluster.
Cassandra 3.10 upgrade considerations
-
The ReversedType behaviour has been corrected for clustering columns of BYTES type containing empty value. Scrub should be run on the existing SSTables containing a descending clustering column of BYTES type to correct their ordering. See CASSANDRA-12127 for more details.
-
Ec2MultiRegionSnitch will no longer automatically set broadcast_rpc_address to the public instance IP if this property is defined on cassandra.yaml.
-
The name "json" and "distinct" are not valid anymore a user-defined function names (they are still valid as column name however). In the unlikely case where you had defined functions with such names, you will need to recreate those under a different name, change your code to use the new names and drop the old versions, and this before upgrade (see CASSANDRA-10783 for more details).
Cassandra 3.7 upgrade considerations
-
A maximum size for SSTables values has been introduced, to prevent out of memory exceptions when reading corrupt SSTables. This maximum size can be set via max_value_size_in_mb in cassandra.yaml. The default is 256MB, which matches the default value of native_transport_max_frame_size_in_mb. SSTables will be considered corrupt if they contain values whose size exceeds this limit. See CASSANDRA-9530 for more details.
Cassandra 3.6 changes
-
JMX connections can now use the same auth mechanisms as CQL clients. New options in cassandra-env.(sh|ps1) enable JMX authentication and authorization to be delegated to the IAuthenticator and IAuthorizer configured in cassandra.yaml. The default settings still only expose JMX locally, and use the JVM’s own security mechanisms when remote connections are permitted. For more details on how to enable the new options, see the comments in
cassandra-env.sh
. A new class of IResource, JMXResource, is provided for the purposes of GRANT/REVOKE via CQL. See CASSANDRA-10091 for more details. Also, directly setting JMX remote port via the com.sun.management.jmxremote.port system property at startup is deprecated. See CASSANDRA-11725 for more details. -
JSON timestamps are now in UTC and contain the timezone information, see CASSANDRA-11137 for more details.
-
Collision checks are performed when joining the token ring, regardless of whether the node should bootstrap. Additionally, replace_address can legitimately be used without bootstrapping to help with recovery of nodes with partially failed disks. See CASSANDRA-10134 for more details.
-
Key cache will only hold indexed entries up to the size configured by column_index_cache_size_in_kb in cassandra.yaml in memory. Larger indexed entries will never go into memory. See CASSANDRA-11206 for more details.
-
For tables having a default_time_to_live specifying a TTL of 0 will remove the TTL from the inserted or updated values.
-
Startup is now aborted if corrupted transaction log files are found. The details of the affected log files are now logged, allowing the operator to decide how to resolve the situation.
-
Filtering expressions are made more pluggable and can be added programatically via a QueryHandler implementation. See CASSANDRA-11295 for more details.
Cassandra 3.4 changes
-
Internal authentication now supports caching of encrypted credentials. Reference cassandra.yaml:credentials_validity_in_ms
-
Remote configuration of auth caches via JMX can be disabled using the the system property cassandra.disable_auth_caches_remote_configuration
-
sstabledump tool is added to be 3.0 version of former sstable2json. The tool only supports v3.0+ SSTables. See tool’s help for more detail.
-
The mbean interfaces org.apache.cassandra.auth.PermissionsCacheMBean and org.apache.cassandra.auth.RolesCacheMBean are deprecated in favor of org.apache.cassandra.auth.AuthCacheMBean. This generalized interface is common across all caches in the auth subsystem. The specific mbean interfaces for each individual cache will be removed in a subsequent major version.
Cassandra 3.2 changes
-
We now make sure that a token does not exist in several data directories. This means that we run one compaction strategy per data_file_directory and we use one thread per directory to flush. Use nodetool relocatesstables to make sure your tokens are in the correct place, or just wait and compaction will handle it. See CASSANDRA-6696 for more details.
-
bound maximum in-flight commit log replay mutation bytes to 64 megabytes tunable via cassandra.commitlog_max_outstanding_replay_bytes
-
Support for type casting has been added to the selection clause.
-
Hinted handoff now supports compression. Reference cassandra.yaml:hints_compression.
Hints compression is currently disabled by default.
-
The Thrift API is deprecated and will be removed in Cassandra 4.0.
Cassandra 3.2 upgrade considerations
-
The compression ratio metrics computation has been modified to be more accurate.
-
Running Cassandra as root is prevented by default.
-
JVM options are moved from cassandra-env.(sh|ps1) to jvm.options.
Cassandra 3.1 upgrade considerations
-
The return value of SelectStatement::getLimit as been changed from DataLimits to int.
-
Custom index implementation should be aware that the method Indexer::indexes() has been removed as its contract was misleading and all custom implementation should have almost surely returned true inconditionally for that method.
-
GC logging is now enabled by default (you can disable it in the jvm.options file if you prefer).
TinkerPop changes for DSE 6.8.0
DataStax Enterprise (DSE) 6.8.0 includes all changes from previous DSE releases plus these production-certified changes that are in addition to Apache TinkerPop™ 3.4.5:
-
Added a toString() serializer for GraphBinary.
-
Configured the Gremlin Console to use GraphBinary by default.
-
Fixed transaction management for empty iterators in Gremlin Server.
-
Deprecated MessageSerializer implementations for Gryo in Gremlin Server.
-
Deprecated Serializers enum values of GRYO_V1D0 and GRYO_V3D0.
-
Deprecated SerTokens values of MIME_GRYO_V1D0 and MIME_GRYO_V3D0.
-
Added a Docker command to start Gremlin Server with the standard GLV test configurations.
-
Added aggregate(Scope,String) and deprecated store() in favor of aggregate(local).
-
Modified NumberHelper to better ignore Double.NaN in min() and max() comparisons.
-
Bump to Netty 4.1.36.
-
Added userAgent to RequestOptions.
-
Gremlin Console sends Gremlin Console/version as the userAgent.
-
Fixed DriverRemoteConnection ignoring with Token options when multiple were set.
-
Added
:set warnings true|false
to Gremlin Console. -
Provided support for withComputer() in gremlin-javascript.
-
Deprecated remote traversal side-effect retrieval and related infrastructure.
-
Bump to Jackson Databind 2.9.9.1.
-
Fixed bug with Python in g:Date of GraphSON where local time zone was being used during serialization/deserialization.
-
Deprecated multi/meta-property support in Neo4jGraph.
-
Improved exception and messaging for
gt/gte/lt/lte
when one of the object isn’t a Comparable. -
Added test infrastructure to check for storage iterator leak.
-
Fixed multiple iterator leaks in query processor.
-
Fixed optional() so that the child traversal is treated as local.
-
Changed default keep-alive time for driver to 3 minutes.
-
Fixed bug where server-side keep-alive was not always disabled when its setting was zero.
-
Added support for hasNext() in Javascript and .NET.
-
Improved error messaging for invalid inputs to the TinkerGraph IdManager instances.
-
Forced replacement of connections in Java driver for certain exception types that seem to ultimately kill the connection.
-
Changed the reverse() of desc and asc on Order to not use the deprecated decr and incr.
-
Fixed bug in MatchStep where the correct was not properly determined.
-
Fixed bug where client/server exception mismatch when server throw StackOverflowError.
-
Added underscore suffixed steps and tokens in Gremlin-Python that conflict with global function names.
-
Prevent exception when closing a session that doesn’t exist.
-
Allow predicates and traversals to be used as options in BranchStep.
-
Ensure only a single final response is sent to the client with Gremlin Server.
-
Deprecated ResponseHandlerContext with related infrastructure and folded its functionality into Context in Gremlin Server.
-
Improved performance of aggregate() by avoiding excessive calls to hasNext() when the barrier is empty.