Commit Graph

9288 Commits

Author SHA1 Message Date
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
Minal Kyada 4134d72a5a Reduce probability of intermittent failures in WriteWarningsSnapshotTest
Patch by Minal Kyada; reviewed by Sam Tunnicliffe and Caleb Rackliffe
for CASSANDRA-21263
2026-04-15 08:12:03 +01:00
Benedict Elliott Smith 6a665f3ee4 InMemoryRangeIndex
Also Add:
 - txn_graph and txn_graph_all virtual tables for debugging transaction dependency graphs
 - txn_cache virtual table to debug accord cache contents
Also Fix:
 - NPE in AccordDebugKeyspace.TxnOpsTable
 - AccordCoordinatorMetrics latency metrics should use Timer not Histogram
 - OnDiskIndex.readLast
Also Improve:
 - Catchup should run after progress log is started
 - Cancelling AccordTask should early-terminate range scanning
 - Improve RangeTxnScanner description
 - Add ballot to txn tables
 - Add NodeId to logging output

patch by Benedict; reviewed by Alex Petrov for CASSANDRA-21306
2026-04-13 16:01:47 +01: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
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
Stefan Miklosovic ab80b9e7c8
Merge branch 'cassandra-5.0' into trunk 2026-04-10 10:46:13 +02:00
Stefan Miklosovic a03745abd8
Merge branch 'cassandra-4.1' into cassandra-5.0 2026-04-10 10:35:46 +02:00
John Lu 20d19c6627
Harden data resurrection startup check with atomic heartbeat file write with fallback
patch by John Lu; reviewed by Abe Ratnofsky, Chris Lohfink, Stefan Miklosovic for CASSANDRA-21290
2026-04-10 10:14:49 +02:00
Minal Kyada c484fc511a Add tooling to repair system peers tables if inconsistent with cluster metadata
Patch by Minal Kyada; reviewed by Alex Petrov and Sam Tunnicliffe for
CASSANDRA-21187
2026-04-08 20:09:50 +01:00
Paulo Motta 73063437b6 Merge branch 'cassandra-5.0' into trunk 2026-04-08 11:17:44 -04:00
Paulo Motta 9500eb129b Backport Automated Repair Inside Cassandra (CEP-37)
Includes bug fixes and features:
- Improved observability in AutoRepair (CASSANDRA-20581)
- Stop repair scheduler if two major versions detected (CASSANDRA-20048)
- Safeguard Full repair against disk protection (CASSANDRA-20045)
- Stop AutoRepair monitoring thread upon shutdown (CASSANDRA-20623)
- Fix race condition in auto-repair scheduler (CASSANDRA-20265)
- Minimum repair task duration setting (CASSANDRA-20160)
- Preview_repaired auto-repair type (CASSANDRA-20046)
- Gate auto-repair behind cassandra.autorepair.enable JVM property
- Add cassandra.autorepair.check_min_version to gate minimum version enforcement
- Prevent auto-repair from running if any node is below 5.0.7
- Make system_distributed auto-repair schema conditional on feature being enabled
- Add user-friendly errors for disabled auto-repair and schema incompatibility

patch by Paulo Motta; reviewed by Andy Tolbert, Jaydeepkumar Chovatia for CASSANDRA-21138

Co-Authored-By: Andy Tolbert <andy_tolbert@apple.com>
Co-Authored-By: Chris Lohfink <clohfink@netflix.com>
Co-Authored-By: Francisco Guerrero <frankgh@apache.org>
Co-Authored-By: Himanshu Jindal <himanshj@amazon.com>
Co-Authored-By: Jaydeepkumar Chovatia <jchovati@uber.com>
Co-Authored-By: Kristijonas Zalys <kzalys@uber.com>
Co-Authored-By: jaydeepkumar1984 <chovatia.jaydeep@gmail.com>
2026-04-08 10:53:41 -04:00
mck 300c216aa6
ninja trunk patch for CASSANDRA-21202
this diff was supposed to be included in 5f9de8ca13

