DataStax Enterprise 6.7 release notes

DataStax Enterprise release notes include cluster requirements, upgrade advice, components, changes and enhancements, issues, and resolved issues for DataStax Enterprise 6.7.x.

DataStax Enterprise release notes cover cluster requirements, upgrade guidance, components, changes and enhancements, issues, and resolved issues for DataStax Enterprise (DSE) 6.7.x.

Requirement for uniform clusters

All nodes in each cluster must be uniformly licensed to use the same subscription. For example, if a cluster contains 5 nodes, all 5 nodes within that cluster must be either DataStax Basic, or all 5 nodes must be DataStax Enterprise. Mixing different subscriptions within a cluster is not permitted. “Cluster” means a collection of nodes running the software which communicate with one another via Gossip, and “Gossip” means the mechanism within the software enabling related nodes to communicate with one another. For more information, see Enterprise Terms.

Before you upgrade

The latest version of DataStax Enterprise is 6.7.0.

Be sure to read and follow all of the relevant upgrade documentation, including Planning your DataStax Enterprise upgrade. Upgrades to DSE 6.7 are supported from DSE 6.0, DSE 5.1, and DSE 5.0. Also, see General upgrade advice for DSE 6.7.0.

Product compatibility

DSE 6.7 compatibility Drivers DataStax Bulk Loader

DSE OpsCenter 6.7

DSE OpsCenter 6.5

DataStax Studio 6.7

DataStax Drivers

Depending on the driver version, you might need to recompile your client application code. See Upgrading DataStax drivers.

Loads data into DSE 5.0 or later

Loads data from Apache Cassandra™ 2.1 or later

DSE 6.7.0 release notes

Components, changes and enhancements, resolved issues, and known issues for DSE 6.7.0.

cassandra.yaml

The location of the cassandra.yaml file depends on the type of installation:
Package installations /etc/dse/cassandra/cassandra.yaml
Tarball installations installation_location/resources/cassandra/conf/cassandra.yaml

dse.yaml

The location of the dse.yaml file depends on the type of installation:
Package installations /etc/dse/dse.yaml
Tarball installations installation_location/resources/dse/conf/dse.yaml

5 December 2018

6.7.0 Components

  • Apache Solr™ 6.0.1.1.2356
  • Apache Spark™ 2.2.2.5
  • Apache Tomcat® 8.0.53
  • DSE Java Driver 1.7.0
  • Netty 4.1.25.4.dse
  • Spark Jobserver 0.8.0.44 (DSE custom version)
  • TinkerPop 3.3.3 with additional production-certified changes

DSE 6.7.0 is compatible with Apache Cassandra™ 3.11 and adds additional production-certified changes.

6.7.0 New features

See DataStax Enterprise 6.7 new features.

6.7.0 DSE database

