cassandra/conf
Benedict Elliott Smith 9ebce5d6df Redesign progress mechanisms to be memory efficient, use fewer messages and to resolve dependency chains promptly.
The SimpleProgressLog had a number of problems:

1. It polled for progress with no attempt to determine whether progress could realistically be made, so:
 - as the number of pending transactions grew, the proportion of useful work dropped (as many would be unable to make progress without earlier transactions completing)
 - each transaction in the chain could recover only on average 1/2 poll interval behind the last transaction to complete
2. It requested full transaction state from every replica on each attempt
3. It maintained a lot of in-memory state
4. Polling happened en-masse, allowing for little per-transaction control

We also separately maintained fairly expensive per-command listener state that negatively affected our command loading and caching.

The new DefaultProgressLog makes use of several new features: LocalListeners, RemoteListeners, Timers and Await messages.
 - LocalListeners provide a memory-efficient collection for managing each CommandStore<E2><80><99>s transaction listeners, with dedicated record keeping for inter-transaction relationships.
 - RemoteListeners provide a mechanism for request/response pairs that may be separated by longer than the normal Cassandra message timeout, and require minimal state on sender and recipient. This permits replicas to cheaply update their local state machine as soon as distributed information becomes available.

The DefaultProgressLog tracks each transaction with separate timers to handle per-transaction scheduling, backoff etc, and a succinct state machine. To reduce overhead correspondence is preferentially limited to a handful of replicas, and limited to the home shard where appropriate.

patch by Benedict; reviewed by Ariel Weisberg for CASSANDRA-19870
2025-04-17 11:59:51 -07:00
..
triggers add triggers README 2013-08-17 19:13:58 -06:00
README.txt Fix ClassCastException processing expired messages 2014-07-07 00:03:18 -05:00
cassandra-env.sh Merge branch 'cassandra-5.0' into trunk 2025-03-31 14:35:00 +02:00
cassandra-jaas.config Merge branch 'cassandra-3.11' into cassandra-4.0 2023-08-31 22:39:56 +02:00
cassandra-rackdc.properties Add AzureSnitch 2023-07-20 21:35:07 +02:00
cassandra-topology.properties.example Rename cassandra-topology.properties to example 2021-11-16 10:10:15 -06:00
cassandra.yaml Redesign progress mechanisms to be memory efficient, use fewer messages and to resolve dependency chains promptly. 2025-04-17 11:59:51 -07:00
cassandra_latest.yaml Provide keystore_password_file and truststore_password_file options to read credentials from a file 2025-03-04 12:33:41 +01:00
commitlog_archiving.properties Merge branch 'cassandra-4.0' into cassandra-4.1 2024-09-15 19:57:53 +02:00
cqlshrc.sample Clean up obsolete functions and simplify cql_version handling in cqlsh 2023-09-01 14:46:58 -05:00
credentials.sample Support legacy plain_text_auth section in credentials file removed unintentionally 2024-05-14 10:07:19 +02:00
jvm-clients.options Merge branch 'cassandra-4.1' into cassandra-5.0 2023-08-31 22:43:33 +02:00
jvm-server.options Merge branch 'cassandra-5.0' into trunk 2025-03-31 14:35:00 +02:00
jvm11-clients.options Add java.base/java.lang.reflect among opens for jvm11-client.options 2024-07-23 16:47:37 +02:00
jvm11-server.options Heap and GC jvm flags improvements 2025-02-22 10:59:42 +01:00
jvm17-clients.options Append additional JVM options when using JDK17+ 2024-01-19 18:50:53 -05:00
jvm17-server.options Heap and GC jvm flags improvements 2025-02-22 10:59:42 +01:00
logback-tools.xml Unify STDOUT and SYSTEMLOG logback format 2016-07-27 15:38:32 +01:00
logback.xml Make Cassandra logs able to be viewed in the virtual table system_views.system_logs 2022-10-18 14:13:51 +02:00

README.txt

Required configuration files
============================

cassandra.yaml: main Cassandra configuration file
logback.xml: logback configuration file for Cassandra server


Optional configuration files
============================

cassandra-topology.properties: used by PropertyFileSnitch