Rate limit password changes
Introduces property cassandra.role_password_update_interval_in_ms, with default value of 5000.
Logging added when passwords on roles are changed or are rate-limited.

 patch by Mick Semb Wever; reviewed by Doug Rohrer, Jeremiah Jordan for CASSANDRA-21202
2026-04-08 15:09:58 +02:00
Dmitry Konstantinov 1a9ab95c20 Fix a removed TTLed row re-appearance in a materialized view after a cursor compaction
Add an implementation of isExpired to ReusableLivenessInfo, before the change the method implementation was interited from an interface and always returned false, so livenessInfo().supersedes(...) did not work properly.

patch by Dmitry Konstantinov; reviewed by Branimir Lambov, Nitsan Wakart for CASSANDRA-21152
2026-04-01 18:58:02 +01:00
Sunil Ramchandra Pawar 157e8808f9 Add range delete support to AST-based fuzz tests
patch by Sunil Ramchandra Pawar; reviewed by Caleb Rackliffe and David Capwell for CASSANDRA-20949
2026-04-01 11:45:54 -05:00
Caleb Rackliffe 2184d5cc6b Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  ninja-fix: remove SSTable format and disk access mode randomization
2026-03-27 12:07:39 -05:00
ssekaran 32d541557c ninja-fix: remove SSTable format and disk access mode randomization
patch by Shruti Sekaran; reviewed by Caleb Rackliffe and Francisco Guerrero
2026-03-27 11:50:01 -05:00
Matt Byrd 989901e4e0
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.

patch by Matt Byrd; reviewed by Stefan Miklosovic, Brandon Williams and Francisco Guerrero for CASSANDRA-21173
2026-03-24 10:36:30 +01:00
Stefan Miklosovic a54d227c86
Rework ZSTD dictionary compression logic to create a trainer per training
patch by Stefan Miklosovic; reviewed by Yifan Cai for CASSANDRA-21209
2026-03-23 18:11:51 +01:00
mck 6590cb5aaf
Change trunk from 5.1 to 6.0
patch by Mick Semb Wever; reviewed by Dmitry Konstantinov for CASSANDRA-21243
2026-03-21 22:55:40 +01:00
Sam Tunnicliffe 5c07c122be Ninja: increase heap size in LocalRangesAllSettledBench
Follow up to 4454ab8699 (CASSANDRA-21144)
2026-03-19 10:27:57 +00:00
mck 2ce273a118
ninjafix – CassandraRoleManagerTest (CASSANDRA-21202) 2026-03-17 22:07:03 +01:00
Caleb Rackliffe 0bbddf610b Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  Refactor SAI ANN query execution to use score ordered iterators for correctness and speed
2026-03-17 15:35:08 -05:00
Michael Marshall 23ec1c8a3f Refactor SAI ANN query execution to use score ordered iterators for correctness and speed
Rewrites ANN search query execution logic to more efficiently merge graph search results using
similarity score-ordered (descending) iterators to merge segments efficiently. Allows for reduced memory
consumption during queries, reduced impact of overwrites and tombstones, selective re-querying of
minimally necessary graphs, and reduced shuffling of PrimaryKey objects.

patch by Michael Marshall; reviewed by Caleb Rackliffe and Michael Semb Wever for CASSANDRA-20086
2026-03-17 15:14:13 -05:00
Sam Tunnicliffe 4454ab8699 Improve writePlacementsAllSettled performance in large clusters with many ongoing range movements
Only inflight MSOs which affect the local node need to be
applied to determine the settled local ranges

Patch by Sam Tunnicliffe; reviewed by Marcus Eriksson for
CASSANDRA-21144
2026-03-17 11:11:22 +00:00
mck a2e55684de
Merge branch 'cassandra-4.1' into cassandra-5.0
* cassandra-4.1:
  Rate limit password changes