Experimental features. These features are experimental and are not supported for production:
Changes and enhancements:
  • Improved Java user-defined functions (UDF). (DB-1049)
  • Improvements with new engine for materialized views (MV). (DB-1060)
    • Supports multiple non-base primary key in view clustering key when partition key is the same as base table.
    • Supports multiple filter expressions on non-primary key columns.
    • Supports out-of-order modification on columns not selected in MV, see CASSANDRA-11500.
    • Allow dropping base columns that are not part of MV primary key and not filtered.
      Important: Base column data and corresponding MV column data will be dropped.
    • Only MVs created with DSE 6.7 or later use the new MV format. To upgrade legacy MVs, create and build a new MV with the same schema and then point applications to use the new MV. See Known limitations of materialized views.
  • Ability to read the TTL and WRITE TIME of an element in a collection. (DB-1289)
  • Centralized handling of system properties to allow for logging of final values. Print all configuration flags values in system log. (DB-1556)
  • Support is added for cryptographic token interface standard PKCS#11 keystores. New cassandra.yaml and dse.yaml options for server and client encryption. (DB-1629)
  • CQL CAST function supports INSERT INTO and UPDATE statements, and can be used in WHERE clause. (DB-1837)
  • Reduced allocations when using offheap objects. (DB-2095, DSP-17054)
  • Improved protocol version presentation and setting in cqlsh. (DB-2096)
  • JTS (Java Topology Suite) is distributed with DSE. Remove any previously installed JTS JAR files from DSE installation classpath. (DSP-16086)
  • Changes in cassandra.yaml and dse.yaml. (DB-2095, DSP-17054)

    Upgrade impact: Make changes to configuration files after the upgrade and before restarting with 6.7.0. As always, carefully review and follow the Upgrading DataStax Enterprise recommendations.

    After the upgrade and before restarting with 6.7.0, remove deprecated settings and use new settings.

  • cassandra.yaml changes
    New and changed cassandra.yaml settings Deprecated cassandra.yaml settings
    memtable_space_in_mb: 2048
    memtable_allocation_type: offheap_objects

    See Memtable settings.

    memtable_heap_space_in_mb 
    memtable_offheap_space_in_mb
    user_defined_function_warn_micros: 500
    user_defined_function_fail_micros: 10000
    user_defined_function_warn_heap_mb: 200
    user_defined_function_fail_heap_mb: 500
    user_function_timeout_policy: die

    Settings are in microseconds since Java UDFs run faster. The timeouts are not equivalent to the deprecated settings. See User-defined functions (UDF) properties.

    user_defined_function_warn_timeout
    user_defined_function_fail_timeout
    server_encryption_options:
        keystore_type: JKS
        truststore_type: JKS

    Valid type options are JKS, JCEKS, PKCS12, or PKCS11. See

    server_encryption_options:
        store_type: JKS
    client_encryption_options:
        keystore_type: JKS
        truststore_type: JKS

    Valid type options are JKS, JCEKS, PKCS12, or PKCS11. See  Configure SSL for client-to-node in production and development  environments.

    client_encryption_options:
        store_type: JKS

    dse.yaml changes

    New and changed dse.yaml settings Deprecated dse.yaml settings
    spark_ui_options:
        server_encryption_options:
        keystore_type: JKS
        truststore_type: JKS

    Valid options are JKS, JCEKS, PKCS12, or PKCS11.

    spark_ui_options:
        server_encryption_options:
        store_type: JKS

Known issues:

6.7.0 DSE Advanced Replication

No updates.

6.7.0 DSE Analytics

Experimental features. These features are experimental and are not supported for production:
Changes and enhancements:
  • The default logging behavior of the Spark-SQL shell does not log to STDOUT. All information is in the spark-shell log file. (DSP-16969)
  • DSEFS REST interface supports Kerberos authentication with SPNEGO and Kerberos delegation token authentication. (DSP-13102)
  • Spark Cassandra Connector: New parameter to set a read throttle per task to manage resources when multiple jobs are running in parallel. (DSP-14523)
  • Improved logging messages with recommended resolutions for AlwaysOn SQL (AOSS). (DSP-17326, DSP 17358, DSP-17533)
  • AlwaysOn SQL (AOSS): Set default for spark.sql.thriftServer.incrementalCollect to true. (DSP-17428)
  • Provide a way for clients to determine if AlwaysOn SQL (AOSS) is enabled in DSE. (DSP-17180)
Resolved issues:
  • Unresolved dependency with dse-core when running Spark Application tests with dse-connector. (DSP-17232)
  • AlwaysOn SQL (AOSS) should attempt to auto start again on datacenter restart, regardless of the previous status. (DSP-17359)

6.7.0 DSEFS

Changes and enhancements:
  • The dsefs cp -r shell command adds support for recursive copying. (DSP-10579)
  • The dse hadoop fs command is removed. Use the dsefs commands instead. (DSP-16063, DSP-16594)

6.7.0 DSE Graph

Changes and enhancements:
  • New DSE start-up parameter -Dcassandra.consistent_replace improves LOCAL_QUORUM and QUORUM consistency on new node after node replacement. (DB-1577)

6.7.0 DSE Search

Experimental features. These features are experimental and are not supported for production:
  • The dsetool index_checks use an Apache Lucene® experimental feature.
Changes and enhancements:
  • Search index schema auto generation supports PolygonType. Lenient mode is no longer required. (DSP-16480)
Resolved issues:
  • Search indexes automatically configure geospatial fields of Point or LineString types. (DSP-15811)

DataStax Studio

DataStax Bulk Loader

Cassandra enhancements for DSE 6.7.0

DataStax Enterprise 6.7.0 is compatible with Apache Cassandra™ 3.11 and adds production-certified enhancements.

