Commit Graph

31792 Commits

Author SHA1 Message Date
Benedict Elliott Smith 8ac59e05a7 Accord: CoordinateTransaction should not abort if LocalExecute fails 2026-05-18 17:54:48 +01:00
Sam Tunnicliffe 6e46e39df8 ninja: replace addtocmstool with cmsofflinetool in rpm/deb packages
Follow up to CASSANDRA-19151
2026-05-18 14:04:33 +01:00
Benedict Elliott Smith 7623a59b31 Accord: Deterministic time integration
- now() functions must be deterministic (and derived from Accord timestamp)
 - tombstone GC and TTL evaluation must be deterministic and based on both Accord timestamp and Accord GC mechanisms (that guarantee completeness of execution)

patch by Benedict; reviewed by Alex Petrov and Ariel Weisberg for CASSANDRA-21376
2026-05-18 13:19:25 +01:00
Benedict Elliott Smith a0dc6f857b Introduce AccordExecutorSignalLoop that aims to reduce lock contention:
- consumer and producer threads wait signal without acquiring the lock first
 - lock owners may prepare more work than they need, moving some dynamically-adjusted portion of the work from the prioritised lock-managed structures onto a non-blocking queue, so that other threads may consume work from there; the portion is continually micro-adjusted to target some available work whenever the lock is acquired.
 - adopts/supports some features of the SEPExecutor:
  - threads may auto-adjust the number of running threads based on how much time is collectively spent waiting, to minimise time spent signalling
  - consumers may (timed-sleep) poll rather than await a signal, reducing the number of kernel interactions needed; relying on the auto-adjustment to bound the time the scheduler spends waking threads with no work to do
Also Fix:
 - Client Result should not be persisted or included in Command object at any time

patch by Benedict; reviewed by Alex Petrov and Ariel Weisberg for CASSANDRA-21375
2026-05-16 21:12:49 +01:00
nvharikrishna c9d60a61e3 Offline tool for working with cluster metadata dump files
The following subcommands have been added:

* abortbootstrap        Cancel and undo an inflight bootstrap
* abortmove             Cancel and undo an inflight token move
* abortdecommission     Cancel and undo an inflight decommission
* assassinate           Remove a node from cluster metadata
* resetcms              Redefine the CMS membership
* move                  Modify a node's (single) owned token
* describe              Output a summary of the cluster metadata
* forcejoin             Force a registered or joining node into a JOINED state
* print                 Output a full rendering of cluster metadata
* printdirectory        Output a full rendering of the directory
* printdataplacements   Output the full data placements

Patch by Venkata Harikrishna Nukala; reviewed by Alex Petrov and Sam Tunnicliffe
for CASSANDRA-19151
2026-05-15 14:41:06 +01:00
Benedict Elliott Smith 4930ae0e6e CASSANDRA-21361 follow-up: recontact forbids self addressed messages and we ensure self-addressed messages send full information to avoid having multiple LocalDelivery contexts 2026-05-15 10:26:45 +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 8ad8e56378 Artificial Latency Injection
patch by Benedict; reviewed by Alex Petrov and Ariel Weisberg for CASSANDRA-17024
2026-05-13 14:20:56 +01:00
Dmitry Konstantinov 51a58ef22e Merge branch 'cassandra-5.0' into cassandra-6.0
* cassandra-5.0:
  Uncompressed size is being used for compressed tables in maintenance operations
2026-05-13 13:23:16 +01:00
Matt Byrd af6930c986 Uncompressed size is being used for compressed tables in maintenance operations
use compression ratio to scale the amount of remaining disk usage
CompactionInfo::estimatedRemainingWriteBytes is uncompressed, causing compaction to be rejected due to size when it has space to complete

patch by Matt Byrd; reviewed by Dmitry Konstantinov, Marcus Eriksson for CASSANDRA-21245

Co-authored-by: Jon Meredith <jmeredithco@apple.com>
2026-05-13 13:15:46 +01:00
Josh McKenzie 84016ab151 Quiet down the noisiness on empty array deref in post-checkout hook
Patch by Josh McKenzie; reviewed by David Capwell for CASSANDRA-21364

Follow-up patch
2026-05-11 16:53:45 -04:00
Josh McKenzie f55c4d2a9b Add BUILD_OFFLINE capability to skip post-checkout submodule init
Patch by Josh McKenzie; reviewed by David Capwell for CASSANDRA-21364
2026-05-11 15:03:05 -04: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
Dmitry Konstantinov f06770f036 Reduce memory allocations in SelectStatement.getQuery
SinglePartitionReadCommand.Group#create - typical single partition select, use singletonList instead of ArrayList + Object[]
SelectStatement#getSliceCommands - remove unnessesary cloning of partition key, it is a part of a very old patch, now we copy all values from Netty buffers
SelectStatement#getSliceCommands - typical single partition select, use singletonList instead of ArrayList + Object[]
SinglePartitionReadQuery.Group#maybeValidateIndex, avoid iterators for restrictionSet if a full partition is selected

