Commit Graph

15200 Commits

Author SHA1 Message Date
Dmitry Konstantinov 72d53e3919 Implement custom CassandraThread to keep direct references to frequently used thread local objects
patch by Dmitry Konstantinov; reviewed by Benedict Elliott Smith, Stefan Miklosovic for CASSANDRA-21020
2026-06-02 13:56:59 +01:00
Benedict Elliott Smith e278f0cbbc Merge branch 'cassandra-5.0' into cassandra-6.0 2026-06-02 13:48:31 +01:00
Benedict Elliott Smith 1656a9cb01 Merge branch 'cassandra-4.1' into cassandra-5.0 2026-06-02 13:46:18 +01:00
Benedict Elliott Smith 37b85a35b4 Merge branch 'cassandra-4.0' into cassandra-4.1 2026-06-02 13:45:58 +01:00
abeckruiz 863cb651e7 BTree.FastBuilder.reset() fails to clear savedBuffer and savedNextKey, causing ClassCastException and SSTable header corruption during schema disagreement
patch by Andrés Beck-Ruiz, Runtian Liu; reviewed by Zhao Yang, Benedict Elliott Smith for CASSANDRA-21216

Co-authored-by: Runtian Liu <runtian@uber.com>
2026-06-02 10:14:26 +01:00
Dmitry Konstantinov c0999f04d1 Avoid megamorphic call overhead at RandomAccessReader#current
patch by Dmitry Konstantinov; reviewed by Stefan Miklosovic, Francisco Guerrero for CASSANDRA-21399
2026-06-01 12:10:26 +01:00
Dmitry Konstantinov e2dae5e7a0 Enable async GC logging for JDK versions which support it to avoid potential hiccups caused by GC log file I/O blocking
patch by Dmitry Konstantinov; reviewed by Stefan Miklosovic for CASSANDRA-21372
2026-05-31 12:58:27 +01:00
walcp1 bbff4f8d18
Add rowsMutatedPerWriteHistogram metric to track rows mutated per write request
patch by Piotrek Walczak; reviewed by Dmitry Konstantinov, Stefan Miklosovic for CASSANDRA-21320
2026-05-31 11:26:02 +02:00
pwalczak 03450cdea6
Add TotalRowsRead and TotalRowsMutated counters to TableMetrics for accurate per-table row throughput tracking
patch by Piotrek Walczak; reviewed by Dmitry Konstantinov, Stefan Miklosovic for CASSANDRA-21321
2026-05-29 16:20:38 +02:00
Stefan Miklosovic e21461e4e8
Move exception handling of SPI startup checks when iterating over them
patch by Stefan Miklosovic; reviewed by Caleb Rackliffe for CASSANDRA-21409
2026-05-29 09:35:52 +02:00
Dmitry Konstantinov 9198058986 Avoid type lookup in SerializationHeader#getType if schema and SSTable are aligned
patch by Dmitry Konstantinov; reviewed by Francisco Guerrero for CASSANDRA-21402
2026-05-28 15:11:03 +01:00
Dmitry Konstantinov 454f62d45a Replace LongAdder in metric-like logic with ThreadLocalCounter
patch by Dmitry Konstantinov; reviewed by Stefan Miklosovic for CASSANDRA-21400
2026-05-28 14:22:47 +01:00
Dmitry Konstantinov bf711a0fc1 BTreeRow.hasLiveData: avoid Cell iteration if there are no cell tombstones
patch by Dmitry Konstantinov; reviewed by Francisco Guerrero for CASSANDRA-21363
2026-05-26 15:33:28 +01:00
Dmitry Konstantinov 71e8b7c213 Reduce memory allocations in row merge logic
org.apache.cassandra.utils.MergeIterator.Candidate - has Comparator field which is the same for all Candidates under an MergeIterator instance, we can move the field to MergeIterator level. Candidate is 4.8% of all allocations and we can save 20% (~1% of all allocations) of it for JDK 21 with compressed references on.

 switch from ArrayList to array in org.apache.cassandra.db.rows.Row.Merger
The ArrayList iterator costs 0.72% and BulkIterator.Adapter costs 0.35%. So, in total we can save here ~1% of total allocations.

patch by Dmitry Konstantinov; reviewed by Francisco Guerrero for CASSANDRA-21359
2026-05-21 22:28:59 +01:00
Matt Byrd 7927ac4395 Bring back the ability to Optionally avoid hint transfer during decommission (CASSANDRA-17808)
lost due to merge of ae0842372f

patch by Matt Byrd; reviewed by Stefan Miklosovic and Sam Tunnicliffe for CASSANDRA-21341
2026-05-20 16:20:53 +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 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
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
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
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
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
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
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
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
Stefan Miklosovic 88dd2b2483
Increment version to 5.0.9 2026-04-16 17:28:19 +02:00
Francisco Guerrero 7c3dea92cf Avoid permission checks for masked columns when the table doesn't have any
patch by Francisco Guerrero; reviewed by Shailaja Koppu, Caleb Rackliffe, Dmitry Konstantinov for CASSANDRA-21299
2026-04-15 09:13:50 -07:00
C. Scott Andreas a657f4bef9 Reduce allocations and array copies due to buffer resizing in LocalDataResponse during row serialization
patch by C. Scott Andreas; reviewed by Caleb Rackliffe and Dmitry Konstantinov for CASSANDRA-21285

Co-authored-by: C. Scott Andreas <cscotta@users.noreply.github.com>
Co-authored-by: Caleb Rackliffe <calebrackliffe@gmail.com>
2026-04-14 08:49:27 -07:00
Stefan Miklosovic e7fa71efaa
Implement a guardrail for client driver versions
patch by Stefan Miklosovic; reviewed by Andy Tolbert, Bohdan Siryk for CASSANDRA-21146
2026-04-13 10:37:05 +02: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
Dmitry Konstantinov b09bc8b8b0 Avoid capturing lambda allocation in UnfilteredSerializer.deserializeRowBody
The same idea was applied previously in UnfilteredSerializer#serializeRowBody. A state is passed into a consumer function using the existing helper object.

patch by Dmitry Konstantinov; reviewed by Caleb Rackliffe, Francisco Guerrero for CASSANDRA-21289
2026-04-12 12:54:21 +01:00
Dmitry Konstantinov 9bcdf5d746 Avoid Cell iterator for alive rows in MetricsRecording transformation of ReadCommand
patch by Dmitry Konstantinov; reviewed by Francisco Guerrero for CASSANDRA-21288
2026-04-12 09:42:31 +01:00
Francisco Guerrero 536504969c Reuse a single TrackedDataInputPlus instance per UnfilteredSerializer
patch by Francisco Guerrero; reviewed Dmitry Konstantinov, Caleb Rackliffe for CASSANDRA-21296
2026-04-11 10:46:59 -07:00
mck 50bf9b6aae
Generation of in-tree html and manpages documentation
patch by Mick Semb Wever; reviewed by Anthony Grasso for CASSANDRA-17260
2026-04-10 19:36:50 +02:00
Stefan Miklosovic ab80b9e7c8
Merge branch 'cassandra-5.0' into trunk 2026-04-10 10:46:13 +02:00