DataStax Enterprise 6.7.0 is compatible with Apache Cassandra™ 3.11 and adds these production-certified enhancements:

  • Add DEFAULT, UNSET, MBEAN and MBEANS to `ReservedKeywords`. (CASSANDRA-14205)
  • Add Unittest for schema migration fix (CASSANDRA-14140)
  • Print correct snitch info from nodetool describecluster (CASSANDRA-13528)
  • Close socket on error during connect on OutboundTcpConnection (CASSANDRA-9630)
  • Enable CDC unittest (CASSANDRA-14141)
  • Split CommitLogStressTest to avoid timeout (CASSANDRA-14143)
  • Improve commit log chain marker updating (CASSANDRA-14108)
  • Fix updating base table rows with TTL not removing view entries (CASSANDRA-14071)
  • Reduce garbage created by DynamicSnitch (CASSANDRA-14091)
  • More frequent commitlog chained markers (CASSANDRA-13987)
  • RPM package spec: fix permissions for installed jars and config files (CASSANDRA-14181)
  • More PEP8 compiance for cqlsh (CASSANDRA-14021)
  • Fix support for SuperColumn tables (CASSANDRA-12373)
  • Fix missing original update in TriggerExecutor (CASSANDRA-13894)
  • Improve short read protection performance (CASSANDRA-13794)
  • Fix counter application order in short read protection (CASSANDRA-12872)
  • Fix MV timestamp issues (CASSANDRA-11500)
  • Fix AssertionError in short read protection (CASSANDRA-13747)
  • Gossip thread slows down when using batch commit log (CASSANDRA-12966)
  • Allow native function calls in CQLSSTableWriter (CASSANDRA-12606)
  • Copy session properties on cqlsh.py do_login (CASSANDRA-13847)
  • Fix load over calculated issue in IndexSummaryRedistribution (CASSANDRA-13738)
  • Obfuscate password in stress-graphs (CASSANDRA-12233)
  • ReverseIndexedReader may drop rows during 2.1 to 3.0 upgrade (CASSANDRA-13525)
  • Avoid reading static row twice from old format sstables (CASSANDRA-13236)
  • Fix possible NPE on upgrade to 3.0/3.X in case of IO errors (CASSANDRA-13389)
  • Add duration data type (CASSANDRA-11873)
  • Properly report LWT contention (CASSANDRA-12626)
  • Stress daemon help is incorrect(CASSANDRA-12563)
  • Remove ALTER TYPE support (CASSANDRA-12443)
  • Fix assertion for certain legacy range tombstone pattern (CASSANDRA-12203)
  • Remove support for non-JavaScript UDFs (CASSANDRA-12883)
  • Better handle invalid system roles table (CASSANDRA-12700)
  • Upgrade netty version to fix memory leak with client encryption (CASSANDRA-13114)
  • 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 parameters (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 command 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)
  • Correctly close netty channels when a stream session ends (CASSANDRA-13905)
  • 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 minumum 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)
  • Fix incorrect cqlsh results when selecting same columns multiple times (CASSANDRA-13262)
  • Fix WriteResponseHandlerTest is sensitive to test execution order (CASSANDRA-13421)
  • Improve incremental repair logging (CASSANDRA-13468)
  • Start compaction when incremental repair finishes (CASSANDRA-13454)
  • Add repair streaming preview (CASSANDRA-13257)
  • Cleanup isIncremental/repairedAt usage (CASSANDRA-13430)
  • Change protocol to allow sending key space independent of query string (CASSANDRA-10145)
  • Make gc_log and gc_warn settable at runtime (CASSANDRA-12661)
  • Take number of files in L0 in account when estimating remaining compaction tasks (CASSANDRA-13354)
  • Skip building views during base table streams on range movements (CASSANDRA-13065)
  • Improve error messages for +/- operations on maps and tuples (CASSANDRA-13197)
  • Remove deprecated repair JMX APIs (CASSANDRA-11530)
  • Fix version check to enable streaming keep-alive (CASSANDRA-12929)
  • Make it possible to monitor an ideal consistency level separate from actual consistency level (CASSANDRA-13289)
  • Outbound TCP connections ignore internode authenticator (CASSANDRA-13324)
  • Upgrade junit from 4.6 to 4.12 (CASSANDRA-13360)
  • Cleanup ParentRepairSession after repairs (CASSANDRA-13359)
  • Upgrade snappy-java to 1.1.2.6 (CASSANDRA-13336)
  • Incremental repair not streaming correct sstables (CASSANDRA-13328)
  • Upgrade the JNA version to 4.3.0 (CASSANDRA-13300)
  • Add the currentTimestamp, currentDate, currentTime and currentTimeUUID functions (CASSANDRA-13132)
  • Remove config option index_interval (CASSANDRA-10671)
  • Reduce lock contention for collection types and serializers (CASSANDRA-13271)
  • Make it possible to override MessagingService.Verb ids (CASSANDRA-13283)
  • Avoid synchronized on prepareForRepair in ActiveRepairService (CASSANDRA-9292)
  • Adds the ability to use uncompressed chunks in compressed files (CASSANDRA-10520)
  • Don't flush sstables when streaming for incremental repair (CASSANDRA-13226)
  • Remove unused method (CASSANDRA-13227)
  • Fix minor bugs related to #9143 (CASSANDRA-13217)
  • Output warning if user increases RF (CASSANDRA-13079)
  • Remove pre-3.0 streaming compatibility code for 4.0 (CASSANDRA-13081)
  • Add support for + and - operations on dates (CASSANDRA-11936)
  • Fix consistency of incrementally repaired data (CASSANDRA-9143)
  • Increase commitlog version (CASSANDRA-13161)
  • Make TableMetadata immutable, optimize Schema (CASSANDRA-9425)
  • Refactor ColumnCondition (CASSANDRA-12981)
  • Parallelize streaming of different keyspaces (CASSANDRA-4663)
  • Improved compactions metrics (CASSANDRA-13015)
  • Speed-up start-up sequence by avoiding un-needed flushes (CASSANDRA-13031)
  • Use Caffeine (W-TinyLFU) for on-heap caches (CASSANDRA-10855)
  • Thrift removal (CASSANDRA-11115)
  • Remove pre-3.0 compatibility code for 4.0 (CASSANDRA-12716)
  • Add column definition kind to dropped columns in schema (CASSANDRA-12705)
  • Add (automate) Nodetool Documentation (CASSANDRA-12672)
  • Update bundled cqlsh python driver to 3.7.0 (CASSANDRA-12736)
  • Reject invalid replication settings when creating or altering a keyspace (CASSANDRA-12681)
  • Clean up the SSTableReader#getScanner API wrt removal of RateLimiter (CASSANDRA-12422)
  • Use new token allocation for non bootstrap case as well (CASSANDRA-13080)
  • Avoid byte-array copy when key cache is disabled (CASSANDRA-13084)
  • Require forceful decommission if number of nodes is less than replication factor (CASSANDRA-12510)
  • Allow IN restrictions on column families with collections (CASSANDRA-12654)
  • Log message size in trace message in OutboundTcpConnection (CASSANDRA-13028)
  • Add timeUnit Days for cassandra-stress (CASSANDRA-13029)
  • Add mutation size and batch metrics (CASSANDRA-12649)
  • Add method to get size of endpoints to TokenMetadata (CASSANDRA-12999)
  • Expose time spent waiting in thread pool queue (CASSANDRA-8398)
  • Conditionally update index built status to avoid unnecessary flushes (CASSANDRA-12969)
  • cqlsh auto completion: refactor definition of compaction strategy options (CASSANDRA-12946)
  • Add support for arithmetic operators (CASSANDRA-11935)
  • Add histogram for delay to deliver hints (CASSANDRA-13234)
  • Fix cqlsh automatic protocol downgrade regression (CASSANDRA-13307)
  • Changing `max_hint_window_in_ms` at runtime (CASSANDRA-11720)
  • Nodetool repair can hang forever if we lose the notification for the repair completing/failing (CASSANDRA-13480)
  • Anticompaction can cause noisy log messages (CASSANDRA-13684)
  • Switch to client init for sstabledump (CASSANDRA-13683)
  • CQLSH: Don't pause when capturing data (CASSANDRA-13743)

