Commit Graph

31945 Commits

Author SHA1 Message Date
Dmitry Konstantinov ddfdf5d69f Reduce number of scheduledTasks on metric id release in ThreadLocalMetrics
Use a single one-time scheduled task with two tick-tock buffers to recycle metric IDs after a sufficiently long delay.
Use phantom references for ThreadLocalMetrics cleanup ony if it is needed to reduce the references processing overhead.

patch by Dmitry Konstantinov; reviewed by Benedict Elliott Smith for CASSANDRA-21475
2026-07-26 17:46:40 +01:00
koo.taejin 03304bce53
Cache various Enum.values() used in deserialization to avoid per-read array allocation
patch by Koo Taejin; reviewed by Dmitry Konstantinov, Stefan Miklosovic for CASSANDRA-21528
2026-07-26 11:15:22 +02:00
Arvind Kandpal f51c29c196
Add compound primary key example to nodetool getendpoints help
patch by Arvind Kandpal; reviewed by Dmitry Konstantinov, Stefan Miklosovic for CASSANDRA-15904
2026-07-25 09:53:44 +02:00
dhingarkan 564d30ad8e
Fix Accord transaction error message when altering a table
patch by Motoki Unno; reviewed by Dmitry Konstantinov, Stefan Miklosovic for CASSANDRA-20580
2026-07-24 23:22:26 +02:00
Dmitry Konstantinov 0040482e26
Reduce disk space usage by CommitLogSegmentManagerCDCTest
patch by Dmitry Konstantinov; reviewed by Michael Semb Wever for CASSANDRA-21534
2026-07-24 13:13:17 +02:00
Stefan Miklosovic 4066139d3f
ninja: fix wrong default for compression_dictionary_cache_expire in documentation 2026-07-22 14:57:00 +02:00
Stefan Miklosovic fb46c8126f
Merge branch 'cassandra-5.0' into cassandra-6.0 2026-07-22 10:49:05 +02:00
Stefan Miklosovic 1920fffad3
Merge branch 'cassandra-4.1' into cassandra-5.0 2026-07-22 10:48:05 +02:00
Stefan Miklosovic 2293c58805
Merge branch 'cassandra-4.0' into cassandra-4.1 2026-07-22 10:46:34 +02:00
Arvind Kandpal 28ec2730bd
Remove unused cassandra.boot_without_jna from cassandra-env.sh documentation
patch by Arvind Kandpal; reviewed by Stefan Miklosovic for CASSANDRA-20611
2026-07-22 10:45:06 +02:00
Shubhang Singh e9cab5ebb1
Fix broken links in README.asc
patch by Shubhang Singh; reviewed by Stefan Miklosovic for CASSANDRA-20985
2026-07-22 10:32:09 +02:00
Stefan Miklosovic 15a6bac06d
Merge branch 'cassandra-5.0' into cassandra-6.0 2026-07-20 20:45:18 +02:00
Stefan Miklosovic bd345213c1
Merge branch 'cassandra-4.1' into cassandra-5.0 2026-07-20 20:43:56 +02:00
Stefan Miklosovic 1c702382de
Merge branch 'cassandra-4.0' into cassandra-4.1 2026-07-20 20:42:36 +02:00
Jeremiah Jordan 26d7b166ba
Verify extension type before initializing reflectively-loaded classes
Cassandra resolves pluggable extensions by class name from configuration, schema, and tooling
inputs. These names were loaded with an initializing Class.forName(name) and type-checked only
afterward, so the named class ran its static initializer before its type was confirmed. After this
change such classes will be loaded without initialization, verified against the expected interface or
base class, and initialized only through normal use after validation.

A shared FBUtilities.classForNameWithoutInitialization helper and typed
instanceOrConstruct/construct overloads apply this to the configurable extension points loaded by
class name: the authentication, authorization, role-management, network and
internode-authenticator backends, the partitioner, audit logger, configuration loader, seed provider,
snitch, abstract types, secondary and custom indexes, compaction strategy, compressor, replication
strategy, SASI analyzers, key and cache providers, query handler, storage and stream hooks, tracing,
the JMX authorization proxy, MBeans, the monotonic clock, nodetool Sjk, triggers, the
sstableloader and stress class options, and diagnostic event classes (loaded without initialization
and checked against DiagnosticEvent, preserving the InvalidClassException contract and the existing
package restriction).

