Commit Graph

616 Commits

Author SHA1 Message Date
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
Dmitry Konstantinov 0d2160631a Avoid ByteBuffer wrapping in cql3.selection.Selector.InputRow to reduce memory allocation rate
Current ReadCommand logic returns ArrayCell values, so when we retrieve a cell value as a ByteBuffer we allocate ByteBuffer instances

patch by Dmitry Konstantinov; reviewed by Francisco Guerrero for CASSANDRA-21362
2026-06-04 19:19:36 +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
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
jkonisa 03dc5a061c
Update cassandra-stress to support TLS 1.3 by default by auto-negotiation
This is a backport of 9d89b47c68 to cassandra-5.0 branch.

patch by Rishabh Saraswat; reviewed by Jyothsna Konisa, Brad Schoening for CASSANDRA-21007
2026-04-02 16:52:53 +02: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
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
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
Rishabh Saraswat 9d89b47c68 Update cassandra-stress default cipher suites to support tls 1.3
patch by Rishabh Saraswat; reviewed by Jyothsna Konisa, Brad Schoening for CASSANDRA-21007
2025-12-15 13:04:54 -08:00
Dmitry Konstantinov 8a72868066 Use byte[] directly in QueryOptions instead of ByteBuffer and convert them to ArrayCell instead of BufferCell.
Additionally replace List with array for bind values (we know the size in advance during a decoding), so in total: List<List> is replaced with byte[][] QueryOptions classes support both ways to get values now: using an old API with ByteBuffer and a new API with byte[].

Patch by Dmitry Konstantinov; reviewed by Michael Semb Wever for CASSANDRA-20166
2025-12-15 10:58:43 +00:00
Marcus Eriksson e1e39b074a Refactor the way we check if a transformation is allowed to be committed during upgrades
Patch by marcuse and Sam Tunnicliffe; reviewed by Sam Tunnicliffe for CASSANDRA-21043

Co-authored-by: Sam Tunnicliffe <samt@apache.org>
2025-12-01 10:39:25 +01:00
Raymond Huffman a52d2ce783
Update jackson-dataformat-yaml to 2.19.2 and snakeyaml to 2.1
This is backport of CASSANDRA-18875 to 5.0 where we upgrade 2.1 of snakeyaml and bump jackson-dataformat-yaml to 2.19.2.

The change in trunk (5.1) is about excluding Jackson dependencies from wiremock so 2.19.2 of Jackson is used everywhere in test as well,
otherwise there would be Jackson annotations of 2.13.4 used.

patch by Raymond Huffman; reviewed by Mick Semb Wever and Stefan Miklosovic for CASSANDRA-18875

Co-authored-by: Griffin Davis <gcd@ibm.com>
2025-09-19 13:29:05 +02:00
Stefan Miklosovic 1e5c07af32
Merge branch 'cassandra-5.0' into trunk 2025-07-31 09:22:44 +02:00
Stefan Miklosovic 96a6a7bc12
Do not source cassandra-env.sh unnecessarily in nodetool and other tooling
Sourcing cassandra-env.sh in bin/nodetool just to pick JMX_PORT from there
has undesirable side-effect of not being able to run nodetool when
MAX_HEAP_SIZE in cassandra-env.sh is uncommented.

patch by Stefan Miklosovic; reviewed by Dmitry Konstantinov, Michael Semb Wever for CASSANDRA-20745
2025-07-31 09:15:37 +02:00
Maxim Muzafarov 94b251f3ce
Migrate all nodetool commands from airline to picocli
Replace io.airlift:airline dependency with info.picocli:picocli across
all nodetool command implementations. This migration includes:

- Convert 160+ nodetool command classes from airline to picocli
- Add AbstractCommand base class for commands and utility methods
- Add NodetoolCommand top-level class for the cli utility
- Update all command classes to use @Command, @Option, and @Parameters
- Add plain text files to test command help output
- Add mock test classes for improved test coverage and parse validation
- Modify test infrastructure to work with picocli-based commands
- Add new layouts for cli formatting to preserve backwards compatibility

The migration maintains backward compatibility while providing improved
command-line parsing, better help system, and more robust argument
validation through picocli enhanced features.