patch by Dmitry Konstantinov; reviewed by Francisco Guerrero, Stefan Miklosovic for CASSANDRA-21351
2026-05-07 13:31:09 +01:00
Dmitry Konstantinov bfc4b0bb36 Avoid allocation by getFunctions in SelectStatement.authorize
Memorize the result of getFunctions in SelectStatement constructor

patch by Dmitry Konstantinov; reviewed by Francisco Guerrero for CASSANDRA-21347
2026-05-06 13:00:51 +01:00
Dmitry Konstantinov e64e119c8d Add no-build-accord Ant option to be able to skip Accord module rebuild
patch by Dmitry Konstantinov; reviewed by Stefan Miklosovic for CASSANDRA-21350
2026-05-06 12:42:26 +01:00
Stefan Miklosovic 3df9dc242c
Merge branch 'cassandra-5.0' into cassandra-6.0 2026-05-05 10:39:00 +02:00
JwahoonKim 1c718ab40f
Fix failing select on system_views.settings for non-string keys
patch by JwahoonKim; reviewed by Jyothsna Konisa, Dmitry Konstantinov, Stefan Miklosovic for CASSANDRA-21348
2026-05-05 10:34:33 +02:00
Dmitry Konstantinov 3e75652232 Avoid unit conversion in DatabaseDescriptor.getMaxValueSize() for every deserializing Cell
patch by Dmitry Konstantinov; reviewed by Francisco Guerrero for CASSANDRA-21295
2026-04-30 23:32:02 +01:00
Alan Wang 8fd2443afc Fix single token batch atomicity with Accord/non-Accord batches by using the batch log
patch by Alan Wang; reviewed by Ariel Weisberg, David Capwell for CASSANDRA-20588
2026-04-29 11:37:10 -07:00
Caleb Rackliffe 98f0a34f07 Merge branch 'cassandra-5.0' into cassandra-6.0
* cassandra-5.0:
  Ensure SAI sends range tombstones to the coordinator for queries on static columns
2026-04-27 13:06:48 -05:00
Caleb Rackliffe 8093c3c9ce Ensure SAI sends range tombstones to the coordinator for queries on static columns
patch by Caleb Rackliffe; reviewed by Andres de la Peña and David Capwell for CASSANDRA-21332
2026-04-27 13:01:00 -05:00
Dmitry Konstantinov ae418d2a1c Avoid CompactionOptions parsing for every read by WithoutPurgeableTombstones
patch by Dmitry Konstantinov; reviewed by Francisco Guerrero for CASSANDRA-21294
2026-04-26 21:59:56 +01:00
Matt Byrd 456590d555
Ensure schema created before 2.1 without tableId in folder name can be loaded in SnapshotLoader
Best effort attempt to get tableId from CFS, fallback to null which
still allows snapshot to be loaded

End result is that nodetool clearsnapshot and listsnapshot function for such
snapshots on restart

In addition to 5.0 patch we move starting SnapshotManager to after TCM is initiliazed.
The consequence of such a move is that cleanup of ephemeral snapshots happens after startup checks pass.

patch by Matt Byrd; reviewed by Stefan Miklosovic, Brandon Williams and Francisco Guerrero for CASSANDRA-21246
2026-04-24 11:49:15 +02:00
Dmitry Konstantinov 37a60594f1 Adjust QueriesTableTest to pass if SEP Threads renaming is disabled
patch by Dmitry Konstantinov; reviewed by Stefan Miklosovic, Caleb Rackliffe for CASSANDRA-21318
2026-04-23 14:32:44 +01:00
Stefan Miklosovic b91b9c23ea
Merge branch 'cassandra-5.0' into cassandra-6.0 2026-04-23 13:44:54 +02:00
Stefan Miklosovic 2837bd7455
Merge branch 'cassandra-4.1' into cassandra-5.0 2026-04-23 13:43:28 +02:00
Stefan Miklosovic 38245bb1e2
Merge branch 'cassandra-4.0' into cassandra-4.1 2026-04-23 13:41:51 +02:00
Stefan Miklosovic 04febb75f1
Fix flaky CompactionTaskTest.testFullyExpiredSSTablesAreNotReleasedPrematurely
This fix was taken from e397aa06b1 (diff-3dbddb89a91055a1394ad89dcca2cd4506f01e40b7d73cb38fb0b0413fb0611a)