2026-03-16 22:04:58 +01:00
mck 1cbdef6272
Merge branch 'cassandra-4.0' into cassandra-4.1
* cassandra-4.0:
  Rate limit password changes
2026-03-16 22:04:01 +01:00
mck 17c573f800
Rate limit password changes
Introduces property cassandra.role_password_update_interval_in_ms, with default value of 5000.
Logging added when passwords on roles are changed or are rate-limited.

 patch by Mick Semb Wever; reviewed by Doug Rohrer, Jeremiah Jordan for CASSANDRA-21202
2026-03-16 22:02:41 +01:00
Caleb Rackliffe a78504f541 Revert to making IdentityHashCode#applyAsInt() synchronized for JDK 21
patch by Caleb Rackliffe; reviewed by Dmitry Konstantinov for CASSANDRA-21213
2026-03-16 15:56:47 -05:00
Francisco Guerrero 5bd164477f Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  Disallow binding an identity to a superuser when the user is a regular user
2026-03-16 13:40:31 -07:00
Francisco Guerrero b584a43597 Disallow binding an identity to a superuser when the user is a regular user
patch by Francisco Guerrero; reviewed by Mick Semb Wever for CASSANDRA-21219
2026-03-16 13:32:20 -07:00
Sam Tunnicliffe 50c314eaec Consensus groups for range movements can omit future owners of merging ranges
* Expand affected ranges to include removals
* Don't create waiters for replica groups of future ranges not yet in placements

Patch by Sam Tunnicliffe; reviewed by Marcus Eriksson for
CASSANDRA-21142
2026-03-16 15:15:23 +00:00
samlightfoot ea3d8a3d31 Wire compaction_read_disk_access_mode through cursor-based compaction
Make MemoryUtil.clean() throw for slices/duplicates that cannot be cleaned and fix mmap cleanup
Parameterise main compaction tests for cursor/iterator and buffered/direct combinations