General upgrade advice for DSE 6.7.0

General upgrade advice for DataStax Enterprise 6.7.0

General upgrade advice for DataStax Enterprise (DSE) 6.7.0:
PLEASE READ: MAXIMUM TTL EXPIRATION DATE NOTICE (CASSANDRA-14092)
------------------------------------------------------------------
(General upgrading instructions are available in the next section)

The maximum expiration timestamp that can be represented by the storage engine is
2038-01-19T03:14:06+00:00, which means that inserts with TTL thatl expire after
this date are not currently supported. By default, INSERTS with TTL exceeding the
maximum supported date are rejected, but it's possible to choose a different
 expiration overflow policy. See CASSANDRA-14092.txt for more details.

Prior to 5.0.12 (5.0.X) and 5.1.7 (5.1.x) there was no protection against INSERTS
with TTL expiring after the maximum supported date, causing the expiration time
field to overflow and the records to expire immediately. Clusters in the 4.X and
lower series are not subject to this when assertions are enabled. Backed up SSTables
can be potentially recovered and recovery instructions can be found on the
CASSANDRA-14092.txt file.

If you use or plan to use very large TTLS (10 to 20 years), read CASSANDRA-14092.txt
for more information.

GENERAL UPGRADING ADVICE FOR ANY VERSION
========================================

