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 TRANSACTIONsupports 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, andJSON. Constraints can be applied viaCREATE TABLE,ALTER TABLE,CREATE CONSTRAINT, andALTER CONSTRAINT. - BETWEEN Operator
-
CASSANDRA-19604 adds
BETWEENsupport inWHEREclauses for SAI-indexed columns and clustering columns. Syntax:WHERE col BETWEEN val1 AND val2. - NOT Operators
-
CASSANDRA-18584 adds
NOT IN,NOT CONTAINS, andNOT CONTAINS KEYoperators forWHEREclauses, enabling exclusion-based filtering with SAI indexes. - LIKE Expressions
-
CASSANDRA-17198 adds
LIKEoperator support inWHEREclauses 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 ONandSECURITY LABELstatements 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
CONTAINSqueries on frozen lists, sets, and maps. - Index Hints
-
CASSANDRA-18112 allows manual secondary index selection in CQL
SELECTstatements.
Operational Changes
Topology and Snitches
- Snitch Deprecation
-
CASSANDRA-19488 deprecates
IEndpointSnitchin favor of newinitial_location_provider,node_proximity,addresses_config, andprefer_local_connectionssettings in cassandra.yaml. Cloud-specific snitches (GoogleCloudSnitch, Ec2Snitch, AzureSnitch) are removed. - Live DC/Rack Changes
-
CASSANDRA-20528 adds
nodetool altertopologyto 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.shscripts to structured cassandra.yaml settings. - native_transport_port_ssl Removed
-
CASSANDRA-19397 removes the deprecated
native_transport_port_sslsetting. Usenative_transport_portwithclient_encryption_optionsinstead. - 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
ZstdDictionaryCompressorwith nodetool-managed dictionary training. - Compaction Parallelization
-
CASSANDRA-18802 adds
parallelize_output_shardsoption for UCS and compaction--jobsparallelism. - Direct I/O for Compaction Reads
-
CASSANDRA-19987 adds
compaction_read_disk_access_modesetting 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_queriesfor CQL-queryable slow query logging. - system_metrics Virtual Keyspace
-
CASSANDRA-14572 exposes all Dropwizard metrics as CQL-queryable virtual tables in the
system_metricskeyspace. - uncaught_exceptions Virtual Table
-
CASSANDRA-20858 adds
system_views.uncaught_exceptionstracking thread exceptions. - Partition Key Statistics
-
CASSANDRA-20161 adds
system_views.partition_key_statisticsexposing 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 profilesubcommands 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.optionsfile. - Environment Variable Overrides
-
CASSANDRA-20749 allows cassandra.yaml settings to be overridden via environment variables.
- TriggersPolicy
-
CASSANDRA-19532 adds
triggers_policysetting (enabled/disabled/forbidden) to control trigger usage at the cluster level.
Breaking Changes and Deprecations
-
native_transport_port_sslhas been removed (CASSANDRA-19397) -
Cloud-specific snitches removed; use
initial_location_providersettings instead (CASSANDRA-19488) -
IEndpointSnitchinterface 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_iddeprecated and removed from default cassandra.yaml (CASSANDRA-19809)