diff --git a/CHANGES.txt b/CHANGES.txt index 7672ce8207..f146608225 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -13,6 +13,7 @@ * Rework ZSTD dictionary compression logic to create a trainer per training (CASSANDRA-21209) Merged from 5.0: Merged from 4.1: + * Add Paxos v2 option and informatin in cassandra.yaml (CASSANDRA-21316) * Harden data resurrection startup check with atomic heartbeat file write with fallback (CASSANDRA-21290) Merged from 4.0: * Backport CASSANDRA-17810 fix and improve RTBoundValidator error messages (CASSANDRA-18282) diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml index 692bb0f404..40a8bae75e 100644 --- a/conf/cassandra.yaml +++ b/conf/cassandra.yaml @@ -1677,6 +1677,35 @@ dynamic_snitch_reset_interval: 600000ms # until the pinned host was 20% worse than the fastest. dynamic_snitch_badness_threshold: 1.0 +# Paxos variant for lightweight transactions (LWTs) +# Options: +# v1 +# - Legacy Paxos. Expect 4RTs for a write and 3RTs for a read. (default) +# +# v1_without_linearizable_reads_or_rejected_writes +# - Legacy Paxos. Expect 4RTs for a write and 2RTs for a read. +# With legacy semantics for read/read and rejected write linearizability, i.e. not guaranteed. +# +# v2 +# - Optimized Paxos. Expect 2RTs for a write, and either 1RT or 2RT for a read. (recommended) +# +# v2_without_linearizable_reads +# - Optimized Paxos. Expect 2RTs for a write and 1RT for a read. +# +# v2_without_linearizable_reads_or_rejected_writes +# - Optimized Paxos. Expect 2RTs for a write and 1RT for a read. +# With legacy semantics for read/read and rejected write linearizability, i.e. not guaranteed. +# +# To upgrade from v1: +# 1. Ensure all nodes are on same Cassandra version 4.1+. +# 2. Run `nodetool repair --full -pr` on each node. +# 3. Set paxos_variant: v2 on each node and rolling restart. +# Rollback is safe: revert to v1 and rolling restart. No data migration needed. +# +# With any v2 variant and `paxos_state_purging: repaired` it is safe to use ANY Commit consistency. +# +#paxos_variant: v1 + # Configures Java crypto provider. By default, it will use DefaultCryptoProvider # which will install Amazon Correto Crypto Provider. # diff --git a/conf/cassandra_latest.yaml b/conf/cassandra_latest.yaml index c1948fd296..5221919dfe 100644 --- a/conf/cassandra_latest.yaml +++ b/conf/cassandra_latest.yaml @@ -1563,6 +1563,35 @@ dynamic_snitch_reset_interval: 600000ms # until the pinned host was 20% worse than the fastest. dynamic_snitch_badness_threshold: 1.0 +# Paxos variant for lightweight transactions (LWTs) +# Options: +# v1 +# - Legacy Paxos. Expect 4RTs for a write and 3RTs for a read. (default) +# +# v1_without_linearizable_reads_or_rejected_writes +# - Legacy Paxos. Expect 4RTs for a write and 2RTs for a read. +# With legacy semantics for read/read and rejected write linearizability, i.e. not guaranteed. +# +# v2 +# - Optimized Paxos. Expect 2RTs for a write, and either 1RT or 2RT for a read. (recommended) +# +# v2_without_linearizable_reads +# - Optimized Paxos. Expect 2RTs for a write and 1RT for a read. +# +# v2_without_linearizable_reads_or_rejected_writes +# - Optimized Paxos. Expect 2RTs for a write and 1RT for a read. +# With legacy semantics for read/read and rejected write linearizability, i.e. not guaranteed. +# +# To upgrade from v1: +# 1. Ensure all nodes are on same Cassandra version 4.1+. +# 2. Run `nodetool repair --full -pr` on each node. +# 3. Set paxos_variant: v2 on each node and rolling restart. +# Rollback is safe: revert to v1 and rolling restart. No data migration needed. +# +# With any v2 variant and `paxos_state_purging: repaired` it is safe to use ANY Commit consistency. +# +paxos_variant: v2 + # Configures Java crypto provider. By default, it will use DefaultCryptoProvider # which will install Amazon Correto Crypto Provider. #