Avoid iterator allocations if possible
Handle typical cases (such as a single row, single table writes) more efficiently
Add fast paths for typical scenarios (like absense of views and triggers)
Memorize things which can be computed once
Patch by Dmitry Konstantinov; reviewed by Chris Lohfink, Michael Semb Wever, Vladimir Sitnikov for CASSANDRA-20167
Uses cqlprotodoc from cassandra-website to generate the versioned native protocol spec html pages.
Uses process-native-protocol-specs-in-docker.sh as a wrapper around this to also generate the native protocol spec adoc page that includes all the versions and makes each header navigable. This is executed as part of the existing `ant gen-asciidoc` and doc/Makefile.
patch by Olexandr Luzhniy; reviewed by Mick Semb Wever for CASSANDRA-19915
To fix it NetworkTopologyProximity implementation is adjusted using ByteBuddy to make a predictable order of nodes to read (the same idea as in python read repair dtests is used). Also, dynamic snitch is disabled to avoid re-ordering of replicas in a read plan by it. Logging of actual configuration in java dtests is added to simplify troubleshooting (the default logic does not print it because logging is initialized in tests later).
Patch by Dmitry Konstantinov; reviewed by Brandon Williams,Stefan Miklosovic for CASSANDRA-20251
G1 can rely on `-XX:G1NewSizePercent=50` to always floor the young generation's size to 50% of the heap. (In production this can be raised to 66% for optimal performance.)
Fixing the young generation size with `-Xmn` is only applicable to CMS, so move it to the appropriate section.
When using G1, we can automatically set `-XX:ParallelGCThreads` and `-XX:ConcGCThreads` to the number of system cpu cores.
The auto-generated heap size is now half the server's physical RAM, capped at 16G for CMS and 31G for G1.
Increase MaxTenuringThreshold from 1 to 2, as evidence has shown it has no cost (over values of zero or one), but can have significant benefits in keeping objects in the young generation. While, values above 2 don't have any noticeable benefit.
Always set CASSANDRA_HEAPDUMP_DIR, default it to $CASSANDRA_LOG_DIR, to avoid hprof filling up unexpected disk volumes. Assumption here is that the logs directory is large enough to handle these dumps, and/or operators are monitoring these directories more than other randon/unknown directories.
patch by Mick Semb Wever; reviewed by Jon Haddad for CASSANDRA-20296
The presence of an extra space the `:` in `key: value` pairs
makes the default `conf/cassandra.yaml` file included in
this repository unparseable and non-functional for some downstream tooling.
patch by Daniel Lenski; reviewed by Stefan Miklosovic, Brandon Williams for CASSANDRA-20359
Where MVs are also affected by a table alteration make sure we correctly
set the epoch of the TableMetadata enclosed in the ViewMetadata
Patch by Sam Tunnicliffe and Marcus Eriksson; reviewed by Marcus
Eriksson for CASSANDRA-20318
Co-authored-by: Sam Tunnicliffe <samt@apache.org>
Co-authored-by: Marcus Eriksson <marcuse@apache.org>
More splits for dtest-upgrades and all variants of the (unit) "test" type.
Less splits for long-test, dtest-larges, and jvm-dtest-upgrade.
And some debug on xml test files produced in each split.
patch by Mick Semb Wever; reviewed by Brandon Williams, Maxim Muzafarov, Dmitry Konstantinov for CASSANDRA-20311
patch by Stefan Miklosovic; reviewed by Bernardo Botella, Dinesh Joshi for CASSANDRA-20276
Co-authored-by: Bernardo Botella <bernardo.botella@apple.com>