patch by Sam Lightfoot; reviewed by Ariel Weisberg, Dmitry Konstantinov for CASSANDRA-21147
2026-03-16 11:19:05 +00:00
mck 076c6f1136
Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  Fix ConcurrentModificationException in compaction garbagecollect
2026-03-13 22:35:30 +01:00
Joaquin Casares 2b1c8395eb
Fix ConcurrentModificationException in compaction garbagecollect
patch by Joaquin Casares; reviewed by Mick Semb Wever for CASSANDRA-21065
2026-03-13 22:32:06 +01:00
Sunil Ramchandra Pawar 8d325d50ed Allow value/element indexing on frozen collections in SAI
patch by Sunil Ramchandra Pawar; reviewed by Caleb Rackliffe, David Capwell, and Andres de la Peña for CASSANDRA-18492
2026-03-13 11:47:23 -05:00
Abhijeet Dubey 88b373a631 Add tool to offline dump cluster metadata and the log
Patch by Abhijeet Dubey; reviewed by Sam Tunnicliffe and marcuse for CASSANDRA-21129
2026-03-13 15:21:19 +01: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
Caleb Rackliffe 87d79f30a0 Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  Randomize Memtable type/allocation type and SSTable format in Simulator tests
2026-03-11 16:09:47 -05:00
Shruti Sekaran ddfba19f9e Randomize Memtable type/allocation type and SSTable format in Simulator tests
patch by Shruti Sekaran; reviewed by Caleb Rackliffe and Francisco Guerrero for CASSANDRA-21177
2026-03-11 16:05:10 -05:00
Stefan Miklosovic 5519df34cb
Merge branch 'cassandra-5.0' into trunk 2026-03-05 16:13:42 +01:00
Stefan Miklosovic e0ac46c5a7
Merge branch 'cassandra-4.1' into cassandra-5.0 2026-03-05 16:10:01 +01:00
Stefan Miklosovic b41fb1f71a
Merge branch 'cassandra-4.0' into cassandra-4.1 2026-03-05 16:05:39 +01:00
Stefan Miklosovic 547187a229
Obsolete expired SSTables before compaction starts
patch by Stefan Miklosovic; reviewed by Branimir Lambov for CASSANDRA-19776
2026-03-05 16:03:13 +01:00
Maxim Muzafarov c9fe399b06
Move -pp/--print-port from NodetoolCommand to per-command Mixin
Patch by Maxim Muzafarov; reviewed by Stefan Miklosovic for CASSANDRA-20790
2026-03-02 21:16:03 +01:00
Stefan Miklosovic ce983cb89c
Harden the possible range of values for max dictionary size and max total sample size for dictionary training
patch by Stefan Miklosovic; reviewed by Yifan Cai for CASSANDRA-21194
2026-03-02 15:57:22 +01:00
Stefan Miklosovic 43a022c4fc
Implement a guardrail ensuring that minimum training frequency parameter is provided in ZstdDictionaryCompressor
patch by Stefan Miklosovic; reviewed by Yifan Cai for CASSANDRA-21192
2026-03-02 15:52:46 +01:00
Stefan Miklosovic a2d78be028
Replace manual referencing with ColumnFamilyStore.selectAndReference when training a dictionary
patch by Stefan Miklosovic; reviewed by Yifan Cai for CASSANDRA-21188
2026-03-02 15:50:20 +01:00
samlightfoot 38f7789534 Fix flaky InProgressSequenceCoordinationTest by increasing request_timeout and ensuring background threads are joined before test cleanup
Patch by Sam Lightfoot; reviewed by Dmitry Konstantinov and Sam
Tunnicliffe for CASSANDRA-21189
2026-02-27 17:01:22 +00:00
Aparna Naik a7695a6220 Forbid nodes upgrading to a version which cannot read existing log entries
Patch by Aparna Naik; reviewed by Marcus Eriksson and Sam Tunnicliffe
for CASSANDRA-21174
2026-02-27 14:46:14 +00:00
Dmitry Konstantinov 5b819f94fd Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  Dynamically skip sharding L0 when SAI Vector index present
2026-02-26 12:51:43 +00:00
Michael Marshall 5172a0df3b Dynamically skip sharding L0 when SAI Vector index present
This is a partial solution to IllegalStateException thrown by VectorPostings. It works by using a single shard at L0 when a vector index is present. As noted in the jira ticket, there are edge cases that may still produce errors, notably the case where there are multiple data directories.
The key trade offs here are related to the time complexity for search. Since graph search is log(n), and searching m graphs is m * log(n), we see better search performance by building bigger graphs which is essentially log(m * n). We could pre-shard, which comes at a cost of increased search time complexity.

patch by Michael Marshall,Dmitry Konstantinov; reviewed by Caleb Rackliffe,Dmitry Konstantinov,Michael Semb Wever for CASSANDRA-19661

Co-authored-by: Michael Marshall <mmarshall@apache.org>
Co-authored-by: Dmitry Konstantinov <netudima@gmail.com>
2026-02-26 12:45:05 +00:00
Stefan Miklosovic 9303ca04de
Introduce a check for minimum time to pass to train or import a compression dictionary from the last one
patch by Stefan Miklosovic; reviewed by Yifan Cai for CASSANDRA-21179
2026-02-26 09:43:40 +01:00
Paulo Motta a9ee34b62d Add compaction strategy override via system properties
Introduce the ability to override compaction strategy for specific keyspaces
and tables at startup via two new system properties:
- cassandra.override_compaction.entities: comma-separated list of keyspaces
  and keyspace.table pairs (e.g. "ks1,ks2.tbl1,ks3.tbl2")
- cassandra.override_compaction.params: JSON compaction parameters to apply

