Add docs about configuration framework added in CASSANDRA-15234

patch by Ekaterina Dimitrova; reviewed by Michael Semb Wever and Caleb Rackliffe for CASSANDRA-17246
This commit is contained in:
Ekaterina Dimitrova 2022-02-17 18:51:22 -05:00
parent 34a7eba4b8
commit d67be0def4
14 changed files with 259 additions and 58 deletions

View File

@ -116,6 +116,15 @@ New features
Upgrading
---------
- We added new JMX methods `setStreamThroughputMbitPerSec`, `getStreamThroughputMbitPerSec`, `setInterDCStreamThroughputMbitPerSec`,
`getInterDCStreamThroughputMbitPerSec` to the JMX MBean `org.apache.cassandra.db:type=StorageService`. They replace the now
deprecated methods `setStreamThroughputMbPerSec`, `getStreamThroughputMbPerSec`, `setInterDCStreamThroughputMbPerSec`, and
`getInterDCStreamThroughputMbPerSec`, which will be removed in a future major release.
- The config property `repair_session_space_in_mb` was wrongly advertised in previous versions that it should be set in
megabytes when it is interpreted internally in mebibytes. To reduce the confusion we added two new JMX methods
`setRepairSessionSpaceInMebibytes(int sizeInMebibytes)` and `getRepairSessionSpaceInMebibytes`. They replace the now
deprecated methods `setRepairSessionSpaceInMegabytes(int sizeInMegabytes)` and `getRepairSessionSpaceInMegabytes`, which
will be removed in a future major release.
- There is a new cassandra.yaml version 2. Units suffixes should be provided for all rates(B/s|MiB/s|KiB/s|MiB/s),
memory (KiB|MiB|GiB|B) and duration(d|h|s|ms|us|µs|ns|m)
parameters. (CASSANDRA-15234)

View File

@ -18,9 +18,9 @@ following properties on `cassandra.yaml`:
* `dynamic_snitch`: whether the dynamic snitch should be enabled or
disabled.
* `dynamic_snitch_update_interval_in_ms`: controls how often to perform
* `dynamic_snitch_update_interval`: 100ms, controls how often to perform
the more expensive part of host score calculation.
* `dynamic_snitch_reset_interval_in_ms`: if set greater than zero, this
* `dynamic_snitch_reset_interval`: 10m, if set greater than zero, this
will allow 'pinning' of replicas to hosts in order to increase cache
capacity.
* `dynamic_snitch_badness_threshold:`: The badness threshold will

View File

@ -11,7 +11,7 @@ will be applied to memtables.
All mutations write optimized by storing in commitlog segments, reducing
the number of seeks needed to write to disk. Commitlog Segments are
limited by the `commitlog_segment_size_in_mb` option, once the size is
limited by the `commitlog_segment_size` option, once the size is
reached, a new commitlog segment is created. Commitlog segments can be
archived, deleted, or recycled once all its data has been flushed to
SSTables. Commitlog segments are truncated when Cassandra has written
@ -19,16 +19,16 @@ data older than a certain point to the SSTables. Running "nodetool
drain" before stopping Cassandra will write everything in the memtables
to SSTables and remove the need to sync with the commitlogs on startup.
* `commitlog_segment_size_in_mb`: The default size is 32, which is
* `commitlog_segment_size`: The default size is 32MiB, which is
almost always fine, but if you are archiving commitlog segments (see
commitlog_archiving.properties), then you probably want a finer
granularity of archiving; 8 or 16 MB is reasonable. Max mutation size is
also configurable via `max_mutation_size_in_kb` setting in `cassandra.yaml`.
The default is half the size `commitlog_segment_size_in_mb * 1024`.
granularity of archiving; 8 or 16 MiB is reasonable. `commitlog_segment_size`
also determines the default value of `max_mutation_size` in cassandra.yaml.
By default, max_mutation_size is half the size of `commitlog_segment_size`.
**NOTE: If `max_mutation_size_in_kb` is set explicitly then
`commitlog_segment_size_in_mb` must be set to at least twice the size of
`max_mutation_size_in_kb / 1024`**.
**NOTE: If `max_mutation_size` is set explicitly then
`commitlog_segment_size` must be set to at least twice the size of
`max_mutation_size`**.
Commitlogs are an append only log of all mutations local to a Cassandra
node. Any data written to Cassandra will first be written to a commit
@ -47,11 +47,11 @@ for the same reason.
- `commitlog_sync_batch_window_in_ms`: Time to wait between "batch"
fsyncs _Default Value:_ 2
** `periodic`: In periodic mode, writes are immediately ack'ed, and the
CommitLog is simply synced every "commitlog_sync_period_in_ms"
CommitLog is simply synced every "commitlog_sync_period"
milliseconds.
+
- `commitlog_sync_period_in_ms`: Time to wait between "periodic" fsyncs
_Default Value:_ 10000
- `commitlog_sync_period`: Time to wait between "periodic" fsyncs
_Default Value:_ 10000ms
_Default Value:_ batch
@ -79,7 +79,7 @@ Deflate and Zstd compressors are supported.
# parameters:
----
* `commitlog_total_space_in_mb`: Total space to use for commit logs on
* `commitlog_total_space`: Total space to use for commit logs on
disk.
If space gets above this value, Cassandra will flush every dirty CF in
@ -89,7 +89,7 @@ tend to cause more flush activity on less-active columnfamilies.
The default value is the smaller of 8192, and 1/4 of the total space of
the commitlog volume.
_Default Value:_ 8192
_Default Value:_ 8192MiB
== Memtables