Snapshotting is fast (especially if you have JNA installed) and takes
effectively zero disk space until you start compacting the live data
files again.  Thus, best practice is to ALWAYS snapshot before any
upgrade, just in case you need to roll back to the previous version.
(Cassandra version X + 1 will always be able to read data files created
by version X, but the inverse is not necessarily the case.)

When upgrading major versions of Cassandra, you will be unable to
restore snapshots created with the previous major version using the
'sstableloader' tool. You can upgrade the file format of your snapshots
using the provided 'sstableupgrade' tool.

4.0
===

New features
------------
   - SSTableDump now supports the -l option to output each partition as it's own json object
     See CASSANDRA-13848 for more detail
   - The currentTimestamp, currentDate, currentTime and currentTimeUUID functions have been added.
     See CASSANDRA-13132
   - Support for arithmetic operations between `timestamp`/`date` and `duration` has been added.
     See CASSANDRA-11936
   - Support for arithmetic operations on number has been added. See CASSANDRA-11935
   - Preview expected streaming required for a repair (nodetool repair --preview), and validate the
     consistency of repaired data between nodes (nodetool repair --validate). See CASSANDRA-13257
   - Support for selecting Map values and Set elements has been added for SELECT queries. See CASSANDRA-7396
   - The initial build of materialized views can be parallelized. The number of concurrent builder
     threads is specified by the property `cassandra.yaml:concurrent_materialized_view_builders`.
     This property can be modified at runtime through both JMX and the new `setconcurrentviewbuilders`
     and `getconcurrentviewbuilders` nodetool commands. See CASSANDRA-12245 for more details.

Upgrading
---------
    - Cassandra 4.0 removed support for COMPACT STORAGE tables. All Compact Tables
      have to be migrated using `ALTER ... DROP COMPACT STORAGE` statement in 3.0/3.11.
      Cassandra starting 4.0 will not start if flags indicate that the table is non-CQL.
      Syntax for creating compact tables is also deprecated.
    - Support for legacy auth tables in the system_auth keyspace (users,
      permissions, credentials) and the migration code has been removed. Migration
      of these legacy auth tables must have been completed before the upgrade to
      4.0 and the legacy tables must have been removed. See the 'Upgrading' section
      for version 2.2 for migration instructions.
    - Cassandra 4.0 removed support for the deprecated Thrift interface. Amongst
      Tother things, this imply the removal of all yaml option related to thrift
      ('start_rpc', rpc_port, ...).
    - Cassandra 4.0 removed support for any pre-3.0 format. This means you
      cannot upgrade from a 2.x version to 4.0 directly, you have to upgrade to
      a 3.0.x/3.x version first (and run upgradesstable). In particular, this
      mean Cassandra 4.0 cannot load or read pre-3.0 sstables in any way: you
      will need to upgrade those sstable in 3.0.x/3.x first.
    - Upgrades from 3.0.x or 3.x are supported since 3.0.13 or 3.11.0, previous
      versions will causes issues during rolling upgrades (CASSANDRA-13274).
    - Cassandra will no longer allow invalid keyspace replication options, such
      as invalid datacenter names for NetworkTopologyStrategy. Operators MUST
      add new nodes to a datacenter before they can set set ALTER or CREATE
      keyspace replication policies using that datacenter. Existing keyspaces
      will continue to operate, but CREATE and ALTER will validate that all
      datacenters specified exist in the cluster.
    - Cassandra 4.0 fixes a problem with incremental repair which caused repaired
      data to be inconsistent between nodes. The fix changes the behavior of both
      full and incremental repairs. For full repairs, data is no longer marked
      repaired. For incremental repairs, anticompaction is run at the beginning
      of the repair, instead of at the end. If incremental repair was being used
      prior to upgrading, a full repair should be run after upgrading to resolve
      any inconsistencies.
    - Config option index_interval has been removed (it was deprecated since 2.0)
    - Deprecated repair JMX APIs are removed.
    - The version of snappy-java has been upgraded to 1.1.2.6
    - the miniumum value for internode message timeouts is 10ms. Previously, any
      positive value was allowed. See cassandra.yaml entries like
      read_request_timeout_in_ms for more details.
    - Config option commitlog_sync_batch_window_in_ms has been deprecated as it's
      documentation has been incorrect and the setting itself near useless.
      Batch mode remains a valid commit log mode, however.
    - There is a new commit log mode, group, which is similar to batch mode
      but blocks for up to a configurable number of milliseconds between disk flushes.
    - Due to the parallelization of the initial build of materialized views,
      the per token range view building status is stored in the new table
      `system.view_builds_in_progress`. The old table `system.views_builds_in_progress`
      is no longer used and can be removed. See CASSANDRA-12245 for more details.
    - nodetool clearsnapshot now required the --all flag to remove all snapshots.
      Previous behavior would delete all snapshots by default.