Patch by Paulo Motta; Reviewed by Jaydeepkumar Chovatia for CASSANDRA-21169
2026-02-20 11:49:10 -05:00
Maxim Muzafarov b7eb323c5a
Fix nodetool sjk dropping all arguments after the first one
Patch by Maxim Muzafarov; reviewed by Dmitry Konstantinov for CASSANDRA-21009
2026-02-20 11:03:12 +01:00
Stefan Miklosovic 0be5ffa8c8
Introduce created_at column to system_distributed.compression_dictionaries
patch by Stefan Miklosovic; reviewed by Yifan Cai for CASSANDRA-21178
2026-02-19 03:53:19 +01:00
Dmitry Konstantinov eee06be567 Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  Improve diagnostics for JUnit tests which crashed or timed out on Jenkins
2026-02-18 23:10:39 +00:00
Dmitry Konstantinov 8303257297 Improve diagnostics for JUnit tests which crashed or timed out on Jenkins
Add test container memory events printing to check if Linux OOM killer was active
Fix thread dump printing on junit test timeout
Process.pid() API is available since JDK9

patch by Dmitry Konstantinov; reviewed by Michael Semb Wever for CASSANDRA-21172
2026-02-18 22:53:39 +00:00
Dmitry Konstantinov 52d3b23df2 junit fix: avoid creating of thousands of threads by MatcherResponse when many messages are handled using MockMessagingSpy
Too many threads can lead to OOM, so new Thread is replaced with an executor
spin wait is added to HintsServiceTest.testPageSeek to avoid flaky NPE (HintsStore is populated in an async way)

patch by Dmitry Konstantinov; reviewed by Brandon Williams for CASSANDRA-21166
2026-02-18 22:34:03 +00:00
Stefan Miklosovic 3fc830a19c
Be able to detect and remove orphaned compression dictionaries
patch by Stefan Miklosovic; reviewed by Yifan Cai for CASSANDRA-21157
2026-02-17 11:07:49 +11:00
samlightfoot a3a834ad31 Reduce memory footprint of IndexSummaryTest large summary tests
The runtime overflow guard test (testLargeIndexSummary) required ~2 GiB of
off-heap memory to trigger the Integer.MAX_VALUE boundary in
IndexSummaryBuilder.maybeAddEntry. SafeMemoryWriter's 50% buffer growth
strategy caused ~5 GiB peak memory during reallocation (old + new buffer),
exceeding CI medium node limits (3.5-5 GB).

Extract the hardcoded Integer.MAX_VALUE threshold in IndexSummaryBuilder
into a @VisibleForTesting field (maxEntriesSize), allowing the test to
exercise the same guard logic with a 2 MB threshold instead. Rename both
large summary tests to reflect their distinct code paths: runtime truncation
vs constructor-initiated downsampling.

patch by Sam Lightfoot; reviewed by Brandon Williams,Dmitry Konstantinov,Michael Semb Wever for CASSANDRA-20599
2026-02-13 13:05:50 +00:00
samlightfoot ee124d2658 Fix flaky test2DeleteRangeWithOverlapingBoundAndSameTimestampCompaction
The two deletes use the same CQL timestamp, so compaction should merge
their overlapping range tombstones into a single open/close pair (no
boundary markers). However, DeletionTime also includes local_delete_time
(wall-clock seconds), which may differ between deletes if a second
boundary is crossed during the flush. Differing local_delete_time causes
the merger to treat them as distinct deletions, producing boundary
markers instead. Using executeInternalWithNowInSec with a fixed nowInSec
ensures both deletes get identical DeletionTime values.