patch by Stefan Miklosovic; reviewed by Brandon Williams for CASSANDRA-21329
2026-04-23 13:38:29 +02:00
Caleb Rackliffe 10ca003dd2 Differentiate between legitimate cases where the first entry is the same as the last entry and empty bounds in SSTableCursorWriter#addIndexBlock()
patch by Caleb Rackliffe; reviewed by Nitsan Wakart and Branimir Lambov for CASSANDRA-21255
2026-04-21 11:09:07 -05:00
Stefan Miklosovic bdeed77d17
Introduce minimum_threshold for data resurrection startup check
patch by Stefan Miklosovic; reviewed by Shailaja Koppu, Paulo Motta, Isaac Reath for CASSANDRA-21293
2026-04-21 14:39:57 +02:00
Stefan Miklosovic e193523a06
Update 6.0 and 7.0 branches to reflect their versions across the project.
In 6.0, only rename test/data/serialization/5.1 to 6.0
In 7.0, same plus update edges in UpgradeTestBase

patch by Stefan Miklosovic; reviewed by Dmitry Konstantinov for CASSANDRA-21319
2026-04-21 12:46:11 +02:00
Sam Tunnicliffe 53f188293d Apply changes to gossip state for the local node synchronously, remote peers asynchronously
Patch by Sam Tunnicliffe; reviewed by Alex Petrov for CASSANDRA-21239

Co-authored-by: Alex Petrov <oleksandr.petrov@gmail.com>
2026-04-20 16:27:17 +01:00
Stefan Miklosovic 3f1593064c
Include cassandra-6.0 in build/run-tests.sh and .circleci/config.yml
This is the continuation of CASSANDRA-21319 to make branching of cassandra-6.0 done.
The change in .build/run-ci will start to route jobs to cassandra-6.0 pipeline in pre-ci.

patch by Stefan Miklosovic; reviewed by Brandon Williams for CASSANDRA-21319
2026-04-20 16:56:14 +02:00
mck daadd25fb2
Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  Paxos v2 cassandra.yaml option
2026-04-18 14:14:53 +02:00
mck 9db2e7ac82
Merge branch 'cassandra-4.1' into cassandra-5.0
* cassandra-4.1:
  Paxos v2 cassandra.yaml option
2026-04-18 14:13:21 +02:00
mck 965dd70b23
Paxos v2 cassandra.yaml option
patch by Mick Semb Wever; reviewed by Jon Haddad for CASSANDRA-21316
2026-04-18 14:12:39 +02:00
Dmitry Konstantinov 32162cf544 Change default for cassandra.set_sep_thread_name to false to reduce CPU usage
Add an extra optimization if it is enabled: invoke Thread.setName only if a phase changed

patch by Dmitry Konstantinov; reviewed by Francisco Guerrero, Jyothsna Konisa for CASSANDRA-21089
2026-04-17 13:11:47 +01:00
David Capwell 7b3514d443 Merge branch 'cassandra-5.0' into trunk 2026-04-17 04:57:53 -07:00
David Capwell 39977ce066 Merge branch 'cassandra-4.1' into cassandra-5.0 2026-04-17 04:55:26 -07:00
David Capwell 304386a2d2 Merge branch 'cassandra-4.0' into cassandra-4.1 2026-04-17 04:54:08 -07:00
David Capwell de20468edd generate-eclipse-files missing simulator/harry and missing src class path
patch by David Capwell; reviewed by Aleksey Yeschenko for CASSANDRA-21312
2026-04-17 04:51:54 -07:00
Stefan Miklosovic 001accf8d2
Merge branch 'cassandra-5.0' into trunk 2026-04-17 11:09:37 +02:00
Stefan Miklosovic edf6034113
Merge branch 'cassandra-4.1' into cassandra-5.0 2026-04-17 10:50:25 +02:00
Stefan Miklosovic 5e26f2527d
Merge branch 'cassandra-4.0' into cassandra-4.1 2026-04-17 10:40:04 +02:00
Pedro Gordo 5aec56de3b
Backport CASSANDRA-17810 fix and improve RTBoundValidator error messages
patch by Pedro Gordo; reviewed by Josh McKenzie, Stefan Miklosovic for CASSANDRA-18282
2026-04-17 10:28:16 +02:00
Alan Wang 02352b78d5 Reject writes that modify the same (row, col) more than once in a transaction, to avoid ambiguous cell resolution behaviour
patch by Alan Wang; reviewed by Benedict for CASSANDRA-21136
2026-04-16 19:53:52 +01:00
Brandon Williams b9c4b10eae Merge branch 'cassandra-5.0' into trunk 2026-04-16 10:53:26 -05:00
Brandon Williams da38230235 Revert "ninja: restore doc/antora.yml"
This reverts commit 6243a1a93c.
2026-04-16 10:53:14 -05:00