Operations
---------

   - Added "-Ddse.consistent_replace" startup option to support consistent replace by running background repair with
     streaming. Without consistent replace, node replacement only streams one copy of data which may be stale with 
     respect to QUORUM/LOCAL_QUORUM.
     When replacing a down node with "-Ddse.consistent_replace=QUORUM", the replacement node will coordinate repair
     among a quorum of replicas concurrently with replace streaming (or a local quorum of replicas when LOCAL_QUORUM is
     used). Repair will transfer the differences to the replacement node, ensuring it's consistent with other replicas
     when the replacement process is finished, assuming data is inserted with QUORUM/LOCAL_QUORUM.
     Available options: "ONE"(default), "LOCAL_QUORUM", "QUORUM".
     Startup option "-Ddse.consistent_replace.whitelist=<KEYSPACE>,<KEYSPACE.TABLE>,..." can be used to specify
     keyspaces or tables for consistent replace. By default, all keyspaces will be consistent replaced. Specifying
     keyspace without tables means all tables of the keyspace will be consistent replaced.

Deprecation
-----------
    - Background read repair has been deprecated. dclocal_read_repair_chance and
      read_repair_chance table options have been deprecated, and will be removed entirely in 4.0.
      See CASSANDRA-13910 for details.

3.11.2
======

Upgrading
---------
   - See MAXIMUM TTL EXPIRATION DATE NOTICE above.
    - 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


3.11.0
======

Upgrading
---------
   - 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 (only when upgrading from DSE 5.1.1 or 5.1.2 or any version lower than DSE 5.0.10)
---------------------------------------------------------------------------------------
    - 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.

3.10
====

New features
------------
   - New `DurationType` (cql duration). See CASSANDRA-11873
   - Runtime modification of concurrent_compactors is now available via nodetool
   - 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.
   - Compaction can now take into account overlapping tables that don't take part
     in the compaction to look for deleted or overwritten data in the compacted tables.
     Then such data is found, it can be safely discarded, which in turn should enable
     the removal of tombstones over that data.

     The behavior can be engaged in two ways:
       - as a "nodetool garbagecollect -g CELL/ROW" operation, which applies
         single-table compaction on all sstables to discard deleted data in one step.
       - as a "provide_overlapping_tombstones:CELL/ROW/NONE" compaction strategy flag,
         which uses overlapping tables as a source of deletions/overwrites during all
         compactions.
     The argument specifies the granularity at which deleted data is to be found:
       - If ROW is specified, only whole deleted rows (or sets of rows) will be
         discarded.
       - If CELL is specified, any columns whose value is overwritten or deleted
         will also be discarded.
       - NONE (default) specifies the old behavior, overlapping tables are not used to
         decide when to discard data.
     Which option to use depends on your workload, both ROW and CELL increase the
     disk load on compaction (especially with the size-tiered compaction strategy),
     with CELL being more resource-intensive. Both should lead to better read
     performance if deleting rows (resp. overwriting or deleting cells) is common.
   - 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.