patch by Sam Lightfoot; reviewed by Dmitry Konstantinov,Brandon Williams for CASSANDRA-21163
2026-02-12 18:06:15 +00:00
Jaydeepkumar Chovatia 4ada37e940 No need to evict already prepared statements, as it creates a race condition between multiple threads
patch by Jaydeepkumar Chovatia; reviewed by Alex Petrov for CASSANDRA-17401
2026-02-10 17:07:22 -08:00
jaydeepkumar1984 077b7ebe22 No need to evict already prepared statements, as it creates a race condition between multiple threads
patch by Jaydeepkumar Chovatia; reviewed by Alex Petrov for CASSANDRA-17401
2026-02-10 16:53:19 -08:00
Jaydeepkumar Chovatia 4a2bf29a34 ninja: ant check after CASSANDRA-17401 landed 2026-02-08 11:07:51 -08:00
Jaydeepkumar Chovatia d90fe76c8e No need to evict already prepared statements, as it creates a race condition between multiple threads
patch by Jaydeepkumar Chovatia; reviewed by Alex Petrov for CASSANDRA-17401
2026-02-08 10:49:16 -08: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
Stefan Miklosovic 3dd460bf34
Remove traces of sampling and auto training for Zstd dictionary compression
This is unnecessary code as the current implementation of CEP-54 is not implemeting / exercising these features.

patch by Stefan Miklosovic; reviewed by Yifan Cai for CASSANDRA-21154
2026-02-05 22:27:18 +11:00
samlightfoot 6f5fe8c06d Add Direct IO support for compaction reads
This change adds support for using O_DIRECT (direct I/O) when reading SSTables
during compaction. Direct I/O bypasses the OS page cache, which can be beneficial
for compaction workloads where data is typically read once and not accessed again
soon after.

Key changes:
- Add DiskAccessMode.direct option for scan operations
- Introduce DirectThreadLocalByteBufferHolder and DirectThreadLocalReadAheadBuffer
  for aligned buffer management required by O_DIRECT
- Add ByteBufferHolder interface to abstract buffer management
- Modify FileHandle to support building direct I/O readers via toBuilder()
- Add startup check to verify Direct IO support on configured data directories
- Enable read-ahead for uncompressed data in Direct CompressedChunkReader
- Move direct IO support logic into FileHandle (from SSTableReader)
- Add comprehensive tests for direct I/O chunk readers and buffer holders

patch by Sam Lightfoot; reviewed by Ariel Weisberg and Maxwell Guo for CASSANDRA-19987
2026-02-04 12:40:42 -05:00
Josh McKenzie 940739a488 Add JDK21 support
Patch by Josh McKenzie; reviewed by Mick Semb Wever and Ekaterina Dimitrova for CASSANDRA-18831

Co-authored-by: Aleksey Yeschenko
Co-authored-by: Achilles Benetopoulos
Co-authored-by: Mick Semb Wever
2026-02-02 12:39:05 -05:00
arvindksi274-ksolves 4184e759de Fix CompactionHistorySystemTableUpgradeTest test expectation for legacy compaction history
patch by Arvind Kandpal; reviewed by Dmitry Konstantinov, Maxwell Guo for CASSANDRA-21151
2026-02-02 08:40:55 +00:00
arvindksi274-ksolves d1b4ddc32a
Fix JMXFeatureTest failure due to disabled AsyncProfiler
patch by Arvind Kandpal; reviewed by Jyothsna Konisa, Stefan Miklosovic for CASSANDRA-21135
2026-02-02 16:51:27 +11:00
nickbar01234 585f89bb42
Support custom StartupCheck implementations via SPI
patch by Nick Bar; reviewed by Stefan Miklosovic, Jyothsna Konisa for CASSANDRA-21093