Regression tests confirm that an invalid-type load is rejected without initializing the target
class, and that valid implementations still resolve.

Hadoop client integration and hard-coded JDK and internal class probes are left unchanged.

patch by Jeremiah Jordan; reviewed by Stefan Miklosovic for CASSANDRA-21525
2026-07-20 20:03:45 +02:00
Caleb Rackliffe 27cc24bc79 Merge branch 'cassandra-5.0' into cassandra-6.0
* cassandra-5.0:
  SAI Component Checksum Validation Should be Segment-Aware
2026-07-18 23:14:02 -05:00
Caleb Rackliffe 4bd98de6ee SAI Component Checksum Validation Should be Segment-Aware
patch by Caleb Rackliffe; reviewed by Francisco Guerrero for CASSANDRA-21516
2026-07-18 22:53:56 -05:00
Stefan Miklosovic fe11477010
Merge branch 'cassandra-5.0' into cassandra-6.0 2026-07-13 14:42:34 +02:00
Stefan Miklosovic 86d7aeb955
Prepare debian changelog for 5.0.9 2026-07-13 14:29:17 +02:00
Stefan Miklosovic 181e7322c5
Merge branch 'cassandra-5.0' into cassandra-6.0 2026-07-13 14:22:18 +02:00
Stefan Miklosovic bccfa7ace4
Merge branch 'cassandra-4.1' into cassandra-5.0 2026-07-13 14:22:03 +02:00
Stefan Miklosovic 2beef3f8af
Prepare debian changelog for 4.1.12 2026-07-13 14:05:05 +02:00
Stefan Miklosovic da87b48f70
Merge branch 'cassandra-5.0' into cassandra-6.0 2026-07-13 13:35:41 +02:00
Stefan Miklosovic 3668f984c2
Merge branch 'cassandra-4.1' into cassandra-5.0 2026-07-13 13:35:29 +02:00
Stefan Miklosovic 3bd656f272
Merge branch 'cassandra-4.0' into cassandra-4.1 2026-07-13 13:35:14 +02:00
Stefan Miklosovic 33c1dbe5b8
Prepare debian changelog for 4.0.21 2026-07-13 13:12:00 +02:00
Dmitry Konstantinov 45f04ad9fa Merge branch 'cassandra-5.0' into cassandra-6.0
* cassandra-5.0:
  Fix flakiness in CommitLogSegmentManagerCDCTest
2026-07-12 22:04:15 +01:00
Dmitry Konstantinov a14a954788 Fix flakiness in CommitLogSegmentManagerCDCTest
Restore deleteCDCRawFiles logic which is present in 6.0 and trunk but probably lost in 5.0 due to merges
Files may be concurrently removed by the CDC management thread, so we tolerate a file that has already been deleted rather than failing the test.
Fix IndexOutOfBoundsException at commitlog.AbstractCommitLogSegmentManager.forceRecycleAll - it is already fixed in 6.0/trunk.
Cleanup test data after run to reduce disk usage.

Patch by Dmitry Konstantinov; reviewed by Michael Semb Wever for CASSANDRA-20091
2026-07-12 21:55:58 +01:00
Maxim Muzafarov 7874fdae57
Forbid ambiguous option/parameter keys in nodetool command hierarchy
patch by Maxim Muzafarov; reviewed by Dmitry Konstantinov for CASSANDRA-21509
2026-07-11 21:31:41 +02:00
Mick Semb Wever 03b9b71d52
Prepare debian changelog for 6.0-alpha2 2026-07-10 16:53:07 +02:00
Stefan Miklosovic 2397d52df7
Depend only on platform-specific Zstd JNI native libraries
patch by Stefan Miklosovic; reviewed by Yifan Cai for CASSANDRA-21483
2026-07-10 11:15:25 +02:00
mck 29a5c3f9c1
Merge branch 'cassandra-5.0' into cassandra-6.0
* cassandra-5.0:
  Fix how ubuntu-test.docker curls to find the latest patch version of each release
