What’s New in Apache Cassandra 6.0

Preview | Unofficial | For review only

Apache Cassandra 6.0 introduces general-purpose ACID transactions, a new consensus-based cluster metadata system, and dozens of operational, CQL, and security improvements.

Headline Features

Accord (General-Purpose Transactions)

Cassandra 6.0 introduces Accord (CEP-15), a leaderless consensus protocol enabling multi-partition, multi-table ACID transactions. New CQL syntax BEGIN TRANSACTION …​ COMMIT TRANSACTION supports atomic reads and writes across partition boundaries. Accord transparently replaces Paxos for lightweight transactions (LWT/CAS) on migrated tables.

Transactional Cluster Metadata (TCM)

CEP-21 (CASSANDRA-18330) replaces gossip-based cluster metadata propagation with a linearized, distributed log managed by a Cluster Metadata Service (CMS). All modifications to cluster membership, token ownership, and schema are serialized through the CMS using Paxos-backed consensus. This is the largest architectural change in Cassandra 6.0.

CQL Enhancements

Constraints

CEP-42 (CASSANDRA-19947) adds a pluggable constraints framework. Supported constraint types include NOT NULL, scalar range checks, LENGTH, OCTET_LENGTH, REGEXP, and JSON. Constraints can be applied via CREATE TABLE, ALTER TABLE, CREATE CONSTRAINT, and ALTER CONSTRAINT.

BETWEEN Operator

CASSANDRA-19604 adds BETWEEN support in WHERE clauses for SAI-indexed columns and clustering columns. Syntax: WHERE col BETWEEN val1 AND val2.

NOT Operators

CASSANDRA-18584 adds NOT IN, NOT CONTAINS, and NOT CONTAINS KEY operators for WHERE clauses, enabling exclusion-based filtering with SAI indexes.

LIKE Expressions

CASSANDRA-17198 adds LIKE operator support in WHERE clauses for SASI and SAI indexes with prefix, suffix, and contains matching.

CREATE TABLE LIKE

CASSANDRA-19964 adds the ability to create a new table with the same schema as an existing table.

Schema Annotations (COMMENT ON / SECURITY LABEL)

CASSANDRA-20943 adds COMMENT ON and SECURITY LABEL statements for annotating keyspaces, tables, columns, and other schema objects.

LIST SUPERUSERS

CASSANDRA-19417 adds a new CQL statement to list all roles with superuser privileges.

New String and Formatting Functions

length(), octet_length() (CASSANDRA-20102), format_bytes(), format_time() (CASSANDRA-19546) provide human-readable output formatting.

SAI Frozen Collection Indexing

CASSANDRA-18492 enables SAI indexes on frozen collections, supporting CONTAINS queries on frozen lists, sets, and maps.

Index Hints

CASSANDRA-18112 allows manual secondary index selection in CQL SELECT statements.

Operational Changes

Topology and Snitches

Snitch Deprecation

CASSANDRA-19488 deprecates IEndpointSnitch in favor of new initial_location_provider, node_proximity, addresses_config, and prefer_local_connections settings in cassandra.yaml. Cloud-specific snitches (GoogleCloudSnitch, Ec2Snitch, AzureSnitch) are removed.

Live DC/Rack Changes

CASSANDRA-20528 adds nodetool altertopology to change a live node’s datacenter or rack assignment without restart.

Security

JMX in cassandra.yaml

CASSANDRA-11695 moves JMX server configuration from cassandra-env.sh scripts to structured cassandra.yaml settings.

native_transport_port_ssl Removed

CASSANDRA-19397 removes the deprecated native_transport_port_ssl setting. Use native_transport_port with client_encryption_options instead.

Password Validation

CEP-24 (CASSANDRA-17457) adds pluggable password validation with dictionary checks, length requirements, and generated passwords.

Role Name Generation

CEP-55 adds UUID-based role name generation with configurable prefixes and suffixes.

Periodic Disconnect of Revoked Roles

CASSANDRA-19385 adds background task to disconnect clients whose roles have been revoked or set to LOGIN = false.

Compaction and Compression

ZSTD Dictionary Compression

CASSANDRA-17021 adds ZstdDictionaryCompressor with nodetool-managed dictionary training.

Compaction Parallelization

CASSANDRA-18802 adds parallelize_output_shards option for UCS and compaction --jobs parallelism.

Direct I/O for Compaction Reads

CASSANDRA-19987 adds compaction_read_disk_access_mode setting for O_DIRECT bypass of OS page cache during compaction.

Repair and Recovery

Auto Repair

CEP-37 (CASSANDRA-19918) adds automated, adaptive repair scheduling with configurable splitter algorithms and per-table policies.

Monitoring and Observability

Slow Query Virtual Table

CASSANDRA-13001 adds system_views.slow_queries for CQL-queryable slow query logging.

system_metrics Virtual Keyspace

CASSANDRA-14572 exposes all Dropwizard metrics as CQL-queryable virtual tables in the system_metrics keyspace.

uncaught_exceptions Virtual Table

CASSANDRA-20858 adds system_views.uncaught_exceptions tracking thread exceptions.

Partition Key Statistics

CASSANDRA-20161 adds system_views.partition_key_statistics exposing per-table partition size estimates.

Guardrails

Cassandra 6.0 adds several new guardrails for operational safety:

  • Bulk loading guardrail (CASSANDRA-18781) — control sstableloader and bulk import permissions

  • Keyspace DDL guardrails (CASSANDRA-20913) — protect against accidental ALTER/DROP of keyspace properties

  • Disk usage guardrails (CASSANDRA-21024) — strategy-aware disk usage protection per datacenter

  • Per-type max size (CASSANDRA-19677) — configurable size limits for collections, UDTs, and other types

Tools

Custom Startup Checks (SPI)

CASSANDRA-21093 adds a pluggable SPI for custom pre-startup validation checks.

Async Profiler Integration

CASSANDRA-20854 adds nodetool profile subcommands for CPU, allocation, and lock profiling.

Configuration

JDK 21 and Generational ZGC

CASSANDRA-18831 adds JDK 21 support with Generational ZGC as the default garbage collector. New jvm21-server.options file.

Environment Variable Overrides

CASSANDRA-20749 allows cassandra.yaml settings to be overridden via environment variables.

TriggersPolicy

CASSANDRA-19532 adds triggers_policy setting (enabled/disabled/forbidden) to control trigger usage at the cluster level.

Breaking Changes and Deprecations

  • native_transport_port_ssl has been removed (CASSANDRA-19397)

  • Cloud-specific snitches removed; use initial_location_provider settings instead (CASSANDRA-19488)

  • IEndpointSnitch interface deprecated; replaced by new location/proximity interfaces

  • Sigar replaced by OSHI for hardware detection (CASSANDRA-16565)

  • JDK 17 is the minimum supported version; JDK 11 is no longer supported

  • use_deterministic_table_id deprecated and removed from default cassandra.yaml (CASSANDRA-19809)

Previous Releases

For features introduced in earlier releases, see: