Commit Graph

335 Commits

Author SHA1 Message Date
Dmitry Konstantinov 105694f625 Merge branch 'cassandra-5.0' into cassandra-6.0
* cassandra-5.0:
  Fix TLS-related tests after a JDK update in build image
2026-06-21 22:05:32 +01:00
Dmitry Konstantinov fb7efd6219 Fix TLS-related tests after a JDK update in build image
add SAN to certificates used by tests
add TLS_ECDHE_* to ciphers list in SSTableLoaderEncryptionOptionsTest

Patch by Dmitry Konstantinov; reviewed by Michael Semb Wever for CASSANDRA-21441
2026-06-21 21:56:39 +01:00
Dmitry Konstantinov 687fbf282f ninjia: add an accidentally removed newline in test/conf/cassandra.yaml 2026-05-14 14:43:21 +01:00
Benedict Elliott Smith 41cf61402c Improve Tail Latency
- TransactionStatement token aware routing
 - Mitigate convoy effect:
   - ExecuteTxnBacklog v1 can execute single key transaction backlogs and disseminate the result
     - Direct local execution possible for single key transactions
   - Use shardAppliedBefore instead of gcBefore to cleanup CFK faster
Also Improve:
 - Introduce distributed tracing
 - Combine RejectBefore and MaxConflicts
 - Self-addressed messages are delivered directly
 - Disable AccordSyncPropagator by default, as incompatible with large clusters
 - FastPathStrategy.SIMPLE should not modify fast path contents; FastPathStrategy.UP introduced to adopt this behaviour
 - Configurable queue prioritisation
 - ProtocolModifiers mostly final
 - Remove unnecessary condition check when serializing TxnUpdate
Also Fix:
 - SequentialExecutor ownership bug
 - BTree.XUpdater.reset()

patch by Benedict; reviewed by Alex Petrov and Ariel Weisberg for CASSANDRA-21361
2026-05-13 15:15:23 +01:00
Benedict Elliott Smith 8876ad4c03 Introduce:
- Clean Shutdown/Restart
 - Rebootstrap to allow nodes to rejoin consensus if they are out of sync, or did not shutdown cleanly
Improve:
 - Improve efficiency of BTreeReducingRangeMap
 - DurableBefore backed by BTreeReducingRangeMap
 - Soft reject new transactions when a replica has a backlog of work
 - system_accord_debug.command_store_ops supports starting journal replay
Fix:
 - Ensure SequentialExecutor.owner is unset only by the owner
 - Detect and avoid taking two AccordExecutor locks simultaneously
 - MaxConflicts serializer
 - tryToExecuteListening after replay, to handle invalidated dependencies
 - TxnNamedRead does not close a RowIterator, leading to native memory leaks
 - GetLatestDepsNack serialization
 - journal.readLast() did not read last
 - DefaultRemoteListeners not correctly synchronised
 - RangeTxnScanner cancellation assumes was already started
 - Start cfk compaction before replay
 - txn_graph should avoid visiting parents twice (possible if two different dependency chains connecting them in the graph)
 - Topology.cloneEquivalentWithEpoch should also share nodeLookup and ranges, especially to accelerate computeWaitForEpoch/computeScope
 - Do not invoke slowReplicaDelay or slowCoordinatorDelay during restore
 - Do not fail if slowReplicaDelay or slowCoordinatorDelay are invoked without knowing the transaction

patch by Benedict; reviewed by Alex Petrov and Ariel Weisberg for CASSANDRA-21355
2026-05-09 16:46:00 +01:00
Joel Shepherd 281c1dc92c
Enable IAuthenticator to declare supported and alterable role options
With negotiated authentication (CEP-50), nodes may be configured with multiple authenticators. Prior to this change,
a number of areas in the code assumed that there was a single configured authenticator and contained logic that
switched depending on the authenticator type. This logic won't work when multiple authenticators can be configured.
This change eliminates most calls to DataDescriptor.getAuthenticator(), by enabling individual authenticators to
declare the role attributes they support, requiring callers to specify the type of authenticator they're looking
for, and directly returning whether the node can enforce authn or not rather than inferring it by the presence of
an authenticator.

Testing done: Unit tests for auth and config packages; d-tests for auth-related functionality (e.g. ColumnMasks).