2026-07-10 00:14:28 +02:00
mck 208d87513f
Fix how ubuntu-test.docker curls to find the latest patch version of each release
patch by Mick Semb Wever; reviewed Štefan Miklošovič for CASSANDRA-21489
2026-07-10 00:01:05 +02:00
Dmitry Konstantinov 480320f3cf Expose immediately-executed tasks in the queries virtual table
SEPExecutor.maybeExecuteImmediately() runs a task synchronously on the
calling worker thread, nested within the task the worker is already
running. Such immediate tasks were invisible in system_views.queries, which only exposed each worker's primary running task.
This is common on the coordinator path, where a local read or mutation is executed immediately within the enclosing QUERY task.

Each SEPWorker now also tracks an immediate current task, set around
maybeExecuteImmediately(), and exposes it as an additional
DebuggableTaskRunner, so the queries table reports both the enclosing
task and the immediate one as separate rows.

patch by Dmitry Konstantinov; reviewed by Caleb Rackliffe for CASSANDRA-21471
2026-07-09 09:22:10 +01:00
Sam Tunnicliffe 1df3a8cef0 Setup async transformation before making internode request
Patch by Sam Tunnicliffe and Dmitry Konstantinov; reviewed by Sam
Tunnicliffe and Dmitry Konstantinov for CASSANDRA-21384

Co-authored-by: Dmitry Konstantinov <netudima@gmail.com>
2026-07-08 15:35:09 +01:00
Sam Tunnicliffe e1e56e5d5d Add CMS membership directly to ClusterMetadata
Patch by Sam Tunnicliffe; reviewed by Marcus Eriksson for
CASSANDRA-20736
2026-07-06 11:52:18 +01:00
Stefan Miklosovic 15f139b91e
Merge branch 'cassandra-5.0' into cassandra-6.0 2026-07-03 11:08:42 +02:00
arvindksi274-ksolves 464b2e54f4
Support Python 3.12 and 3.13 in cqlsh
patch by Arvind Kandpal; reviewed by Stefan Miklosovic, Michael Semb Wever for CASSANDRA-20997
2026-07-03 11:02:14 +02:00
Caleb Rackliffe bf4437296b Merge branch 'cassandra-5.0' into cassandra-6.0
* cassandra-5.0:
  Make synchronization on VectorMemoryIndex inserts more granular
2026-07-02 15:50:45 -05:00
Caleb Rackliffe 448d98ce31 Make synchronization on VectorMemoryIndex inserts more granular
patch by Caleb Rackliffe; reviewed by David Capwell for CASSANDRA-21160

Co-authored-by: Caleb Rackliffe <calebrackliffe@gmail.com>
Co-authored-by: David Capwell <dcapwell@apache.org>
2026-07-02 15:22:41 -05:00
Mick Semb Wever 5282f81d0a
Fix publishing to ASF Nexus of Accord artefacts when release staging
Also fail the build if any artefacts fail to upload.

 patch by mick semb wever; reviewed by David Capwell for CASSANDRA-21261
2026-07-01 19:25:15 +02:00
Jon Meredith b1f30e94f5 Move long running TCM operations to a longer timout
Replaces the fixed-retry commit loop with deadline-based exponential
backoff for long running CMS commit operations (cms_commit_timeout=1h, 5s-60s jitter)
to allow heavily contended CMS nodes time to commit transforms.

Patch by Jon Meredith and Sam Tunnicliffe; reviewed by Jon Meredith and
Sam Tunnicliffe for CASSANDRA-21453

Co-authored-by: Sam Tunnicliffe <samt@apache.org>
2026-07-01 14:36:28 +01:00
Arvind Kandpal 26d6b4f665
Offline nodetool commands should not print network options in help
- Introduced LocalCommand marker interface to identify commands that execute purely locally without a JMX connection.
- Updated History command to implement LocalCommand.
- Updated CassandraCliHelpLayout to check for LocalCommand instead of calling execution-flow methods, safely suppressing JMX options for offline commands.