Upgrading
---------
    - 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 litterals support the ISO 8601 format. By consequence, identifiers matching that format
      (e.g P2Y or P1MT6H) will not be supported anymore (CASSANDRA-11873).

3.8
===

New features
------------
   - 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.
   - 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.
     NOTE: 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.

Upgrading
---------
   - 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).

Deprecation
-----------
   - 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.

3.7
===

Upgrading
---------
   - 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.


3.6
=====

New features
------------
   - 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.



3.4
===

New features
------------
    - 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.

Upgrading
---------
    - Nothing specific to 3.4 but please see previous versions upgrading section,
      especially if you are upgrading from 2.2.

Deprecation
-----------
    - 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.


3.2
===

New features
------------
   - 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.
     Note: hints compression is currently disabled by default.

Upgrading
---------
   - 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 file

Deprecation
-----------
   - The Thrift API is deprecated and will be removed in Cassandra 4.0.


3.1
=====

Upgrading
---------
   - 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).


3.0
===

New features
------------
   - EACH_QUORUM is now a supported consistency level for read requests.
   - Support for IN restrictions on any partition key component or clustering key
     as well as support for EQ and IN multicolumn restrictions has been added to
     UPDATE and DELETE statement.
   - Support for single-column and multi-colum slice restrictions (>, >=, <= and <)
     has been added to DELETE statements
   - nodetool rebuild_index accepts the index argument without
     the redundant table name
   - Materialized Views, which allow for server-side denormalization, is now
     available. Materialized views provide an alternative to secondary indexes
     for non-primary key queries, and perform much better for indexing high
     cardinality columns.
     See http://www.datastax.com/dev/blog/new-in-cassandra-3-0-materialized-views
   - Hinted handoff has been completely rewritten. Hints are now stored in flat
     files, with less overhead for storage and more efficient dispatch.
     See CASSANDRA-6230 for full details.
   - Option to not purge unrepaired tombstones. To avoid users having data resurrected
     if repair has not been run within gc_grace_seconds, an option has been added to
     only allow tombstones from repaired sstables to be purged. To enable, set the
     compaction option 'only_purge_repaired_tombstones':true but keep in mind that if
     you do not run repair for a long time, you will keep all tombstones around which
     can cause other problems.
   - Enabled warning on GC taking longer than 1000ms. See
     cassandra.yaml:gc_warn_threshold_in_ms