patch by Joel Shepherd; reviewed by Stefan Miklosovic, Andy Tolbert for CASSANDRA-20834
2026-04-12 22:15:49 +02:00
minal-kyada 9bedf98b6e Send client warnings when writing to a large partition
Patch by Minal Kyada; reviewed by David Capwell and marcuse for CASSANDRA-17258
2026-03-13 12:44:30 +01:00
MichaelMorris 8b6195a975
Upgrade logback version to 1.5.18 and slf4j dependencies to 2.0.17
Dropback of CASSANDRA-20429 to cassandra-5.0

patch by Michael Morris; reviewed by Stefan Miklosovic, Brandon Williams for CASSANDRA-21137
2026-02-06 13:28:03 +11:00
Nikolay Izhikov fc97fd1037
Upgrade logback version to 1.5.18 and slf4j dependencies to 2.0.17
patch by Nikolay Izhikov; reviewed by Stefan Miklosovic, Maxim Muzafarov, Brandon Williams for CASSANDRA-20429
2025-04-25 14:24:35 +02:00
Stefan Miklosovic 8fcf309dad
Implement appender of slow queries to system_views.slow_queries table
patch by Stefan Miklosovic; reviewed by Dmitry Konstantinov, Bernardo Botella for CASSANDRA-13001
2025-04-23 09:28:22 +02:00
Benedict Elliott Smith 52242f23a8 Remove TimestampsForKey
patch by Benedict; reviewed by Alex Petrov for CASSANDRA-20174
2025-04-17 11:59:53 -07:00
Ariel Weisberg 6c0ad476ed Miscellaneous migration test fixes
Patch by Ariel Weisberg; Reviewed by David Capwell for CASSANDRA-20060
2025-04-17 11:59:53 -07:00
Benedict Elliott Smith 9ebce5d6df Redesign progress mechanisms to be memory efficient, use fewer messages and to resolve dependency chains promptly.
The SimpleProgressLog had a number of problems:

1. It polled for progress with no attempt to determine whether progress could realistically be made, so:
 - as the number of pending transactions grew, the proportion of useful work dropped (as many would be unable to make progress without earlier transactions completing)
 - each transaction in the chain could recover only on average 1/2 poll interval behind the last transaction to complete
2. It requested full transaction state from every replica on each attempt
3. It maintained a lot of in-memory state
4. Polling happened en-masse, allowing for little per-transaction control

We also separately maintained fairly expensive per-command listener state that negatively affected our command loading and caching.

The new DefaultProgressLog makes use of several new features: LocalListeners, RemoteListeners, Timers and Await messages.
 - LocalListeners provide a memory-efficient collection for managing each CommandStore<E2><80><99>s transaction listeners, with dedicated record keeping for inter-transaction relationships.
 - RemoteListeners provide a mechanism for request/response pairs that may be separated by longer than the normal Cassandra message timeout, and require minimal state on sender and recipient. This permits replicas to cheaply update their local state machine as soon as distributed information becomes available.

The DefaultProgressLog tracks each transaction with separate timers to handle per-transaction scheduling, backoff etc, and a succinct state machine. To reduce overhead correspondence is preferentially limited to a handful of replicas, and limited to the home shard where appropriate.

patch by Benedict; reviewed by Ariel Weisberg for CASSANDRA-19870
2025-04-17 11:59:51 -07:00
Benedict Elliott Smith ac58a62c51 Introduce Periodic mode to Accord Journal
patch by Benedict; reviewed by Aleksey Yeschenko, Alex Petrov and David Capwell for CASSANDRA-19720
2025-04-17 11:59:51 -07:00
Benedict Elliott Smith 7dadc080cb perf improvements 2025-04-17 11:59:50 -07:00
David Capwell a324003c59 Get simulator working (again)
Co-authored-by: Ariel Weisberg <aweisberg@apple.com>
Co-authored-by: Benedict Elliott Smith <benedict@apache.org>
2025-04-17 11:59:49 -07:00
Jacek Lewandowski dfd1e99fd1 CEP-15: Add Accord configuration stub
Patch by Jacek Lewandowski; reviewed by David Capwell for CASSANDRA-18221
2025-04-17 11:59:49 -07:00
Aleksey Yeschenko 8dc82a6369 CEP-15: Store PreAccept, Accept, Commit, and Apply messages
in a durable log before processing by CommandStores

patch by Aleksey Yeschenko; reviewed by David Capwell for
CASSANDRA-18344
2025-04-17 11:59:48 -07:00
Blake Eggleston 09c8fa1030 CEP-15 (C*): Messaging and storage engine integration
patch by Blake Eggleston; reviewed by Benedict Elliott Smith, David Capwell for CASSANDRA-17103
2025-04-17 11:59:47 -07:00
maulin-vasavada 37fe4b679c
Provide keystore_password_file and truststore_password_file options to read credentials from a file
patch by Maulin Vasavada; reviewed by Stefan Miklosovic, Maxwell Guo for CASSANDRA-13428
2025-03-04 12:33:41 +01:00
Zhongxiang Zheng 2ff41551a6
Enable JMX server configuration to be in cassandra.yaml
patch by Zhongxiang Zheng; reviewed by Stefan Miklosovic, Maulin Vasavada, Cheng Wang, Jordan West for CASSANDRA-11695

Co-authored-by: Stefan Miklosovic <smiklosovic@apache.org>
Co-authored-by: Sam Tunnicliffe <samt@apache.org>
2024-12-16 11:01:29 +01:00
Maulin Vasavada 9131be9fa5
Make JMX SSL configurable in cassandra.yaml
patch by Maulin Vasavada; reviewed by Stefan Miklosovic, Doug Rohrer for CASSANDRA-18508
2024-11-23 10:40:13 +01:00
mck ef49daf5ff
Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  Add new cassandra_latest.yaml entries to latest tests
2024-10-19 09:49:40 +02:00
mck 2801ed3366
Add new cassandra_latest.yaml entries to latest tests
Both CASSANDRA-18120 and CASSANDRA-19946 updated cassandra_latest.yaml but not the corresponding test configs

 patch by Mick Semb Wever; reviewed by Brandon Williams, Tiago L. Alves for CASSANDRA-20002
2024-10-19 09:42:54 +02:00
Caleb Rackliffe cf2cde7017 Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  Use default commitlog settings in test YAMLs
2024-08-15 11:26:39 -05:00
Caleb Rackliffe c91ffe8a9f Merge branch 'cassandra-4.1' into cassandra-5.0.0
* cassandra-4.1:
  Use default commitlog settings in test YAMLs
2024-08-15 10:49:50 -05:00
Caleb Rackliffe e5fc9b3e14 Merge branch 'cassandra-4.0' into cassandra-4.1
* cassandra-4.0:
  Use default commitlog settings in test YAMLs
2024-08-15 10:19:46 -05:00
Caleb Rackliffe 93415c91af Use default commitlog settings in test YAMLs
patch by Caleb Rackliffe; reviewed by David Capwell for CASSANDRA-19830
2024-08-15 10:12:39 -05:00
Stefan Miklosovic da86cddddb
Merge branch 'cassandra-5.0' into trunk 2024-03-12 13:40:59 +01:00
Stefan Miklosovic 2f836fa596
Set uuid_sstable_identifiers_enabled to true for cassandra-latest.yaml
patch by Stefan Miklosovic; reviewed by Branimir Lambov, Jacek Lewandowski for CASSANDRA-19460
2024-03-12 13:33:08 +01:00
Branimir Lambov 28efb63df5 Merge branch 'cassandra-5.0' into trunk 2024-03-07 13:19:16 +02:00
Branimir Lambov 06ed1afc34 Add an optimized default configuration to tests and make it available for new users
This patch adds a new configuration file, cassandra_latest.yaml, which changes
some of the settings to use new features we usually recommend to users,
including:
- Big Trie-Indexed SSTables
- Trie memtables
- Unified Compaction Strategy
- Storage Attached Index
- Off-heap objects memtables
- Direct-write commit log
- No storage compatibility

These changes are applied in new test targets for unit, in-jvm and python dtests that are
run pre-commit. When changes are made to the new config file, python dtest will use it
directly, but unit and in-jvm dtests require updates, respectively, to latest_diff.yaml
and InstanceConfig.java.