patch by Arvind Kandpal; reviewed by Stefan Miklosovic, Maxim Muzafarov for CASSANDRA-20876
2026-06-30 10:23:39 +02:00
Sam Tunnicliffe 896d1d6415 Defer the creation of system_cluster_metadata keyspace until CMS initialization
* Insert the actual PreInitialize entry in the distribute metadata log
  table using a callback after the log is bootstrapped.
* Remove the implicit insert on subsequent commit, i.e. of the Initialize entry
* Enables the full specifics of PreInit to be encoded in the serialized form,
  removing the special casing for the first CMS member and other nodes
* Correctly invalidate cached KeyspaceMetadata when in a pre-initialized state
* Update Host ids in the system.peers_v2 table directly following CMS initialization
* Initialise gossip/local host id after CMS initialization completes
* Clean up CMS initialization errors which occur after the PreInitialize stage

Co-authored-by: Alex Petrov <oleksandr.petrov@gmail.com>
Co-authored-by: Marcus Eriksson <marcuse@apache.org>
2026-06-29 18:09:42 +01:00
samlightfoot 002190748b Support direct I/O for background SSTable writes
Adds an opt-in O_DIRECT write path for background SSTable producers,
bypassing the OS page cache for data that is unlikely to be re-read
soon after being written. Memtable flushes remain buffered.

Enabled via two new YAML knobs:
 - background_write_disk_access_mode: standard (default) | direct
 - direct_write_buffer_size: 1MiB (default; aligned up to FS block
   size, auto-grown to fit a worst-case compressed chunk)

The path is gated by config, table compression being enabled, and an
OperationType allowlist in DataComponent. The allowlist is exhaustive
over OperationType: any new value left unclassified fails static
initialization.

Operations on the DIO path: COMPACTION, MAJOR_COMPACTION,
TOMBSTONE_COMPACTION, ANTICOMPACTION, GARBAGE_COLLECT, CLEANUP,
UPGRADE_SSTABLES, WRITE, STREAM (chunked receiver only), RELOCATE,
UNKNOWN (offline sstablesplit).

Operations off the DIO path:
 - FLUSH (policy: just-flushed data is hot, keep in page cache)
 - SCRUB (correctness: tryAppend needs mark/resetAndTruncate)
 - Zero-Copy Streaming (bypasses DataComponent.buildWriter)
 - Uncompressed writers (only CompressedSequentialWriter has a DIO
   subclass in this change)

StartupChecks fails fast if 'direct' is requested on a platform/FS
that does not support O_DIRECT.

patch by Sam Lightfoot; reviewed by Ariel Weisberg, Dmitry Konstantinov for CASSANDRA-21134
2026-06-24 14:57:46 +01:00
Sam Tunnicliffe 03422edb4b Relax assertion on partitioner instances in SinglePartitionReadCommand
Patch by Sam Tunnicliffe; reviewed by Marcus Eriksson for CASSANDRA-21251
2026-06-24 14:12:51 +01:00
Stefan Miklosovic 3c23da478f
Merge branch 'cassandra-5.0' into cassandra-6.0 2026-06-24 13:49:23 +02:00
Patrick Lee db631675df
Fix AssertionError in hasReplicaWithOngoingRepair when parallel_repair_count > 1
patch by Patrick Lee; reviewed by Paulo Motta, Jaydeepkumar Chovatia for CASSANDRA-21426

Co-authored-by: Paulo Motta <paulo@apache.org>
2026-06-24 13:45:43 +02:00
Stefan Miklosovic 39d18f50d2
Merge branch 'cassandra-5.0' into cassandra-6.0 2026-06-24 13:14:22 +02:00
Stefan Miklosovic 4b821d1bc7
Merge branch 'cassandra-4.1' into cassandra-5.0 2026-06-24 13:12:29 +02:00