Co-authored-by: Stefan Miklosovic <smiklosovic@apache.org>
2026-02-02 10:12:37 +11:00
Dmitry Konstantinov 1f220921dc Fix flakiness of AuditLoggerAuthTest and CQLUserAuditTest by awaiting of default superuser role creation
patch by Dmitry Konstantinov; reviewed by Michael Semb Wever for CASSANDRA-19165
2026-02-01 17:57:30 +00:00
arvindksi274-ksolves 350c83dc15 Fix CI regression in CompactionHistoryTest by enforcing STCS
patch by Arvind Kandpal; reviewed by Dmitry Konstantinov, Maxwell Guo for CASSANDRA-21145
2026-01-31 16:01:12 +00:00
Stefan Miklosovic 6bf598dcde
Make sstableexpiredblockers support human-readable output with SSTable sizes
patch by Stefan Miklosovic; reviewed by Brad Schoening, Rishabh Saraswat for CASSANDRA-20448
2026-01-31 20:57:23 +11:00
Mick Semb Wever cd707ba67d
Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  Implement microbench test target type
2026-01-27 20:22:38 +01:00
David Capwell 0fa26aa75d Fix flakey tests due to tests updating SSTable format dynamically
patch by David Capwell; reviewed by Jyothsna Konisa, Nitsan Wakart for CASSANDRA-21130
2026-01-27 09:55:21 -08:00
Mick Semb Wever b3ee9713f8
Implement microbench test target type
Add microbench-test target for quick test run
 Unify declaration and add assertions on target types
 Fix dirname usages for macos
 Parameter for docker_timeout
 Add more jmh class ignores (that are broken)
 Add disableResume() and better host debug to Jenkinsfile

 patch by Mick Semb Wever; reviewed by Dmitry Konstantinov for CASSANDRA-18873
2026-01-27 11:31:17 +01:00
Maxwell Guo 21c4726b57 ninja: fix import check style problem for CASSANDRA-20081 2026-01-26 20:00:09 +08:00
Maxwell Guo 6d60102422 Enhance nodetool compactionhistory to report compaction type and strategy
patch by Arvind Kandpal; reviewed by Maxwell Guo and Jyothsna Konisa for CASSANDRA-20081
2026-01-26 18:39:40 +08:00
Paulo Motta afa55123c8 Fix initial auto-repairs skipped by too soon check
patch by Paulo Motta; reviewed by Jaydeepkumar Chovatia for CASSANDRA-21115
2026-01-23 11:32:25 -05:00
Paulo Motta 099f376635 Merge branch 'cassandra-5.0' into trunk 2026-01-22 14:19:32 -05:00
Paulo Motta 45afd18a13 Automatically disable zero-copy streaming for legacy sstables
Legacy Cassandra 3.x sstables use an old bloom filter format that is
incompatible with zero-copy streaming in Cassandra 5.0+. This patch
automatically detects sstables with the old bloom filter format
(pre-4.0) and disables zero-copy streaming for them, allowing legacy
sstables to be loaded via sstableloader without requiring manual flags.

The fix adds a version check in CassandraOutgoingFile.computeShouldStreamEntireSSTables()
that calls descriptor.version.hasOldBfFormat() to detect legacy sstables.

patch by Paulo Motta; reviewed by Stefan Miklosovic for CASSANDRA-21092
2026-01-22 14:16:16 -05:00
ireath 7fe688b000 CASSANDRA-21024: Add configuration to disk usage guardrails to stop writes across all replicas of a keyspace when any node replicating that keyspace exceeds the disk usage failure threshold.
This commit adds a new configuration, data_disk_usage_keyspace_wide_protection_enabled, which ensures that if any node which replicates a given keyspace is full, all writes to that keyspace are blocked.

patch by Isaac Reath; reviewed by Stefan Miklosovic, Paulo Motta for CASSANDRA-20124

Closes #4547
2026-01-21 16:53:54 -05:00
Arvind Kandpal bad0a10343 BETWEEN where token(Y) > token(Z) returns wrong answer
patch by Arvind Kandpal; reviewed by Caleb Rackliffe, David Capwell for CASSANDRA-20154
2026-01-21 09:33:27 -08:00
Jaydeepkumar Chovatia aa4da838ec ninja: ant check after CASSANDRA-17401 landed 2026-01-18 21:12:35 -08:00
Jaydeepkumar Chovatia a06df099f4 No need to evict already prepared statements, as it creates a race condition between multiple threads
patch by Jaydeepkumar Chovatia; reviewed by Alex Petrov for CASSANDRA-17401
2026-01-18 20:11:35 -08:00
Alan Wang 8974fdb821 Include Level information for UnifiedCompactionStrategy in nodetool tablestats output
Patch by Alan Wang, reviewed by Jyothsna Konisa and marcuse for CASSANDRA-20820
2026-01-13 14:12:38 +01:00
Stefan Miklosovic a3c40f1a67
ninja: skip AsyncProfiler tests in CI when kernel parameters are not right
Based on the official documentation here (1), AsyncProfiler works best with these kernel parameters.
Not all CI environments have them set. That would fail the tests which run the startup check
if kernel parameters are not like that.