patch by Branimir Lambov; reviewed by Berenguer Blasi for CASSANDRA-18753
2024-03-07 11:08:44 +02:00
Stefan Miklosovic 087a4474d8
Remove native_transport_port_ssl
patch by Stefan Miklosovic; reviewed by Brandon Williams for CASSANDRA-19397
2024-02-19 09:24:56 +01:00
Ekaterina Dimitrova a9b6fafc4f Merge branch 'cassandra-5.0' into trunk 2024-01-31 11:25:39 -05:00
Ekaterina Dimitrova ef6864fa66 Merge branch 'cassandra-4.1' into cassandra-5.0 2024-01-31 11:22:19 -05:00
Ekaterina Dimitrova 8709b28224 Merge branch 'cassandra-4.0' into cassandra-4.1 2024-01-31 11:19:02 -05:00
Ekaterina Dimitrova 74079562f2 Merge branch 'cassandra-3.11' into cassandra-4.0 2024-01-31 11:15:49 -05:00
Ekaterina Dimitrova aa561f2373 Switch memtable_allocation_type from offheap_objects to heap_buffers in test/conf/cassandra.yaml
patch by Ekaterina Dimitrova; reviewed by Brandon Williams for CASSANDRA-19326
2024-01-31 11:11:35 -05:00
Andy Tolbert c09d0d929b Allow CQL client certificate authentication to work without sending an AUTHENTICATE request
patch by Andy Tolbert; reviewed by Abe Ratnofsky, Dinesh Joshi, Francisco Guerrero, Jyothsna Konisa for CASSANDRA-18857
2024-01-30 17:05:07 -08:00
Claude Warren 5d46ff2796
Remove dependency on Sigar in favor of OSHI
patch by Claude Warren; reviewed by Stefan Miklosovic, Jacek Lewandowski, Michael Semb Wever for CASSANDRA-16565

Co-authored-by: Stefan Miklosovic <smiklosovic@apache.org>
2024-01-23 11:54:20 +01:00
Alex Petrov 439d1b122a Bring Harry into C* Tree
Patch by Alex Petrov; reviewed by Caleb Rackliffe and Marcus Eriksson for CASSANDRA-19210.
2023-12-23 15:04:25 +01:00
Jacek Lewandowski 008c1b397b Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  Enable Direct-IO feature for CommitLog files using Java native API's.
2023-11-29 11:48:30 +01:00
Amit Pawar 3259bea533 Enable Direct-IO feature for CommitLog files using Java native API's.
Patch by Amit Pawar and Jacek Lewandowski; reviewed by Branimir Lambov and Maxwell Guo for CASSANDRA-18464

Co-authored-by: Amit Pawar <Amit.Pawar@amd.com>
Co-authored-by: Jacek Lewandowski <lewandowski.jacek@gmail.com>
2023-11-29 11:29:23 +01:00
Sam Tunnicliffe ae0842372f Implementation of Transactional Cluster Metadata as described in CEP-21
An overview of the core components can be found in the included
TransactionalClusterMetadata.md

patch by Alex Petrov, Marcus Eriksson and Sam Tunnicliffe; reviewed by
Alex Petrov, Marcus Eriksson and Sam Tunnicliffe for CASSANDRA-18330

Co-authored-by: Marcus Eriksson <marcuse@apache.org>
Co-authored-by: Alex Petrov <oleksandr.petrov@gmail.com>
Co-authored-by: Sam Tunnicliffe <samt@apache.org>
2023-11-24 10:26:08 +00:00
Stefan Miklosovic e1355d7238
Set default disk_access_mode to mmap_index_only
patch by Stefan Miklosovic; reviewed by Paulo Motta, Caleb Rackliffe, Brandon Williams for CASSANDRA-19021
2023-11-15 22:14:21 +01:00
Mick Semb Wever 865954fd99
Merge branch 'cassandra-4.1' into cassandra-5.0
* cassandra-4.1:
  Missing license info and headers
2023-08-31 22:43:33 +02:00
Mick Semb Wever 20125c5053
Merge branch 'cassandra-4.0' into cassandra-4.1
* cassandra-4.0:
  Missing license info and headers
2023-08-31 22:41:56 +02:00
Stefan Miklosovic a9606c6f4b
Merge branch 'cassandra-4.1' into cassandra-5.0 2023-08-28 09:58:41 +02:00
Andy Tolbert b47bee42d3
Allow empty keystore_password in encryption_options
patch by Andy Tolbert; reviewed by Jon Meredith and Stefan Miklosovic for CASSANDRA-18778
2023-08-28 09:47:54 +02:00
Caleb Rackliffe f8d4e2a3c8 Disable heap dump creation by default on crash for tests that use test/conf/cassandra.yaml
patch by Caleb Rackliffe; reviewed by Brandon Williams and Ekaterina Dimitrova for CASSANDRA-18741
2023-08-11 10:34:25 -05:00