patch by Maxim Muzafarov; reviewed by Caleb Rackliffe, Dmitry Konstantinov, Stefan Miklosovic for CASSANDRA-17445
2025-07-26 18:19:18 +02:00
Andy Tolbert f80a234d1e Migrate sstableloader code to its own tools directory and artifact
As part of a broader effort to decouple java driver code from the
server code, this moves sstableloader to its own tools directory.

As sstableloader is also used as a library (CASSANDRA-10637), added
a new artifact 'cassandra-sstableloader' that will get deployed to
maven along with 'cassandra-all'.

While I expect this is likely a niche use case, this will allow users
to continue using BulkExport as a library.

Moves sstableloader-specific targets to its own build.xml in
tools/sstableloader/build.xml.

Also updates IDE project files and circleci to utilize new
sstableloader-specific targets.

patch by Andy Tolbert; reviewed by Stefan Miklosovic and Mick Semb Wever for CASSANDRA-20328
2025-05-18 12:35:52 -05:00
maulin-vasavada bcea8f5815
Refactor EncryptionOptions to use client / server encryption options builders
patch by Maulin Vasavada; reviewed by Maxwell Guo, Stefan Miklosovic for CASSANDRA-20404
2025-04-23 09:27:09 +02:00
Benedict Elliott Smith 8de3dfc711 CASSANDRA-18365: Protocol fixes 2025-04-17 11:59:49 -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
Caleb Rackliffe df96494801 Merge branch 'cassandra-5.0' into trunk
* cassandra-5.0:
  Support null column value tombstones in FQL batch statements
2025-03-06 11:23:07 -06:00
Caleb Rackliffe aee3c7531b Merge branch 'cassandra-4.1' into cassandra-5.0
* cassandra-4.1:
  Support null column value tombstones in FQL batch statements
2025-03-06 11:16:57 -06:00
Caleb Rackliffe 985e121404 Merge branch 'cassandra-4.0' into cassandra-4.1
* cassandra-4.0:
  Support null column value tombstones in FQL batch statements
2025-03-06 11:09:01 -06:00
Caleb Rackliffe f375a3914f Support null column value tombstones in FQL batch statements
patch by Caleb Rackliffe; reviewed by Abe Ratnofsky for CASSANDRA-20397
2025-03-06 10:56:49 -06:00
Stefan Miklosovic f74b1786e3
Merge branch 'cassandra-5.0' into trunk 2025-01-29 16:21:54 +01:00
Stefan Miklosovic 3f01635ce1
Merge branch 'cassandra-4.1' into cassandra-5.0 2025-01-29 16:19:54 +01:00
Stefan Miklosovic 8515bd9918
Merge branch 'cassandra-4.0' into cassandra-4.1 2025-01-29 16:12:34 +01:00
Stefan Miklosovic d6f623b308
Fix preparation of CLASSPATH in tools/bin/cassandra.in.sh for development builds
patch by Stefan Miklosovic; reviewed by Michael Semb Wever for CASSANDRA-20257
2025-01-29 16:08:39 +01:00
Branimir Lambov 54e4688069 Parallelized UCS compactions
patch by Branimir Lambov, reviewed by Sylvain Lebresne for CASSANDRA-18802
2024-12-11 17:37:09 +02:00
Stefan Miklosovic f410b0fa0b
Consolidate all snapshot management to SnapshotManager
patch by Stefan Miklosovic; reviewed by Francisco Guerrero for CASSANDRA-18111
2024-12-11 02:51:29 +01:00
Ata İlhan Köktürk 46b36f23cd
Explicitly localize strings to Locale.US for internal implementation
There is inconsistent usage of toLowerCase/toUpperCase methods in the codebase.
Somewhere we already use Locale.US, somewhere not. That might cause various issues in runtime
as shown in CASSANDRA-19953 ticket when an environment Cassandra runs in has different locale from expected.
In this patch, all such method calls explicitly set their locale to Locale.US. This patch also contains
a checkstyle rule which fails the compilation if toLowerCase or toUpperCase is used.
We prefer calls to methods in LocalizeString class which use US locale.