View File

@ -18,7 +18,7 @@ By default, the use of user-defined functions is disabled by default for
security concerns (even when enabled, the execution of user-defined
functions is sandboxed and a "rogue" function should not be allowed to
do evil, but no sandbox is perfect so using user-defined functions is
opt-in). See the `enable_user_defined_functions` in `cassandra.yaml` to
opt-in). See the `user_defined_functions_enabled` in `cassandra.yaml` to
enable them.
====

View File

@ -107,10 +107,10 @@ Cassandra isn't optimized for large file or BLOB storage and a single
storing small blobs (less than single digit MB) should not be a problem,
but it is advised to manually split large blobs into smaller chunks.
Please note in particular that by default, any value greater than 16MB
will be rejected by Cassandra due the `max_mutation_size_in_kb`
Please note in particular that by default, any value greater than 16MiB
will be rejected by Cassandra due the `max_mutation_size`
configuration of the `cassandra-yaml` file (which default to half of
`commitlog_segment_size_in_mb`, which itself default to 32MB).
`commitlog_segment_size`, which itself default to 32MiB).
[[nodetool-connection-refused]]
== Nodetool says "Connection refused to host: 127.0.1.1" for any remote host. What gives?

View File

@ -0,0 +1,192 @@
= Liberating cassandra.yaml Parameters' Names from Their Units
== Objective
Three big things happened as part of https://issues.apache.org/jira/browse/CASSANDRA-15234[CASSANDRA-15234]:
1) Renaming of parameters in `cassandra.yaml` to follow the form `noun_verb`.
2) Liberating `cassandra.yaml` parameters from their units (DataStorage, DataRate and Duration) and introducing temporary smallest accepted unit per parameter (only for DataStorage and Duration ones)
3) Backward compatibility framework to support the old names and lack of units support until at least the next major release.
== Renamed Parameters
The community has decided to allow operators to specify units for Cassandra parameters of types duration, data storage, and data rate.
All parameters which had a particular unit (most of the time added as a suffix to their name) can be now set by using the format [value][unit]. The unit suffix has been removed from their names.
*Example*:
Old name and value format:
....
permissions_update_interval_ms: 0
....
New name and possible value formats:
....
permissions_update_interval: 0ms
permissions_update_interval: 0s
permissions_update_interval: 0d
permissions_update_interval: 0us
permissions_update_interval: 0µs
....
The work in https://issues.apache.org/jira/browse/CASSANDRA-15234[CASSANDRA-15234] was already quite big, so we decided
to introduce the notion of the smallest allowed unit per parameter for duration and data storage parameters. What does this mean?
Cassandra's internals still use the old units for parameters. If, for example, seconds are used internally, but you want
to add a value in nanoseconds in `cassandra.yaml`, you will get a configuration exception that contains the following information:
....
Accepted units: seconds, minutes, hours, days.
....
Why was this needed?
Because we can run into precision issues. The full solution to the problem is to convert internally all parameters values
to be manipulated with the smallest supported by Cassandra unit. A series of tickets to assess and migrate to the smallest unit
our parameters (incrementally, post https://issues.apache.org/jira/browse/CASSANDRA-15234[CASSANDRA-15234]) will be opened soon.
[cols=",,",options="header",]
|===
|Old Name |New Name |The Smallest Supported Unit
|permissions_validity_in_ms |permissions_validity |ms
|permissions_update_interval_in_ms |permissions_update_interval |ms
|roles_validity_in_ms |roles_validity |ms
|roles_update_interval_in_ms |roles_update_interval |ms
|roles_update_interval_in_ms |roles_update_interval |ms
|credentials_validity_in_ms |credentials_validity |ms
|credentials_update_interval_in_ms |credentials_update_interval |ms
|max_hint_window_in_ms |max_hint_window |ms
|native_transport_idle_timeout_in_ms |native_transport_idle_timeout |ms
|request_timeout_in_ms |request_timeout |ms
|read_request_timeout_in_ms |read_request_timeout |ms
|range_request_timeout_in_ms |range_request_timeout |ms
|write_request_timeout_in_ms |write_request_timeout |ms
|counter_write_request_timeout_in_ms |counter_write_request_timeout |ms
|cas_contention_timeout_in_ms |cas_contention_timeout |ms
|truncate_request_timeout_in_ms |truncate_request_timeout |ms
|streaming_keep_alive_period_in_secs |streaming_keep_alive_period |s
|cross_node_timeout |internode_timeout |-
|slow_query_log_timeout_in_ms |slow_query_log_timeout |ms
|memtable_heap_space_in_mb |memtable_heap_space |MiB
|memtable_offheap_space_in_mb |memtable_offheap_space |MiB
|repair_session_space_in_mb |repair_session_space |MiB
|internode_max_message_size_in_bytes |internode_max_message_size |B
|internode_send_buff_size_in_bytes |internode_socket_send_buffer_size |B
|internode_socket_send_buffer_size_in_bytes |internode_socket_send_buffer_size |B
|internode_socket_receive_buffer_size_in_bytes |internode_socket_receive_buffer_size |B
|internode_recv_buff_size_in_bytes |internode_socket_receive_buffer_size |B
|internode_application_send_queue_capacity_in_bytes |internode_application_send_queue_capacity |B
|internode_application_send_queue_reserve_endpoint_capacity_in_bytes |internode_application_send_queue_reserve_endpoint_capacity |B
|internode_application_send_queue_reserve_global_capacity_in_bytes |internode_application_send_queue_reserve_global_capacity |B
|internode_application_receive_queue_capacity_in_bytes |internode_application_receive_queue_capacity |B
|internode_application_receive_queue_reserve_endpoint_capacity_in_bytes |internode_application_receive_queue_reserve_endpoint_capacity |B
|internode_application_receive_queue_reserve_global_capacity_in_bytes |internode_application_receive_queue_reserve_global_capacity |B
|internode_tcp_connect_timeout_in_ms |internode_tcp_connect_timeout |ms
|internode_tcp_user_timeout_in_ms |internode_tcp_user_timeout |ms
|internode_streaming_tcp_user_timeout_in_ms |internode_streaming_tcp_user_timeout |ms
|native_transport_max_frame_size_in_mb |native_transport_max_frame_size |MiB
|max_value_size_in_mb |max_value_size |MiB
|column_index_size_in_kb |column_index_size |KiB
|column_index_cache_size_in_kb |column_index_cache_size |KiB
|batch_size_warn_threshold_in_kb |batch_size_warn_threshold |KiB
|batch_size_fail_threshold_in_kb |batch_size_fail_threshold |KiB
|compaction_throughput_mb_per_sec |compaction_throughput |MiB/s
|compaction_large_partition_warning_threshold_mb |compaction_large_partition_warning_threshold |MiB
|min_free_space_per_drive_in_mb |min_free_space_per_drive |MiB
|stream_throughput_outbound_megabits_per_sec |stream_throughput_outbound |MiB/s
|inter_dc_stream_throughput_outbound_megabits_per_sec |inter_dc_stream_throughput_outbound |MiB/s
|commitlog_total_space_in_mb |commitlog_total_space |MiB
|commitlog_sync_group_window_in_ms |commitlog_sync_group_window |ms
|commitlog_sync_period_in_ms |commitlog_sync_period |ms
|commitlog_segment_size_in_mb |commitlog_segment_size |MiB
|periodic_commitlog_sync_lag_block_in_ms |periodic_commitlog_sync_lag_block |ms
|max_mutation_size_in_kb |max_mutation_size |KiB
|cdc_total_space_in_mb |cdc_total_space |MiB
|cdc_free_space_check_interval_ms |cdc_free_space_check_interval |ms
|dynamic_snitch_update_interval_in_ms |dynamic_snitch_update_interval |ms
|dynamic_snitch_reset_interval_in_ms |dynamic_snitch_reset_interval |ms
|hinted_handoff_throttle_in_kb |hinted_handoff_throttle |KiB
|batchlog_replay_throttle_in_kb |batchlog_replay_throttle |KiB
|hints_flush_period_in_ms |hints_flush_period |ms
|max_hints_file_size_in_mb |max_hints_file_size |MiB
|trickle_fsync_interval_in_kb |trickle_fsync_interval |KiB
|sstable_preemptive_open_interval_in_mb |sstable_preemptive_open_interval |MiB
|key_cache_size_in_mb |key_cache_size |MiB
|row_cache_size_in_mb |row_cache_size |MiB
|counter_cache_size_in_mb |counter_cache_size |MiB
|networking_cache_size_in_mb |networking_cache_size |MiB
|file_cache_size_in_mb |file_cache_size |MiB
|index_summary_capacity_in_mb |index_summary_capacity |MiB
|index_summary_resize_interval_in_minutes |index_summary_resize_interval |m
|gc_log_threshold_in_ms |gc_log_threshold |ms
|gc_warn_threshold_in_ms |gc_warn_threshold |ms
|tracetype_query_ttl |trace_type_query_ttl |s
|tracetype_repair_ttl |trace_type_repair_ttl |s
|prepared_statements_cache_size_mb |prepared_statements_cache_size |MiB
|enable_user_defined_functions |user_defined_functions_enabled |-
|enable_scripted_user_defined_functions |scripted_user_defined_functions_enabled |-
|enable_materialized_views |materialized_views_enabled |-
|enable_transient_replication |transient_replication_enabled |-
|enable_sasi_indexes |sasi_indexes_enabled |-
|enable_drop_compact_storage |drop_compact_storage_enabled |-
|enable_user_defined_functions_threads |user_defined_functions_threads_enabled |-
|enable_legacy_ssl_storage_port |legacy_ssl_storage_port_enabled |-
|===
Another TO DO is to add JMX methods supporting the new format. However, we may abandon this if virtual tables support for
configuration changes in the near future.
*Notes for Cassandra Developers*:
- Most of our parameters are already moved to the new framework as part of https://issues.apache.org/jira/browse/CASSANDRA-15234[CASSANDRA-15234].
`@Replaces` is the annotation to be used when you make changes to any configuration parameters in `Config` class and `cassandra.yaml`, and you want to add backward
compatibility with previous Cassandra versions. `Converters` class enumerates the different methods used for backward compatibility.
`IDENTITY` is the one used for name change only. For more information about the other Converters, please, check the JavaDoc in the class.
For backward compatibility virtual table `Settings` contains both the old and the new
parameters with the old and the new value format. Only exception at the moment are the following three parameters: `key_cache_save_period`,
`row_cache_save_period` and `counter_cache_save_period` which appear only once with the new value format.
The old names and value format still can be used at least until the next major release. Deprecation warning is emitted on startup.
If the parameter is of type duration, data rate or data storage, its value should be accompanied by a unit when new name is used.
- Please follow the new format `noun_verb` when adding new configuration parameters.
- Please consider adding any new parameters with the lowest supported by Cassandra unit.
- If for some reason you consider the smallest unit shouldnt be the one that is supported as such in Cassandra, please,
use the extended classes `SmallestDuration*`, `SmallestDataStorage*`.
- New parameters should be added as non-negative numbers.
- Any time you add @Replaces with a name change, we need to add an entry in this https://github.com/riptano/ccm/blob/808b6ca13526785b0fddfe1ead2383c060c4b8b6/ccmlib/common.py#L62[Python dictionary in CCM] to support the same backward compatibility as SnakeYAML.
Please follow the instructions in requirements.txt in the DTest repo how to retag CCM after committing any changes.
You might want to test also with tagging in your repo to ensure that there will be no surprise after retagging the official CCM.
Please be sure to run a full CI after any changes as CCM affects a few of our testing suites.
- Some configuration parameters are not announced in cassandra.yaml, but they are presented in the Config class for advanced users.
Those also should be using the new framework and naming conventions.
- As we have backward compatibility, we didnt have to rework all python DTests to set config in the new format, and we exercise
the backward compatibility while testing. Please consider adding any new tests using the new names and value format though.
- In-JVM upgrade tests do not support per-version configuration at the moment, so we have to keep the old names and value format.
Currently, if we try to use the new config for a newer version, that will be silently ignored and default config will be used.
- SnakeYAML supports overloading of parameters. This means that if you add a configuration parameter more than once in your `cassandra.yaml` -
the latest occasion will be the one to load in Config during Cassandra startup. In order to make upgrades as less disruptive as possible,
we continue supporting that behavior also with adding old and new names of a parameter into `cassandra.yaml`.
*Example*:
If you add the following to `cassandra.yaml`:
....
hinted_handoff_enabled: true
enabled_hinted_handolff: false
....
you will get loaded in `Config`:
....
hinted_handoff_enabled: false
....
https://issues.apache.org/jira/browse/CASSANDRA-17379[CASSANDRA-17379] was opened to improve the user experience and deprecate the overloading.

View File

@ -85,9 +85,9 @@ arrival from other nodes in the cluster. These limits are applied to the
on-wire size of the message being sent or received.
. The basic per-link limit is consumed in isolation before any endpoint
or global limit is imposed. Each node-pair has three links: urgent,
small and large. So any given node may have a maximum of
`N*3 * (internode_application_send_queue_capacity_in_bytes + internode_application_receive_queue_capacity_in_bytes)`
messages queued without any coordination between them although in
small and large. Any given node may have a maximum of
`N*3 * (internode_application_send_queue_capacity in bytes + internode_application_receive_queue_capacity in bytes)`
of messages data queued without any coordination between them although in
practice, with token-aware routing, only RF*tokens nodes should need to
communicate with significant bandwidth.
. The per-endpoint limit is imposed on all messages exceeding the
@ -99,12 +99,12 @@ following configuration settings have been added to `cassandra.yaml` for
resource limits on queued messages.
....
internode_application_send_queue_capacity_in_bytes: 4194304 #4MiB
internode_application_send_queue_reserve_endpoint_capacity_in_bytes: 134217728 #128MiB
internode_application_send_queue_reserve_global_capacity_in_bytes: 536870912 #512MiB
internode_application_receive_queue_capacity_in_bytes: 4194304 #4MiB
internode_application_receive_queue_reserve_endpoint_capacity_in_bytes: 134217728 #128MiB
internode_application_receive_queue_reserve_global_capacity_in_bytes: 536870912 #512MiB
internode_application_send_queue_capacity: 4MiB
internode_application_send_queue_reserve_endpoint_capacity: 128MiB
internode_application_send_queue_reserve_global_capacity: 512MiB
internode_application_receive_queue_capacity: 4MiB
internode_application_receive_queue_reserve_endpoint_capacity: 128MiB
internode_application_receive_queue_reserve_global_capacity: 512MiB
....
== Virtual Tables for Messaging Metrics

View File

@ -83,7 +83,7 @@ eligibility for Zero Copy streaming.
When enabled, it permits Cassandra to zero-copy stream entire eligible
SSTables between nodes, including every component. This speeds up the
network transfer significantly subject to throttling specified by
`stream_throughput_outbound_megabits_per_sec`.
`stream_throughput_outbound`.
Enabling this will reduce the GC pressure on sending and receiving node.
While this feature tries to keep the disks balanced, it cannot guarantee
@ -93,28 +93,28 @@ is enabled. Currently this can be used with Leveled Compaction.
=== Configuring for Zero Copy Streaming
Throttling would reduce the streaming speed. The
`stream_throughput_outbound_megabits_per_sec` throttles all outbound
`stream_throughput_outbound` throttles all outbound
streaming file transfers on a node to the given total throughput in
Mbps. When unset, the default is 200 Mbps or 25 MB/s.
Mbps. When unset, the default is 200 Mbps or 24 MiB/s.
....
stream_throughput_outbound_megabits_per_sec: 200
stream_throughput_outbound: 24MiB/s
....
To run any Zero Copy streaming benchmark the
`stream_throughput_outbound_megabits_per_sec` must be set to a really
`stream_throughput_outbound` must be set to a really
high value otherwise, throttling will be significant and the benchmark
results will not be meaningful.
The `inter_dc_stream_throughput_outbound_megabits_per_sec` throttles all
The `inter_dc_stream_throughput_outbound` throttles all
streaming file transfer between the datacenters, this setting allows
users to throttle inter dc stream throughput in addition to throttling
all network stream traffic as configured with
`stream_throughput_outbound_megabits_per_sec`. When unset, the default
`stream_throughput_outbound`. When unset, the default
is 200 Mbps or 25 MB/s.
....
inter_dc_stream_throughput_outbound_megabits_per_sec: 200
inter_dc_stream_throughput_outbound: 24MiB/s
....
=== SSTable Components Streamed with Zero Copy Streaming

View File

@ -47,7 +47,7 @@ must be enabled on each node in a cluster separately by setting the
following configuration property in `cassandra.yaml`.
....
enable_transient_replication: true
transient_replication_enabled: true
....
Transient replication may be configured with both `SimpleStrategy` and

View File

@ -277,7 +277,7 @@ name | value
auto_snapshot | true
automatic_sstable_upgrade | false
cluster_name | Test Cluster
enable_transient_replication | false
transient_replication_enabled | false
hinted_handoff_enabled | true
hints_directory | /home/ec2-user/cassandra/data/hints
incremental_backups | false

View File

@ -52,10 +52,10 @@ The following cassandra.yaml options are available for CDC:
`cdc_raw_directory` (default: `$CASSANDRA_HOME/data/cdc_raw`)::
Destination for CommitLogSegments to be moved after all corresponding
memtables are flushed.
`cdc_free_space_in_mb`: (default: min of 4096 and 1/8th volume space)::
`cdc_total_space`: (default: min of 4096MiB and 1/8th volume space)::
Calculated as sum of all active CommitLogSegments that permit CDC +
all flushed CDC segments in `cdc_raw_directory`.
`cdc_free_space_check_interval_ms` (default: 250)::
`cdc_free_space_check_interval` (default: 250ms)::
When at capacity, we limit the frequency with which we re-calculate
the space taken up by `cdc_raw_directory` to prevent burning CPU
cycles unnecessarily. Default is to check 4 times per second.

View File

@ -39,7 +39,7 @@ replicas acknowledge the mutation the coordinator responds successfully
to the client. If a replica node is unavailable, however, the
coordinator stores a hint locally to the filesystem for later
application. New hints will be retained for up to
`max_hint_window_in_ms` of downtime (defaults to `3 hours`). If the
`max_hint_windowin_ms` of downtime (defaults to `3 h`). If the
unavailable replica does return to the cluster before the window
expires, the coordinator applies any pending hinted mutations against
the replica to ensure that eventual consistency is maintained.
@ -87,18 +87,18 @@ application is idempotent and cannot overwrite a future mutation.
=== Hints for Timed Out Write Requests
Hints are also stored for write requests that time out. The
`write_request_timeout_in_ms` setting in `cassandra.yaml` configures the
`write_request_timeout` setting in `cassandra.yaml` configures the
timeout for write requests.
[source,none]
----
write_request_timeout_in_ms: 2000
write_request_timeout: 2000ms
----
The coordinator waits for the configured amount of time for write
requests to complete, at which point it will time out and generate a
hint for the timed out request. The lowest acceptable value for
`write_request_timeout_in_ms` is 10 ms.
`write_request_timeout` is 10 ms.
== Configuring Hints
@ -127,15 +127,15 @@ hinted_handoff_disabled_datacenters:
|`unset`
|`max_hint_window_in_ms` |Defines the maximum amount of time (ms) a node
shall have hints generated after it has failed. |`10800000` # 3 hours
|`max_hint_window` |Defines the maximum amount of time a node
shall have hints generated after it has failed. |`3h`
|`hinted_handoff_throttle_in_kb` |Maximum throttle in KBs per second,
|`hinted_handoff_throttle` |Maximum throttle in KiBs per second,
per delivery thread. This will be reduced proportionally to the number
of nodes in the cluster. (If there are two nodes in the cluster, each
delivery thread will use the maximum rate; if there are 3, each will
throttle to half of the maximum,since it is expected for two nodes to be
delivering hints simultaneously.) |`1024`
delivering hints simultaneously.) |`1024KiB`
|`max_hints_delivery_threads` |Number of threads with which to deliver
hints; Consider increasing this number when you have multi-dc
@ -144,11 +144,11 @@ deployments, since cross-dc handoff tends to be slower |`2`
|`hints_directory` |Directory where Cassandra stores hints.
|`$CASSANDRA_HOME/data/hints`
|`hints_flush_period_in_ms` |How often hints should be flushed from the
internal buffers to disk. Will _not_ trigger fsync. |`10000`
|`hints_flush_period` |How often hints should be flushed from the
internal buffers to disk. Will _not_ trigger fsync. |`10000ms`
|`max_hints_file_size_in_mb` |Maximum size for a single hints file, in
megabytes. |`128`
|`max_hints_file_size |Maximum size for a single hints file, in
megabytes. |`128MiB`
|`hints_compression` |Compression to apply to the hint files. If
omitted, hints files will be written uncompressed. LZ4, Snappy, and
@ -222,9 +222,9 @@ If you find yourself in such a situation, you may consider raising the
=== Allow a Node to be Down Longer at Runtime
Sometimes a node may be down for more than the normal
`max_hint_window_in_ms`, (default of three hours), but the hardware and
`max_hint_window`, (default of three hours), but the hardware and
data itself will still be accessible. In such a case you may consider
raising the `max_hint_window_in_ms` dynamically via the
raising the `max_hint_window` dynamically via the
`nodetool setmaxhintwindow` command added in Cassandra 4.0
(https://issues.apache.org/jira/browse/CASSANDRA-11720[CASSANDRA-11720]).
This will instruct Cassandra to continue holding hints for the down
@ -232,7 +232,7 @@ endpoint for a longer amount of time.
This command should be applied on all nodes in the cluster that may be
holding hints. If needed, the setting can be applied permanently by
setting the `max_hint_window_in_ms` setting in `cassandra.yaml` followed
setting the `max_hint_window` setting in `cassandra.yaml` followed
by a rolling restart.
== Monitoring Hint Delivery

View File

@ -111,10 +111,10 @@ period from when the node initially dies to when a new node completes
the replacement process.
[arabic]
. The node is down for longer than `max_hint_window_in_ms` before being
. The node is down for longer than `max_hint_window` before being
replaced.
. You are replacing using the same IP address as the dead node *and*
replacement takes longer than `max_hint_window_in_ms`.
replacement takes longer than `max_hint_window`.
====
== Monitoring progress

View File

@ -89,7 +89,7 @@ streaming throughput and client/server SSL
You can provide a cassandra.yaml file with the -f command line option to
set up streaming throughput, and client and server encryption options.
Only stream_throughput_outbound_megabits_per_sec,
Only stream_throughput_outbound,
server_encryption_options, and client_encryption_options are read from
yaml. You can override options read from cassandra.yaml with
corresponding command line options.