Upgrading
---------
   - Clients must use the native protocol version 3 when upgrading from 2.2.X as
     the native protocol version 4 is not compatible between 2.2.X and 3.Y. See
     https://www.mail-archive.com/user@cassandra.apache.org/msg45381.html for details.
   - A new argument of type InetAdress has been added to IAuthenticator::newSaslNegotiator,
     representing the IP address of the client attempting authentication. It will be a breaking
     change for any custom implementations.
   - token-generator tool has been removed.
   - Upgrade to 3.0 is supported from Cassandra 2.1 versions greater or equal to 2.1.9,
     or Cassandra 2.2 versions greater or equal to 2.2.2. Upgrade from Cassandra 2.0 and
     older versions is not supported.
   - The 'memtable_allocation_type: offheap_objects' option has been removed. It should
     be re-introduced in a future release and you can follow CASSANDRA-9472 to know more.
   - Configuration parameter memory_allocator in cassandra.yaml has been removed.
   - The native protocol versions 1 and 2 are not supported anymore.
   - Max mutation size is now configurable via max_mutation_size_in_kb setting in
     cassandra.yaml; the default is half the size commitlog_segment_size_in_mb * 1024.
   - 3.0 requires Java 8u40 or later.
   - Garbage collection options were moved from cassandra-env to jvm.options file.
   - New transaction log files have been introduced to replace the compactions_in_progress
     system table, temporary file markers (tmp and tmplink) and sstable ancerstors.
     Therefore, compaction metadata no longer contains ancestors. Transaction log files
     list sstable descriptors involved in compactions and other operations such as flushing
     and streaming. Use the sstableutil tool to list any sstable files currently involved
     in operations not yet completed, which previously would have been marked as temporary.
     A transaction log file contains one sstable per line, with the prefix "add:" or "remove:".
     They also contain a special line "commit", only inserted at the end when the transaction
     is committed. On startup we use these files to cleanup any partial transactions that were
     in progress when the process exited. If the commit line is found, we keep new sstables
     (those with the "add" prefix) and delete the old sstables (those with the "remove" prefix),
     vice-versa if the commit line is missing. Should you lose or delete these log files,
     both old and new sstable files will be kept as live files, which will result in duplicated
     sstables. These files are protected by incremental checksums so you should not manually
     edit them. When restoring a full backup or moving sstable files, you should clean-up
     any left over transactions and their temporary files first. You can use this command:
      ===> sstableutil -c ks table
     See CASSANDRA-7066 for full details.
   - New write stages have been added for batchlog and materialized view mutations
     you can set their size in cassandra.yaml
   - User defined functions are now executed in a sandbox.
     To use UDFs and UDAs, you have to enable them in cassandra.yaml.
   - New SSTable version 'la' with improved bloom-filter false-positive handling
     compared to previous version 'ka' used in 2.2 and 2.1. Running sstableupgrade
     is not necessary but recommended.
   - Before upgrading to 3.0, make sure that your cluster is in complete agreement
     (schema versions outputted by `nodetool describecluster` are all the same).
   - Schema metadata is now stored in the new `system_schema` keyspace, and
     legacy `system.schema_*` tables are now gone; see CASSANDRA-6717 for details.
   - Pig's support has been removed.
   - Hadoop BulkOutputFormat and BulkRecordWriter have been removed; use
     CqlBulkOutputFormat and CqlBulkRecordWriter instead.
   - Hadoop ColumnFamilyInputFormat and ColumnFamilyOutputFormat have been removed;
     use CqlInputFormat and CqlOutputFormat instead.
   - Hadoop ColumnFamilyRecordReader and ColumnFamilyRecordWriter have been removed;
     use CqlRecordReader and CqlRecordWriter instead.
   - hinted_handoff_enabled in cassandra.yaml no longer supports a list of data centers.
     To specify a list of excluded data centers when hinted_handoff_enabled is set to true,
     use hinted_handoff_disabled_datacenters, see CASSANDRA-9035 for details.
   - The `sstable_compression` and `chunk_length_kb` compression options have been deprecated.
     The new options are `class` and `chunk_length_in_kb`. Disabling compression should now
     be done by setting the new option `enabled` to `false`.
   - The compression option `crc_check_chance` became a top-level table option, but is currently
     enforced only against tables with enabled compression.
   - Only map syntax is now allowed for caching options. ALL/NONE/KEYS_ONLY/ROWS_ONLY syntax
     has been deprecated since 2.1.0 and is being removed in 3.0.0.
   - The 'index_interval' option for 'CREATE TABLE' statements, which has been deprecated
     since 2.1 and replaced with the 'min_index_interval' and 'max_index_interval' options,
     has now been removed.
   - Batchlog entries are now stored in a new table - system.batches.
     The old one has been deprecated.
   - JMX methods set/getCompactionStrategyClass have been removed, use
     set/getCompactionParameters or set/getCompactionParametersJson instead.
   - SizeTieredCompactionStrategy parameter cold_reads_to_omit has been removed.
   - The secondary index API has been comprehensively reworked. This will be a breaking
     change for any custom index implementations, which should now look to implement
     the new org.apache.cassandra.index.Index interface. New syntax has been added to create
     and query row-based indexes, which are not explicitly linked to a single column in the
     base table.

TinkerPop changes for DSE 6.7.0

A list of DataStax Enterprise 6.7.0 production-certified changes in addition to TinkerPop 3.3.3.

DataStax Enterprise (DSE) 6.7.0 includes all changes from previous releases plus these production-certified changes that are in addition to TinkerPop 3.3.3:
  • Bump to Groovy 2.4.15 - resolves a Groovy bug preventing Lambda creation in GLVs in some cases. (TINKERPOP-1953)
  • Implement TraversalSelectStep - expands the capability of the select() step by allowing nesting as in select("a").select(select("n")) which thus allows for dynamic keys for select() (6.0.1+). ( TINKERPOP-1628)
  • Performance enhancement to Bytecode deserialization. (TINKERPOP-1936)
  • Traversal construction performance enhancements. (TINKERPOP-1950)
  • Path history isn't preserved for keys in mutations. (TINKERPOP-1947)
  • Profile step and iterate do not play nicely with each other (6.0.1+). (TINKERPOP-1869)