patch by Ata İlhan Köktürk; reviewed by Stefan Miklosovic, Brandon Williams for CASSANDRA-19953

Co-authored-by: Maxwell Guo <cclive1601@gmail.com>
Co-authored-by: Stefan Miklosovic <smiklosovic@apacheorg>
2024-10-29 08:58:01 +01:00
Stefan Miklosovic 08b2e80aab
Warn about unqualified prepared statement only if it is select or modification statement
patch by Stefan Miklosovic; reviewed by Benjamin Lerer for CASSANDRA-18322
2024-08-08 14:18:24 +02:00
Ekaterina Dimitrova 757dbf076b Refactor ColumnCondition
Patch by Ekaterina Dimitrova; review by Benjamin Lerer for CASSANDRA-19620
2024-07-25 10:22:38 +02:00
Marcus Eriksson 5d4bcc797a Avoid exposing intermediate state while replaying log during startup
Patch by marcuse; reviewed by Sam Tunnicliffe for CASSANDRA-19384
2024-03-08 12:52:42 +01:00
Alex Petrov 6b3958f1d8 Improve setup and initialisation of LocalLog/LogSpec
Patch by Alex Petrov; reviewed by Sam Tunnicliffe and marcuse for CASSANDRA-19271
2024-02-09 15:49:42 +01:00
Ekaterina Dimitrova aa644c9dfa Merge branch 'cassandra-5.0' into trunk 2024-01-19 19:04:59 -05:00
Ekaterina Dimitrova 9f5e45e5a2 Append additional JVM options when using JDK17+
patch by Ekaterina Dimitrova; reviewed by Paulo Motta for CASSANDRA-19001
2024-01-19 18:50:53 -05:00
shyla226 89e33a16ea Limit cassandra startup to supported JDKs
Set CASSANDRA_JDK_UNSUPPORTED to use a newer JDK

patch by Shylaja Kokoori; reviewed by Berenguer Blasi, Ekaterina Dimitrova, Michael Semb Wever and Stefan Miklosovic for CASSANDRA-18688
2024-01-19 08:56:51 -05:00
Jyothsna Konisa bfcb21fbeb Set right client auth for creating SSL context in mTLS optional mode
patch by Jyothsna Konisa; reviewed by Francisco Guerrero, Jon Meredith for CASSANDRA-18811
2023-12-19 13:54:28 -07:00
Brandon Williams 7204bc45b6 Revert "Revert "Upgrade jackson to 2.15.3 and snakeyaml to 2.1""
This reverts commit 8cd0690c0b.
2023-12-01 13:15:07 -06:00
Brandon Williams 8cd0690c0b Revert "Upgrade jackson to 2.15.3 and snakeyaml to 2.1"
This reverts commit 64ae866095.
2023-12-01 11:11:31 -06:00
Yifan Cai cbabfd39b1 Merge branch 'cassandra-5.0' into trunk 2023-11-30 17:48:23 +08:00
Yifan Cai 9dc0378c2f Merge branch 'cassandra-4.1' into cassandra-5.0 2023-11-30 17:45:45 +08:00
Yifan Cai 350e968565 Merge branch 'cassandra-4.0' into cassandra-4.1 2023-11-30 17:44:07 +08:00
Yifan Cai 50273d98e4 Support max SSTable size in sorted CQLSSTableWriter
patch by Yifan Cai; reviewed by Alex Petrov, Francisco Guerrero, Maxwell Guo for CASSANDRA-18941
2023-11-30 17:39:00 +08:00
Raymond Huffman 64ae866095 Upgrade jackson to 2.15.3 and snakeyaml to 2.1
Patch by Raymond Huffman; reviewed by brandonwilliams and smiklosovic
for CASSANDRA-18875
2023-11-29 16:50:02 -06:00
Stefan Miklosovic 97bee6abc1
Merge branch 'cassandra-5.0' into trunk 2023-11-29 17:52:09 +01:00
Stefan Miklosovic bfd93eafdd
Merge branch 'cassandra-4.1' into cassandra-5.0 2023-11-29 17:48:36 +01:00