It might be empirically observed that some AsyncProfiler functionality works even without these
kernel parameters, it might be investigated in follow-up work if we should not relax these conditions a bit.

(1) https://github.com/async-profiler/async-profiler/blob/master/docs/GettingStarted.md#before-profiling
2026-01-13 12:26:47 +01:00
Yaman Ziadeh 7c3c3a1d86 Initial async-profiler Nodetool implementation
patch by Yaman Ziadeh, Bernardo Botella, Stefan Miklosovic; reviewed by Dmitry Konstantinov, Jyothsna Konisa for CASSANDRA-20854
2026-01-12 15:02:13 -08:00
Nivy Kani bc9773ea0a Fix non-determinism of repair fuzz tests by passing randomizer to RetryStrategy
patch by Nivy Kani; reviewed by David Capwell, Jyothsna Konisa for CASSANDRA-21087
2026-01-09 16:17:43 -08:00
David Capwell 86e024b416 NPE when trying to use CAS on local system tables
patch by David Capwell; reviewed by Ariel Weisberg for CASSANDRA-21112
2026-01-09 16:13:01 -08:00
Nivy Kani 386183fce1 Fix off-by-one bug in exponential backoff for repair retry config
patch by Nivy Kani; reviewed by David Capwell, Jyothsna Konisa for CASSANDRA-21102
2026-01-09 10:15:09 -08:00
Stefan Miklosovic 98ec8970e1
Move training parameters for Zstd dictionary compression to CQL
It is also possible to override them via nodetool if necessary.

This patch also fixes the computation of sampling ratio to not lose the precision.

patch by Stefan Miklosovic; reviewed by Jyothsna Konisha, Yifan Cai for CASSANDRA-21078
2026-01-07 16:21:47 +01:00
Maxim Muzafarov 3dc33de6ea
Organize imports and standartize import order across entire codebase
Patch by Maxim Muzafarov; Reviewed by Michael Semb Wever for CASSANDRA-17925
2025-12-30 22:34:14 +01:00
Stefan Miklosovic 3c69bd2367
ninja: fix tests after CASSANDRA-21074 landed 2025-12-22 13:02:40 +01:00
Stefan Miklosovic b08da36770
Change the eager reference counting of compression dictionaries to lazy
patch by Stefan Miklosovic; reviewed by Yifan Cai, Jyothsna Konisa for CASSANDRA-21074
2025-12-20 15:03:25 +01:00
Nitsan Wakart ff78780d61 Add cursor based optimized compaction path
Adds a compaction implementation utilizing new fixed allocation SSTable reader/writer implementations, and other purpose built code, leading to improved efficiencies.

patch by Nitsan Wakart; reviewed by Branimir Lambov, Dmitry Konstantinov for CASSANDRA-20918
2025-12-19 12:45:25 -05:00
Sam Tunnicliffe ad3f0e8f41 Ensure that gossip state for LEFT nodes is expired eventually
By default the expiry time is calculated on each peer independently. It can be
made to converge by disabling gossip quarantine using the configuration setting
gossip_quarantine_disabled or via a hotprop on GossiperMBean.

Patch by Sam Tunnicliffe; reviewed by Marcus Eriksson for CASSANDRA-21035
2025-12-18 10:04:17 +00:00