You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by mc...@apache.org on 2022/01/05 23:21:14 UTC

[cassandra] branch cassandra-4.0 updated (3ceaed1 -> 0aad2e9)

This is an automated email from the ASF dual-hosted git repository.

mck pushed a change to branch cassandra-4.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git.


    from 3ceaed1  Update ant-junit to version 1.10.12 patch by Ekaterina Dimitrova; reviewed by Michael Semb Wever for CASSANDRA-17218
     new 05b0eae  Migrate documentation to AsciiDoc
     new 0aad2e9  Merge branch 'cassandra-3.11' into cassandra-4.0

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .build/build-rat.xml                               |    3 +
 .gitignore                                         |    5 +-
 build.xml                                          |   11 +-
 doc/Dockerfile                                     |   22 -
 doc/Makefile                                       |  316 +-
 doc/README.md                                      |   45 +-
 doc/antora.yml                                     |    9 +
 doc/docker-compose.yml                             |   29 -
 doc/make.bat                                       |  299 --
 doc/modules/ROOT/nav.adoc                          |    4 +
 doc/modules/ROOT/pages/index.adoc                  |   50 +
 .../cassandra/assets/images}/Figure_1_backups.jpg  |  Bin
 .../assets}/images/Figure_1_data_model.jpg         |  Bin
 .../assets/images}/Figure_1_guarantees.jpg         |  Bin
 .../assets/images}/Figure_1_read_repair.jpg        |  Bin
 .../assets}/images/Figure_2_data_model.jpg         |  Bin
 .../assets/images}/Figure_2_read_repair.jpg        |  Bin
 .../assets/images}/Figure_3_read_repair.jpg        |  Bin
 .../assets/images}/Figure_4_read_repair.jpg        |  Bin
 .../assets/images}/Figure_5_read_repair.jpg        |  Bin
 .../assets/images}/Figure_6_read_repair.jpg        |  Bin
 .../images/data_modeling_chebotko_logical.png      |  Bin
 .../images/data_modeling_chebotko_physical.png     |  Bin
 .../images/data_modeling_hotel_bucketing.png       |  Bin
 .../assets}/images/data_modeling_hotel_erd.png     |  Bin
 .../assets}/images/data_modeling_hotel_logical.png |  Bin
 .../images/data_modeling_hotel_physical.png        |  Bin
 .../assets}/images/data_modeling_hotel_queries.png |  Bin
 .../images/data_modeling_hotel_relational.png      |  Bin
 .../images/data_modeling_reservation_logical.png   |  Bin
 .../images/data_modeling_reservation_physical.png  |  Bin
 .../cassandra/assets}/images/docs_commit.png       |  Bin
 .../assets}/images/docs_create_branch.png          |  Bin
 .../cassandra/assets}/images/docs_create_file.png  |  Bin
 .../cassandra/assets}/images/docs_editor.png       |  Bin
 .../cassandra/assets}/images/docs_fork.png         |  Bin
 .../cassandra/assets}/images/docs_pr.png           |  Bin
 .../cassandra/assets}/images/docs_preview.png      |  Bin
 .../cassandra/assets}/images/eclipse_debug0.png    |  Bin
 .../cassandra/assets}/images/eclipse_debug1.png    |  Bin
 .../cassandra/assets}/images/eclipse_debug2.png    |  Bin
 .../cassandra/assets}/images/eclipse_debug3.png    |  Bin
 .../cassandra/assets}/images/eclipse_debug4.png    |  Bin
 .../cassandra/assets}/images/eclipse_debug5.png    |  Bin
 .../cassandra/assets}/images/eclipse_debug6.png    |  Bin
 .../assets/images}/example-stress-graph.png        |  Bin
 .../cassandra/assets/images}/generatetokens.rst    |    0
 .../cassandra/assets}/images/hints.svg             |    0
 .../cassandra/assets}/images/ring.svg              |    0
 .../cassandra/assets}/images/vnodes.svg            |    0
 .../cassandra/assets}/license_compliance.rst       |    0
 .../cassandra/examples/BASH/add_repo_keys.sh       |    1 +
 .../cassandra/examples/BASH/apt-get_cass.sh        |    1 +
 .../cassandra/examples/BASH/apt-get_update.sh      |    1 +
 .../cassandra/examples/BASH/check_backups.sh       |    1 +
 .../cassandra/examples/BASH/cqlsh_localhost.sh     |    1 +
 .../cassandra/examples/BASH/curl_install.sh        |    1 +
 .../cassandra/examples/BASH/curl_verify_sha.sh     |    1 +
 .../cassandra/examples/BASH/docker_cqlsh.sh        |    1 +
 doc/modules/cassandra/examples/BASH/docker_pull.sh |    1 +
 doc/modules/cassandra/examples/BASH/docker_run.sh  |    1 +
 .../cassandra/examples/BASH/find_backups.sh        |    1 +
 .../cassandra/examples/BASH/find_snapshots.sh      |    1 +
 .../cassandra/examples/BASH/find_sstables.sh       |    1 +
 .../cassandra/examples/BASH/find_two_snapshots.sh  |    1 +
 .../cassandra/examples/BASH/flush_and_check.sh     |    2 +
 .../cassandra/examples/BASH/get_deb_package.sh     |    2 +
 doc/modules/cassandra/examples/BASH/java_verify.sh |    1 +
 .../examples/BASH/nodetool_clearsnapshot.sh        |    1 +
 .../examples/BASH/nodetool_clearsnapshot_all.sh    |    1 +
 .../cassandra/examples/BASH/nodetool_flush.sh      |    3 +
 .../examples/BASH/nodetool_flush_table.sh          |    1 +
 .../examples/BASH/nodetool_list_snapshots.sh       |    1 +
 .../cassandra/examples/BASH/nodetool_snapshot.sh   |    1 +
 .../cassandra/examples/BASH/nodetool_status.sh     |    1 +
 .../examples/BASH/nodetool_status_nobin.sh         |    1 +
 doc/modules/cassandra/examples/BASH/run_cqlsh.sh   |    1 +
 .../cassandra/examples/BASH/run_cqlsh_nobin.sh     |    1 +
 .../cassandra/examples/BASH/snapshot_backup2.sh    |    1 +
 .../examples/BASH/snapshot_both_backups.sh         |    1 +
 .../cassandra/examples/BASH/snapshot_files.sh      |    1 +
 .../cassandra/examples/BASH/snapshot_mult_ks.sh    |    1 +
 .../examples/BASH/snapshot_mult_tables.sh          |    1 +
 .../examples/BASH/snapshot_mult_tables_again.sh    |    1 +
 .../cassandra/examples/BASH/snapshot_one_table.sh  |    1 +
 .../cassandra/examples/BASH/snapshot_one_table2.sh |    1 +
 .../cassandra/examples/BASH/start_tarball.sh       |    1 +
 doc/modules/cassandra/examples/BASH/tail_syslog.sh |    1 +
 .../cassandra/examples/BASH/tail_syslog_package.sh |    1 +
 doc/modules/cassandra/examples/BASH/tarball.sh     |    1 +
 doc/modules/cassandra/examples/BASH/verify_gpg.sh  |    1 +
 doc/modules/cassandra/examples/BASH/yum_cass.sh    |    1 +
 doc/modules/cassandra/examples/BASH/yum_start.sh   |    1 +
 doc/modules/cassandra/examples/BASH/yum_update.sh  |    1 +
 doc/modules/cassandra/examples/BNF/alter_ks.bnf    |    2 +
 .../cassandra/examples/BNF/alter_mv_statement.bnf  |    1 +
 .../examples/BNF/alter_role_statement.bnf          |    1 +
 doc/modules/cassandra/examples/BNF/alter_table.bnf |    4 +
 .../cassandra/examples/BNF/alter_udt_statement.bnf |    3 +
 .../examples/BNF/alter_user_statement.bnf          |    1 +
 .../cassandra/examples/BNF/batch_statement.bnf     |    5 +
 .../cassandra/examples/BNF/collection_literal.bnf  |    4 +
 .../cassandra/examples/BNF/collection_type.bnf     |    3 +
 doc/modules/cassandra/examples/BNF/column.bnf      |    1 +
 doc/modules/cassandra/examples/BNF/constant.bnf    |    8 +
 .../cassandra/examples/BNF/cql_statement.bnf       |   48 +
 doc/modules/cassandra/examples/BNF/cql_type.bnf    |    1 +
 .../examples/BNF/create_aggregate_statement.bnf    |    6 +
 .../examples/BNF/create_function_statement.bnf     |    6 +
 .../examples/BNF/create_index_statement.bnf        |    5 +
 doc/modules/cassandra/examples/BNF/create_ks.bnf   |    2 +
 .../cassandra/examples/BNF/create_mv_statement.bnf |    4 +
 .../examples/BNF/create_role_statement.bnf         |    9 +
 .../cassandra/examples/BNF/create_table.bnf        |   12 +
 .../examples/BNF/create_trigger_statement.bnf      |    3 +
 doc/modules/cassandra/examples/BNF/create_type.bnf |    3 +
 .../examples/BNF/create_user_statement.bnf         |    4 +
 doc/modules/cassandra/examples/BNF/custom_type.bnf |    1 +
 .../cassandra/examples/BNF/delete_statement.bnf    |    5 +
 .../examples/BNF/drop_aggregate_statement.bnf      |    2 +
 .../examples/BNF/drop_function_statement.bnf       |    2 +
 .../examples/BNF/drop_index_statement.bnf          |    1 +
 doc/modules/cassandra/examples/BNF/drop_ks.bnf     |    1 +
 .../cassandra/examples/BNF/drop_mv_statement.bnf   |    1 +
 .../cassandra/examples/BNF/drop_role_statement.bnf |    1 +
 doc/modules/cassandra/examples/BNF/drop_table.bnf  |    1 +
 .../examples/BNF/drop_trigger_statement.bnf        |    1 +
 .../cassandra/examples/BNF/drop_udt_statement.bnf  |    1 +
 .../cassandra/examples/BNF/drop_user_statement.bnf |    1 +
 doc/modules/cassandra/examples/BNF/function.bnf    |    1 +
 .../examples/BNF/grant_permission_statement.bnf    |   12 +
 .../examples/BNF/grant_role_statement.bnf          |    1 +
 doc/modules/cassandra/examples/BNF/identifier.bnf  |    3 +
 doc/modules/cassandra/examples/BNF/index_name.bnf  |    1 +
 .../cassandra/examples/BNF/insert_statement.bnf    |    6 +
 doc/modules/cassandra/examples/BNF/ks_table.bnf    |    5 +
 .../examples/BNF/list_permissions_statement.bnf    |    1 +
 .../examples/BNF/list_roles_statement.bnf          |    1 +
 .../examples/BNF/list_users_statement.bnf          |    1 +
 doc/modules/cassandra/examples/BNF/native_type.bnf |    4 +
 doc/modules/cassandra/examples/BNF/options.bnf     |    4 +
 .../examples/BNF/revoke_permission_statement.bnf   |    1 +
 .../examples/BNF/revoke_role_statement.bnf         |    1 +
 doc/modules/cassandra/examples/BNF/role_name.bnf   |    1 +
 .../cassandra/examples/BNF/select_statement.bnf    |   21 +
 doc/modules/cassandra/examples/BNF/term.bnf        |    6 +
 .../cassandra/examples/BNF/trigger_name.bnf        |    1 +
 .../cassandra/examples/BNF/truncate_table.bnf      |    1 +
 doc/modules/cassandra/examples/BNF/tuple.bnf       |    2 +
 doc/modules/cassandra/examples/BNF/udt.bnf         |    2 +
 doc/modules/cassandra/examples/BNF/udt_literal.bnf |    1 +
 .../cassandra/examples/BNF/update_statement.bnf    |   13 +
 doc/modules/cassandra/examples/BNF/use_ks.bnf      |    1 +
 doc/modules/cassandra/examples/BNF/view_name.bnf   |    1 +
 .../cassandra/examples/CQL/allow_filtering.cql     |    9 +
 doc/modules/cassandra/examples/CQL/alter_ks.cql    |    2 +
 doc/modules/cassandra/examples/CQL/alter_role.cql  |    1 +
 .../examples/CQL/alter_table_add_column.cql        |    1 +
 .../examples/CQL/alter_table_spec_retry.cql        |    1 +
 .../CQL/alter_table_spec_retry_percent.cql         |    1 +
 .../examples/CQL/alter_table_with_comment.cql      |    2 +
 doc/modules/cassandra/examples/CQL/alter_user.cql  |    2 +
 doc/modules/cassandra/examples/CQL/as.cql          |   13 +
 .../examples/CQL/autoexpand_exclude_dc.cql         |    4 +
 .../cassandra/examples/CQL/autoexpand_ks.cql       |    4 +
 .../examples/CQL/autoexpand_ks_override.cql        |    4 +
 doc/modules/cassandra/examples/CQL/avg.cql         |    1 +
 .../cassandra/examples/CQL/batch_statement.cql     |    6 +
 .../cassandra/examples/CQL/caching_option.cql      |    6 +
 .../cassandra/examples/CQL/chunk_length.cql        |    6 +
 doc/modules/cassandra/examples/CQL/count.cql       |    2 +
 .../cassandra/examples/CQL/count_nonnull.cql       |    1 +
 .../cassandra/examples/CQL/create_function.cql     |   15 +
 .../cassandra/examples/CQL/create_index.cql        |    8 +
 doc/modules/cassandra/examples/CQL/create_ks.cql   |    6 +
 .../cassandra/examples/CQL/create_ks2_backup.cql   |    2 +
 .../cassandra/examples/CQL/create_ks_backup.cql    |    2 +
 .../examples/CQL/create_ks_trans_repl.cql          |    2 +
 .../cassandra/examples/CQL/create_mv_statement.cql |    5 +
 doc/modules/cassandra/examples/CQL/create_role.cql |    6 +
 .../examples/CQL/create_role_ifnotexists.cql       |    2 +
 .../examples/CQL/create_static_column.cql          |    7 +
 .../cassandra/examples/CQL/create_table.cql        |   23 +
 .../examples/CQL/create_table2_backup.cql          |   14 +
 .../cassandra/examples/CQL/create_table_backup.cql |   13 +
 .../examples/CQL/create_table_clustercolumn.cql    |    7 +
 .../examples/CQL/create_table_compound_pk.cql      |    7 +
 .../cassandra/examples/CQL/create_table_simple.cql |    4 +
 .../examples/CQL/create_table_single_pk.cql        |    1 +
 .../cassandra/examples/CQL/create_trigger.cql      |    1 +
 doc/modules/cassandra/examples/CQL/create_user.cql |    2 +
 .../cassandra/examples/CQL/create_user_role.cql    |   14 +
 doc/modules/cassandra/examples/CQL/currentdate.cql |    1 +
 .../cassandra/examples/CQL/datetime_arithmetic.cql |    1 +
 .../examples/CQL/delete_all_elements_list.cql      |    1 +
 .../cassandra/examples/CQL/delete_element_list.cql |    1 +
 doc/modules/cassandra/examples/CQL/delete_map.cql  |    2 +
 doc/modules/cassandra/examples/CQL/delete_set.cql  |    1 +
 .../cassandra/examples/CQL/delete_statement.cql    |    5 +
 .../cassandra/examples/CQL/drop_aggregate.cql      |    4 +
 .../cassandra/examples/CQL/drop_function.cql       |    4 +
 doc/modules/cassandra/examples/CQL/drop_ks.cql     |    1 +
 .../cassandra/examples/CQL/drop_trigger.cql        |    1 +
 .../cassandra/examples/CQL/function_dollarsign.cql |   15 +
 .../cassandra/examples/CQL/function_overload.cql   |    2 +
 .../cassandra/examples/CQL/function_udfcontext.cql |   11 +
 .../cassandra/examples/CQL/grant_describe.cql      |    1 +
 doc/modules/cassandra/examples/CQL/grant_drop.cql  |    1 +
 .../cassandra/examples/CQL/grant_execute.cql       |    1 +
 .../cassandra/examples/CQL/grant_modify.cql        |    1 +
 doc/modules/cassandra/examples/CQL/grant_perm.cql  |    1 +
 doc/modules/cassandra/examples/CQL/grant_role.cql  |    1 +
 .../cassandra/examples/CQL/insert_data2_backup.cql |    5 +
 .../cassandra/examples/CQL/insert_data_backup.cql  |    6 +
 .../cassandra/examples/CQL/insert_duration.cql     |    6 +
 doc/modules/cassandra/examples/CQL/insert_json.cql |    1 +
 .../cassandra/examples/CQL/insert_statement.cql    |    5 +
 .../cassandra/examples/CQL/insert_static_data.cql  |    2 +
 .../examples/CQL/insert_table_cc_addl.cql          |    1 +
 .../examples/CQL/insert_table_clustercolumn.cql    |    5 +
 .../examples/CQL/insert_table_clustercolumn2.cql   |    5 +
 .../examples/CQL/insert_table_compound_pk.cql      |    5 +
 doc/modules/cassandra/examples/CQL/insert_udt.cql  |   17 +
 doc/modules/cassandra/examples/CQL/list.cql        |   12 +
 .../cassandra/examples/CQL/list_all_perm.cql       |    1 +
 doc/modules/cassandra/examples/CQL/list_perm.cql   |    1 +
 doc/modules/cassandra/examples/CQL/list_roles.cql  |    1 +
 .../examples/CQL/list_roles_nonrecursive.cql       |    1 +
 .../cassandra/examples/CQL/list_roles_of.cql       |    1 +
 .../cassandra/examples/CQL/list_select_perm.cql    |    1 +
 doc/modules/cassandra/examples/CQL/map.cql         |   11 +
 doc/modules/cassandra/examples/CQL/min_max.cql     |    1 +
 .../cassandra/examples/CQL/mv_table_def.cql        |    8 +
 .../cassandra/examples/CQL/mv_table_error.cql      |   13 +
 .../cassandra/examples/CQL/mv_table_from_base.cql  |    9 +
 doc/modules/cassandra/examples/CQL/no_revoke.cql   |    5 +
 .../examples/CQL/query_allow_filtering.cql         |    5 +
 .../examples/CQL/query_fail_allow_filtering.cql    |    1 +
 .../examples/CQL/query_nofail_allow_filtering.cql  |    1 +
 .../cassandra/examples/CQL/rename_udt_field.cql    |    1 +
 doc/modules/cassandra/examples/CQL/revoke_perm.cql |    5 +
 doc/modules/cassandra/examples/CQL/revoke_role.cql |    1 +
 doc/modules/cassandra/examples/CQL/role_error.cql  |    6 +
 .../cassandra/examples/CQL/select_data2_backup.cql |    2 +
 .../cassandra/examples/CQL/select_data_backup.cql  |    2 +
 .../cassandra/examples/CQL/select_range.cql        |    1 +
 .../cassandra/examples/CQL/select_statement.cql    |   11 +
 .../cassandra/examples/CQL/select_static_data.cql  |    1 +
 .../examples/CQL/select_table_clustercolumn.cql    |    1 +
 .../examples/CQL/select_table_compound_pk.cql      |    1 +
 doc/modules/cassandra/examples/CQL/set.cql         |   11 +
 .../cassandra/examples/CQL/spec_retry_values.cql   |    6 +
 doc/modules/cassandra/examples/CQL/sum.cql         |    1 +
 .../cassandra/examples/CQL/table_for_where.cql     |    9 +
 .../cassandra/examples/CQL/timeuuid_min_max.cql    |    3 +
 .../cassandra/examples/CQL/timeuuid_now.cql        |    1 +
 doc/modules/cassandra/examples/CQL/token.cql       |    2 +
 doc/modules/cassandra/examples/CQL/tuple.cql       |    6 +
 doc/modules/cassandra/examples/CQL/uda.cql         |   41 +
 doc/modules/cassandra/examples/CQL/udt.cql         |   16 +
 doc/modules/cassandra/examples/CQL/update_list.cql |    2 +
 doc/modules/cassandra/examples/CQL/update_map.cql  |    2 +
 .../CQL/update_particular_list_element.cql         |    1 +
 doc/modules/cassandra/examples/CQL/update_set.cql  |    1 +
 .../cassandra/examples/CQL/update_statement.cql    |   10 +
 .../cassandra/examples/CQL/update_ttl_map.cql      |    1 +
 doc/modules/cassandra/examples/CQL/use_ks.cql      |    1 +
 doc/modules/cassandra/examples/CQL/where.cql       |    4 +
 doc/modules/cassandra/examples/CQL/where_fail.cql  |    5 +
 .../examples/CQL/where_group_cluster_columns.cql   |    3 +
 .../cassandra/examples/CQL/where_in_tuple.cql      |    3 +
 .../CQL/where_no_group_cluster_columns.cql         |    4 +
 .../cassandra/examples/JAVA/udf_imports.java       |    8 +
 .../cassandra/examples/JAVA/udfcontext.java        |   11 +
 .../examples/RESULTS/add_repo_keys.result          |    4 +
 .../cassandra/examples/RESULTS/add_yum_repo.result |    6 +
 .../examples/RESULTS/autoexpand_exclude_dc.result  |    1 +
 .../examples/RESULTS/autoexpand_ks.result          |    1 +
 .../examples/RESULTS/autoexpand_ks_override.result |    1 +
 .../examples/RESULTS/cqlsh_localhost.result        |   11 +
 .../cassandra/examples/RESULTS/find_backups.result |    4 +
 .../examples/RESULTS/find_backups_table.result     |    1 +
 .../examples/RESULTS/find_two_snapshots.result     |    3 +
 .../examples/RESULTS/flush_and_check.result        |    9 +
 .../examples/RESULTS/flush_and_check2.result       |   17 +
 .../examples/RESULTS/insert_data2_backup.result    |   13 +
 .../examples/RESULTS/insert_table_cc_addl.result   |    9 +
 .../cassandra/examples/RESULTS/java_verify.result  |    3 +
 .../cassandra/examples/RESULTS/no_bups.result      |    1 +
 .../RESULTS/nodetool_list_snapshots.result         |   13 +
 .../examples/RESULTS/nodetool_snapshot_help.result |   54 +
 .../examples/RESULTS/select_data2_backup.result    |   13 +
 .../examples/RESULTS/select_data_backup.result     |   15 +
 .../cassandra/examples/RESULTS/select_range.result |    6 +
 .../examples/RESULTS/select_static_data.result     |    4 +
 .../RESULTS/select_table_clustercolumn.result      |    9 +
 .../RESULTS/select_table_compound_pk.result        |    9 +
 .../cassandra/examples/RESULTS/snapshot_all.result |    4 +
 .../examples/RESULTS/snapshot_backup2.result       |    3 +
 .../examples/RESULTS/snapshot_backup2_find.result  |    2 +
 .../examples/RESULTS/snapshot_files.result         |   11 +
 .../examples/RESULTS/snapshot_mult_ks.result       |    3 +
 .../examples/RESULTS/snapshot_mult_tables.result   |    3 +
 .../RESULTS/snapshot_mult_tables_again.result      |    3 +
 .../examples/RESULTS/snapshot_one_table2.result    |    3 +
 .../cassandra/examples/RESULTS/tail_syslog.result  |    1 +
 .../cassandra/examples/RESULTS/verify_gpg.result   |    2 +
 .../examples/TEXT/tarball_install_dirs.txt         |   11 +
 .../cassandra/examples/YAML/auto_snapshot.yaml     |    1 +
 .../cassandra/examples/YAML/incremental_bups.yaml  |    1 +
 .../examples/YAML/snapshot_before_compaction.yaml  |    1 +
 .../cassandra/examples/YAML}/stress-example.yaml   |   18 -
 .../examples/YAML}/stress-lwt-example.yaml         |   18 -
 doc/modules/cassandra/nav.adoc                     |  106 +
 .../cassandra/pages/architecture/dynamo.adoc       |  531 +++
 .../cassandra/pages/architecture/guarantees.adoc   |  108 +
 .../cassandra/pages}/architecture/images/ring.svg  |    0
 .../pages}/architecture/images/vnodes.svg          |    0
 .../cassandra/pages/architecture/index.adoc        |    9 +
 .../cassandra/pages/architecture/overview.adoc     |  101 +
 .../cassandra/pages/architecture/snitch.adoc       |   74 +
 .../pages/architecture/storage_engine.adoc         |  225 ++
 .../pages/configuration/cass_cl_archive_file.adoc  |   48 +
 .../pages/configuration/cass_env_sh_file.adoc      |  162 +
 .../pages/configuration/cass_jvm_options_file.adoc |   22 +
 .../pages/configuration/cass_logback_xml_file.adoc |  166 +
 .../pages/configuration/cass_rackdc_file.adoc      |   79 +
 .../pages/configuration/cass_topo_file.adoc        |   53 +
 .../cassandra/pages/configuration/index.adoc       |   11 +
 doc/modules/cassandra/pages/cql/SASI.adoc          |  809 ++++
 doc/modules/cassandra/pages/cql/appendices.adoc    |  179 +
 doc/modules/cassandra/pages/cql/changes.adoc       |  215 ++
 .../cassandra/pages/cql/cql_singlefile.adoc        | 3904 ++++++++++++++++++++
 doc/modules/cassandra/pages/cql/ddl.adoc           |  799 ++++
 doc/modules/cassandra/pages/cql/definitions.adoc   |  187 +
 doc/modules/cassandra/pages/cql/dml.adoc           |  458 +++
 doc/modules/cassandra/pages/cql/functions.adoc     |  504 +++
 doc/modules/cassandra/pages/cql/index.adoc         |   24 +
 doc/modules/cassandra/pages/cql/indexes.adoc       |   63 +
 doc/modules/cassandra/pages/cql/json.adoc          |  125 +
 doc/modules/cassandra/pages/cql/mvs.adoc           |  158 +
 doc/modules/cassandra/pages/cql/operators.adoc     |   68 +
 doc/modules/cassandra/pages/cql/security.adoc      |  611 +++
 doc/modules/cassandra/pages/cql/triggers.adoc      |   50 +
 doc/modules/cassandra/pages/cql/types.adoc         |  539 +++
 .../data_modeling/data_modeling_conceptual.adoc}   |   43 +-
 .../pages/data_modeling/data_modeling_logical.adoc |  195 +
 .../data_modeling/data_modeling_physical.adoc      |   96 +
 .../pages/data_modeling/data_modeling_queries.adoc |   60 +
 .../pages/data_modeling/data_modeling_rdbms.adoc}  |   77 +-
 .../data_modeling/data_modeling_refining.adoc      |  201 +
 .../pages/data_modeling/data_modeling_schema.adoc  |  130 +
 .../pages/data_modeling/data_modeling_tools.adoc   |   44 +
 .../data_modeling/images/Figure_1_data_model.jpg   |  Bin
 .../data_modeling/images/Figure_2_data_model.jpg   |  Bin
 .../images/data_modeling_chebotko_logical.png      |  Bin
 .../images/data_modeling_chebotko_physical.png     |  Bin
 .../images/data_modeling_hotel_bucketing.png       |  Bin
 .../images/data_modeling_hotel_erd.png             |  Bin
 .../images/data_modeling_hotel_logical.png         |  Bin
 .../images/data_modeling_hotel_physical.png        |  Bin
 .../images/data_modeling_hotel_queries.png         |  Bin
 .../images/data_modeling_hotel_relational.png      |  Bin
 .../images/data_modeling_reservation_logical.png   |  Bin
 .../images/data_modeling_reservation_physical.png  |  Bin
 .../cassandra/pages/data_modeling/index.adoc       |   11 +
 .../cassandra/pages/data_modeling/intro.adoc       |  220 ++
 doc/modules/cassandra/pages/faq/index.adoc         |  290 ++
 .../pages/getting_started/configuring.adoc         |   84 +
 .../cassandra/pages/getting_started/drivers.adoc   |   90 +
 .../cassandra/pages/getting_started/index.adoc     |   30 +
 .../pages/getting_started/installing.adoc          |  344 ++
 .../pages/getting_started/production.adoc          |  163 +
 .../cassandra/pages/getting_started/querying.adoc  |   31 +
 .../pages/getting_started/quickstart.adoc          |  116 +
 .../cassandra/pages}/new/Figure_1.jpg              |  Bin
 .../cassandra/pages}/new/Figure_2.jpg              |  Bin
 doc/modules/cassandra/pages/new/auditlogging.adoc  |  464 +++
 .../cassandra/pages/new/fqllogging.adoc}           |  390 +-
 doc/modules/cassandra/pages/new/index.adoc         |   11 +
 doc/modules/cassandra/pages/new/java11.adoc        |  292 ++
 doc/modules/cassandra/pages/new/messaging.adoc     |  360 ++
 doc/modules/cassandra/pages/new/streaming.adoc     |  217 ++
 .../cassandra/pages/new/transientreplication.adoc  |  186 +
 doc/modules/cassandra/pages/new/virtualtables.adoc |  410 ++
 .../cassandra/pages/operating/audit_logging.adoc   |  224 ++
 doc/modules/cassandra/pages/operating/backups.adoc |  517 +++
 .../cassandra/pages/operating/bloom_filters.adoc   |   64 +
 .../cassandra/pages/operating/bulk_loading.adoc    |  842 +++++
 doc/modules/cassandra/pages/operating/cdc.adoc     |   86 +
 .../pages/operating/compaction/index.adoc          |  339 ++
 .../cassandra/pages/operating/compaction/lcs.adoc  |   81 +
 .../cassandra/pages/operating/compaction/stcs.adoc |   42 +
 .../cassandra/pages/operating/compaction/twcs.adoc |   75 +
 .../cassandra/pages/operating/compression.adoc     |  187 +
 .../cassandra/pages/operating/hardware.adoc        |  100 +
 doc/modules/cassandra/pages/operating/hints.adoc   |  248 ++
 doc/modules/cassandra/pages/operating/index.adoc   |   15 +
 doc/modules/cassandra/pages/operating/metrics.adoc | 1088 ++++++
 .../cassandra/pages/operating/read_repair.adoc     |  264 ++
 doc/modules/cassandra/pages/operating/repair.adoc  |  222 ++
 .../cassandra/pages/operating/security.adoc        |  527 +++
 .../cassandra/pages/operating/topo_changes.adoc    |  133 +
 doc/modules/cassandra/pages/plugins/index.adoc     |   36 +
 .../cassandra/pages/tools/cassandra_stress.adoc    |  326 ++
 doc/modules/cassandra/pages/tools/cqlsh.adoc       |  482 +++
 doc/modules/cassandra/pages/tools/index.adoc       |    9 +
 .../cassandra/pages/tools/sstable/index.adoc       |   20 +
 .../cassandra/pages/tools/sstable/sstabledump.adoc |  286 ++
 .../tools/sstable/sstableexpiredblockers.adoc      |   42 +
 .../pages/tools/sstable/sstablelevelreset.adoc     |   69 +
 .../pages/tools/sstable/sstableloader.adoc         |  316 ++
 .../pages/tools/sstable/sstablemetadata.adoc       |  320 ++
 .../pages/tools/sstable/sstableofflinerelevel.adoc |   94 +
 .../pages/tools/sstable/sstablerepairedset.adoc    |   83 +
 .../pages/tools/sstable/sstablescrub.adoc          |  102 +
 .../pages/tools/sstable/sstablesplit.adoc          |   96 +
 .../pages/tools/sstable/sstableupgrade.adoc        |  136 +
 .../cassandra/pages/tools/sstable/sstableutil.adoc |  102 +
 .../pages/tools/sstable/sstableverify.adoc         |   82 +
 .../pages/troubleshooting/finding_nodes.adoc       |  133 +
 .../cassandra/pages/troubleshooting/index.adoc     |   19 +
 .../pages/troubleshooting/reading_logs.adoc        |  247 ++
 .../pages/troubleshooting/use_nodetool.adoc        |  242 ++
 .../cassandra/pages/troubleshooting/use_tools.adoc |  578 +++
 doc/modules/cassandra/partials/java_version.adoc   |   23 +
 .../cassandra/partials/nodetool_and_cqlsh.adoc     |   21 +
 .../partials/nodetool_and_cqlsh_nobin.adoc         |   21 +
 .../cassandra/partials/package_versions.adoc       |    5 +
 doc/modules/cassandra/partials/tail_syslog.adoc    |   25 +
 .../convert_yaml_to_adoc.py}                       |   23 +-
 doc/{ => scripts}/gen-nodetool-docs.py             |   27 +-
 doc/source/_static/extra.css                       |   76 -
 doc/source/_templates/indexcontent.html            |  100 -
 doc/source/_theme/cassandra_theme/defindex.html    |   40 -
 doc/source/_theme/cassandra_theme/layout.html      |  108 -
 doc/source/_theme/cassandra_theme/search.html      |   67 -
 doc/source/_theme/cassandra_theme/theme.conf       |    3 -
 doc/source/_util/cql.py                            |  283 --
 doc/source/architecture/dynamo.rst                 |  537 ---
 doc/source/architecture/guarantees.rst             |   76 -
 doc/source/architecture/index.rst                  |   29 -
 doc/source/architecture/overview.rst               |  114 -
 doc/source/architecture/storage_engine.rst         |  208 --
 doc/source/bugs.rst                                |   30 -
 doc/source/conf.py                                 |  441 ---
 doc/source/configuration/cass_cl_archive_file.rst  |   46 -
 doc/source/configuration/cass_env_sh_file.rst      |  128 -
 doc/source/configuration/cass_jvm_options_file.rst |   10 -
 doc/source/configuration/cass_logback_xml_file.rst |  157 -
 doc/source/configuration/cass_rackdc_file.rst      |   67 -
 doc/source/configuration/cass_topo_file.rst        |   48 -
 doc/source/configuration/cass_yaml_file.rst        | 2109 -----------
 doc/source/configuration/index.rst                 |   31 -
 doc/source/contactus.rst                           |   50 -
 doc/source/cql/appendices.rst                      |  333 --
 doc/source/cql/changes.rst                         |  211 --
 doc/source/cql/ddl.rst                             | 1177 ------
 doc/source/cql/definitions.rst                     |  236 --
 doc/source/cql/dml.rst                             |  522 ---
 doc/source/cql/functions.rst                       |  581 ---
 doc/source/cql/index.rst                           |   47 -
 doc/source/cql/indexes.rst                         |   83 -
 doc/source/cql/json.rst                            |  115 -
 doc/source/cql/mvs.rst                             |  179 -
 doc/source/cql/operators.rst                       |   74 -
 doc/source/cql/security.rst                        |  538 ---
 doc/source/cql/triggers.rst                        |   63 -
 doc/source/cql/types.rst                           |  603 ---
 doc/source/data_modeling/data_modeling_logical.rst |  219 --
 .../data_modeling/data_modeling_physical.rst       |  117 -
 doc/source/data_modeling/data_modeling_queries.rst |   85 -
 .../data_modeling/data_modeling_refining.rst       |  218 --
 doc/source/data_modeling/data_modeling_schema.rst  |  144 -
 doc/source/data_modeling/data_modeling_tools.rst   |   64 -
 doc/source/data_modeling/index.rst                 |   36 -
 doc/source/data_modeling/intro.rst                 |  146 -
 doc/source/development/ci.rst                      |   84 -
 doc/source/development/code_style.rst              |   93 -
 doc/source/development/dependencies.rst            |   53 -
 doc/source/development/documentation.rst           |  104 -
 doc/source/development/gettingstarted.rst          |   60 -
 doc/source/development/how_to_commit.rst           |  151 -
 doc/source/development/how_to_review.rst           |   73 -
 doc/source/development/ide.rst                     |  185 -
 doc/source/development/index.rst                   |   34 -
 doc/source/development/patches.rst                 |  141 -
 doc/source/development/release_process.rst         |  243 --
 doc/source/development/testing.rst                 |  179 -
 doc/source/faq/index.rst                           |  299 --
 doc/source/getting_started/configuring.rst         |   80 -
 doc/source/getting_started/drivers.rst             |  123 -
 doc/source/getting_started/index.rst               |   34 -
 doc/source/getting_started/installing.rst          |  324 --
 doc/source/getting_started/production.rst          |  156 -
 doc/source/getting_started/querying.rst            |   52 -
 doc/source/glossary.rst                            |   35 -
 doc/source/index.rst                               |   43 -
 doc/source/new/auditlogging.rst                    |  510 ---
 doc/source/new/index.rst                           |   32 -
 doc/source/new/java11.rst                          |  274 --
 doc/source/new/messaging.rst                       |  257 --
 doc/source/new/streaming.rst                       |  167 -
 doc/source/new/transientreplication.rst            |  155 -
 doc/source/new/virtualtables.rst                   |  341 --
 doc/source/operating/backups.rst                   |  660 ----
 doc/source/operating/bloom_filters.rst             |   65 -
 doc/source/operating/bulk_loading.rst              |  660 ----
 doc/source/operating/cdc.rst                       |   96 -
 doc/source/operating/compaction/index.rst          |  301 --
 doc/source/operating/compaction/lcs.rst            |   91 -
 doc/source/operating/compaction/stcs.rst           |   58 -
 doc/source/operating/compaction/twcs.rst           |   76 -
 doc/source/operating/compression.rst               |  164 -
 doc/source/operating/error_codes.txt               |   31 -
 doc/source/operating/hardware.rst                  |   85 -
 doc/source/operating/hints.rst                     |  279 --
 doc/source/operating/index.rst                     |   39 -
 doc/source/operating/metrics.rst                   |  888 -----
 doc/source/operating/read_repair.rst               |  169 -
 doc/source/operating/repair.rst                    |  208 --
 doc/source/operating/security.rst                  |  441 ---
 doc/source/operating/snitch.rst                    |   82 -
 doc/source/operating/topo_changes.rst              |  129 -
 doc/source/plugins/index.rst                       |   35 -
 doc/source/tools/cassandra_stress.rst              |  273 --
 doc/source/tools/cqlsh.rst                         |  458 ---
 doc/source/tools/index.rst                         |   29 -
 doc/source/tools/sstable/index.rst                 |   39 -
 doc/source/tools/sstable/sstabledump.rst           |  316 --
 .../tools/sstable/sstableexpiredblockers.rst       |   48 -
 doc/source/tools/sstable/sstablelevelreset.rst     |   82 -
 doc/source/tools/sstable/sstableloader.rst         |  273 --
 doc/source/tools/sstable/sstablemetadata.rst       |  304 --
 doc/source/tools/sstable/sstableofflinerelevel.rst |   95 -
 doc/source/tools/sstable/sstablerepairedset.rst    |   79 -
 doc/source/tools/sstable/sstablescrub.rst          |  100 -
 doc/source/tools/sstable/sstablesplit.rst          |   93 -
 doc/source/tools/sstable/sstableupgrade.rst        |  137 -
 doc/source/tools/sstable/sstableutil.rst           |   91 -
 doc/source/tools/sstable/sstableverify.rst         |   91 -
 doc/source/troubleshooting/finding_nodes.rst       |  149 -
 doc/source/troubleshooting/index.rst               |   39 -
 doc/source/troubleshooting/reading_logs.rst        |  267 --
 doc/source/troubleshooting/use_nodetool.rst        |  245 --
 doc/source/troubleshooting/use_tools.rst           |  542 ---
 546 files changed, 24873 insertions(+), 24182 deletions(-)
 delete mode 100644 doc/Dockerfile
 create mode 100644 doc/antora.yml
 delete mode 100644 doc/docker-compose.yml
 delete mode 100644 doc/make.bat
 create mode 100644 doc/modules/ROOT/nav.adoc
 create mode 100644 doc/modules/ROOT/pages/index.adoc
 rename doc/{source/operating => modules/cassandra/assets/images}/Figure_1_backups.jpg (100%)
 copy doc/{source/data_modeling => modules/cassandra/assets}/images/Figure_1_data_model.jpg (100%)
 rename doc/{source/architecture => modules/cassandra/assets/images}/Figure_1_guarantees.jpg (100%)
 rename doc/{source/operating => modules/cassandra/assets/images}/Figure_1_read_repair.jpg (100%)
 copy doc/{source/data_modeling => modules/cassandra/assets}/images/Figure_2_data_model.jpg (100%)
 rename doc/{source/operating => modules/cassandra/assets/images}/Figure_2_read_repair.jpg (100%)
 rename doc/{source/operating => modules/cassandra/assets/images}/Figure_3_read_repair.jpg (100%)
 rename doc/{source/operating => modules/cassandra/assets/images}/Figure_4_read_repair.jpg (100%)
 rename doc/{source/operating => modules/cassandra/assets/images}/Figure_5_read_repair.jpg (100%)
 rename doc/{source/operating => modules/cassandra/assets/images}/Figure_6_read_repair.jpg (100%)
 copy doc/{source/data_modeling => modules/cassandra/assets}/images/data_modeling_chebotko_logical.png (100%)
 copy doc/{source/data_modeling => modules/cassandra/assets}/images/data_modeling_chebotko_physical.png (100%)
 copy doc/{source/data_modeling => modules/cassandra/assets}/images/data_modeling_hotel_bucketing.png (100%)
 copy doc/{source/data_modeling => modules/cassandra/assets}/images/data_modeling_hotel_erd.png (100%)
 copy doc/{source/data_modeling => modules/cassandra/assets}/images/data_modeling_hotel_logical.png (100%)
 copy doc/{source/data_modeling => modules/cassandra/assets}/images/data_modeling_hotel_physical.png (100%)
 copy doc/{source/data_modeling => modules/cassandra/assets}/images/data_modeling_hotel_queries.png (100%)
 copy doc/{source/data_modeling => modules/cassandra/assets}/images/data_modeling_hotel_relational.png (100%)
 copy doc/{source/data_modeling => modules/cassandra/assets}/images/data_modeling_reservation_logical.png (100%)
 copy doc/{source/data_modeling => modules/cassandra/assets}/images/data_modeling_reservation_physical.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/docs_commit.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/docs_create_branch.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/docs_create_file.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/docs_editor.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/docs_fork.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/docs_pr.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/docs_preview.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/eclipse_debug0.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/eclipse_debug1.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/eclipse_debug2.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/eclipse_debug3.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/eclipse_debug4.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/eclipse_debug5.png (100%)
 rename doc/{source/development => modules/cassandra/assets}/images/eclipse_debug6.png (100%)
 rename doc/{source/tools => modules/cassandra/assets/images}/example-stress-graph.png (100%)
 rename doc/{source/tools => modules/cassandra/assets/images}/generatetokens.rst (100%)
 rename doc/{source/operating => modules/cassandra/assets}/images/hints.svg (100%)
 copy doc/{source/architecture => modules/cassandra/assets}/images/ring.svg (100%)
 copy doc/{source/architecture => modules/cassandra/assets}/images/vnodes.svg (100%)
 rename doc/{source/development => modules/cassandra/assets}/license_compliance.rst (100%)
 create mode 100644 doc/modules/cassandra/examples/BASH/add_repo_keys.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/apt-get_cass.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/apt-get_update.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/check_backups.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/cqlsh_localhost.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/curl_install.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/curl_verify_sha.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/docker_cqlsh.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/docker_pull.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/docker_run.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/find_backups.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/find_snapshots.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/find_sstables.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/find_two_snapshots.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/flush_and_check.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/get_deb_package.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/java_verify.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/nodetool_clearsnapshot.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/nodetool_clearsnapshot_all.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/nodetool_flush.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/nodetool_flush_table.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/nodetool_list_snapshots.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/nodetool_snapshot.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/nodetool_status.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/nodetool_status_nobin.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/run_cqlsh.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/run_cqlsh_nobin.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/snapshot_backup2.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/snapshot_both_backups.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/snapshot_files.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/snapshot_mult_ks.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/snapshot_mult_tables.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/snapshot_mult_tables_again.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/snapshot_one_table.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/snapshot_one_table2.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/start_tarball.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/tail_syslog.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/tail_syslog_package.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/tarball.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/verify_gpg.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/yum_cass.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/yum_start.sh
 create mode 100644 doc/modules/cassandra/examples/BASH/yum_update.sh
 create mode 100644 doc/modules/cassandra/examples/BNF/alter_ks.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/alter_mv_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/alter_role_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/alter_table.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/alter_udt_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/alter_user_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/batch_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/collection_literal.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/collection_type.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/column.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/constant.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/cql_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/cql_type.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/create_aggregate_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/create_function_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/create_index_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/create_ks.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/create_mv_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/create_role_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/create_table.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/create_trigger_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/create_type.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/create_user_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/custom_type.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/delete_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/drop_aggregate_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/drop_function_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/drop_index_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/drop_ks.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/drop_mv_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/drop_role_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/drop_table.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/drop_trigger_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/drop_udt_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/drop_user_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/function.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/grant_permission_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/grant_role_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/identifier.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/index_name.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/insert_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/ks_table.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/list_permissions_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/list_roles_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/list_users_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/native_type.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/options.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/revoke_permission_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/revoke_role_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/role_name.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/select_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/term.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/trigger_name.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/truncate_table.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/tuple.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/udt.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/udt_literal.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/update_statement.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/use_ks.bnf
 create mode 100644 doc/modules/cassandra/examples/BNF/view_name.bnf
 create mode 100644 doc/modules/cassandra/examples/CQL/allow_filtering.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/alter_ks.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/alter_role.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/alter_table_add_column.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/alter_table_spec_retry.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/alter_table_spec_retry_percent.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/alter_table_with_comment.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/alter_user.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/as.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/autoexpand_exclude_dc.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/autoexpand_ks.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/autoexpand_ks_override.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/avg.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/batch_statement.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/caching_option.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/chunk_length.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/count.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/count_nonnull.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_function.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_index.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_ks.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_ks2_backup.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_ks_backup.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_ks_trans_repl.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_mv_statement.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_role.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_role_ifnotexists.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_static_column.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_table.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_table2_backup.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_table_backup.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_table_clustercolumn.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_table_compound_pk.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_table_simple.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_table_single_pk.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_trigger.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_user.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/create_user_role.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/currentdate.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/datetime_arithmetic.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/delete_all_elements_list.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/delete_element_list.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/delete_map.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/delete_set.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/delete_statement.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/drop_aggregate.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/drop_function.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/drop_ks.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/drop_trigger.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/function_dollarsign.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/function_overload.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/function_udfcontext.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/grant_describe.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/grant_drop.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/grant_execute.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/grant_modify.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/grant_perm.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/grant_role.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/insert_data2_backup.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/insert_data_backup.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/insert_duration.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/insert_json.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/insert_statement.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/insert_static_data.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/insert_table_cc_addl.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/insert_table_clustercolumn.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/insert_table_clustercolumn2.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/insert_table_compound_pk.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/insert_udt.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/list.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/list_all_perm.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/list_perm.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/list_roles.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/list_roles_nonrecursive.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/list_roles_of.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/list_select_perm.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/map.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/min_max.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/mv_table_def.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/mv_table_error.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/mv_table_from_base.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/no_revoke.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/query_allow_filtering.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/query_fail_allow_filtering.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/query_nofail_allow_filtering.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/rename_udt_field.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/revoke_perm.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/revoke_role.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/role_error.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/select_data2_backup.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/select_data_backup.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/select_range.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/select_statement.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/select_static_data.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/select_table_clustercolumn.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/select_table_compound_pk.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/set.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/spec_retry_values.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/sum.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/table_for_where.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/timeuuid_min_max.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/timeuuid_now.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/token.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/tuple.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/uda.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/udt.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/update_list.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/update_map.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/update_particular_list_element.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/update_set.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/update_statement.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/update_ttl_map.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/use_ks.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/where.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/where_fail.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/where_group_cluster_columns.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/where_in_tuple.cql
 create mode 100644 doc/modules/cassandra/examples/CQL/where_no_group_cluster_columns.cql
 create mode 100644 doc/modules/cassandra/examples/JAVA/udf_imports.java
 create mode 100644 doc/modules/cassandra/examples/JAVA/udfcontext.java
 create mode 100644 doc/modules/cassandra/examples/RESULTS/add_repo_keys.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/add_yum_repo.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/autoexpand_exclude_dc.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/autoexpand_ks.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/autoexpand_ks_override.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/cqlsh_localhost.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/find_backups.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/find_backups_table.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/find_two_snapshots.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/flush_and_check.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/flush_and_check2.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/insert_data2_backup.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/insert_table_cc_addl.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/java_verify.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/no_bups.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/nodetool_list_snapshots.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/nodetool_snapshot_help.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/select_data2_backup.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/select_data_backup.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/select_range.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/select_static_data.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/select_table_clustercolumn.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/select_table_compound_pk.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/snapshot_all.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/snapshot_backup2.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/snapshot_backup2_find.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/snapshot_files.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/snapshot_mult_ks.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/snapshot_mult_tables.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/snapshot_mult_tables_again.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/snapshot_one_table2.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/tail_syslog.result
 create mode 100644 doc/modules/cassandra/examples/RESULTS/verify_gpg.result
 create mode 100644 doc/modules/cassandra/examples/TEXT/tarball_install_dirs.txt
 create mode 100644 doc/modules/cassandra/examples/YAML/auto_snapshot.yaml
 create mode 100644 doc/modules/cassandra/examples/YAML/incremental_bups.yaml
 create mode 100644 doc/modules/cassandra/examples/YAML/snapshot_before_compaction.yaml
 rename doc/{source/tools => modules/cassandra/examples/YAML}/stress-example.yaml (63%)
 rename doc/{source/tools => modules/cassandra/examples/YAML}/stress-lwt-example.yaml (73%)
 create mode 100644 doc/modules/cassandra/nav.adoc
 create mode 100644 doc/modules/cassandra/pages/architecture/dynamo.adoc
 create mode 100644 doc/modules/cassandra/pages/architecture/guarantees.adoc
 rename doc/{source => modules/cassandra/pages}/architecture/images/ring.svg (100%)
 rename doc/{source => modules/cassandra/pages}/architecture/images/vnodes.svg (100%)
 create mode 100644 doc/modules/cassandra/pages/architecture/index.adoc
 create mode 100644 doc/modules/cassandra/pages/architecture/overview.adoc
 create mode 100644 doc/modules/cassandra/pages/architecture/snitch.adoc
 create mode 100644 doc/modules/cassandra/pages/architecture/storage_engine.adoc
 create mode 100644 doc/modules/cassandra/pages/configuration/cass_cl_archive_file.adoc
 create mode 100644 doc/modules/cassandra/pages/configuration/cass_env_sh_file.adoc
 create mode 100644 doc/modules/cassandra/pages/configuration/cass_jvm_options_file.adoc
 create mode 100644 doc/modules/cassandra/pages/configuration/cass_logback_xml_file.adoc
 create mode 100644 doc/modules/cassandra/pages/configuration/cass_rackdc_file.adoc
 create mode 100644 doc/modules/cassandra/pages/configuration/cass_topo_file.adoc
 create mode 100644 doc/modules/cassandra/pages/configuration/index.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/SASI.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/appendices.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/changes.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/cql_singlefile.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/ddl.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/definitions.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/dml.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/functions.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/index.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/indexes.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/json.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/mvs.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/operators.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/security.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/triggers.adoc
 create mode 100644 doc/modules/cassandra/pages/cql/types.adoc
 rename doc/{source/data_modeling/data_modeling_conceptual.rst => modules/cassandra/pages/data_modeling/data_modeling_conceptual.adoc} (52%)
 create mode 100644 doc/modules/cassandra/pages/data_modeling/data_modeling_logical.adoc
 create mode 100644 doc/modules/cassandra/pages/data_modeling/data_modeling_physical.adoc
 create mode 100644 doc/modules/cassandra/pages/data_modeling/data_modeling_queries.adoc
 rename doc/{source/data_modeling/data_modeling_rdbms.rst => modules/cassandra/pages/data_modeling/data_modeling_rdbms.adoc} (74%)
 create mode 100644 doc/modules/cassandra/pages/data_modeling/data_modeling_refining.adoc
 create mode 100644 doc/modules/cassandra/pages/data_modeling/data_modeling_schema.adoc
 create mode 100644 doc/modules/cassandra/pages/data_modeling/data_modeling_tools.adoc
 rename doc/{source => modules/cassandra/pages}/data_modeling/images/Figure_1_data_model.jpg (100%)
 rename doc/{source => modules/cassandra/pages}/data_modeling/images/Figure_2_data_model.jpg (100%)
 rename doc/{source => modules/cassandra/pages}/data_modeling/images/data_modeling_chebotko_logical.png (100%)
 rename doc/{source => modules/cassandra/pages}/data_modeling/images/data_modeling_chebotko_physical.png (100%)
 rename doc/{source => modules/cassandra/pages}/data_modeling/images/data_modeling_hotel_bucketing.png (100%)
 rename doc/{source => modules/cassandra/pages}/data_modeling/images/data_modeling_hotel_erd.png (100%)
 rename doc/{source => modules/cassandra/pages}/data_modeling/images/data_modeling_hotel_logical.png (100%)
 rename doc/{source => modules/cassandra/pages}/data_modeling/images/data_modeling_hotel_physical.png (100%)
 rename doc/{source => modules/cassandra/pages}/data_modeling/images/data_modeling_hotel_queries.png (100%)
 rename doc/{source => modules/cassandra/pages}/data_modeling/images/data_modeling_hotel_relational.png (100%)
 rename doc/{source => modules/cassandra/pages}/data_modeling/images/data_modeling_reservation_logical.png (100%)
 rename doc/{source => modules/cassandra/pages}/data_modeling/images/data_modeling_reservation_physical.png (100%)
 create mode 100644 doc/modules/cassandra/pages/data_modeling/index.adoc
 create mode 100644 doc/modules/cassandra/pages/data_modeling/intro.adoc
 create mode 100644 doc/modules/cassandra/pages/faq/index.adoc
 create mode 100644 doc/modules/cassandra/pages/getting_started/configuring.adoc
 create mode 100644 doc/modules/cassandra/pages/getting_started/drivers.adoc
 create mode 100644 doc/modules/cassandra/pages/getting_started/index.adoc
 create mode 100644 doc/modules/cassandra/pages/getting_started/installing.adoc
 create mode 100644 doc/modules/cassandra/pages/getting_started/production.adoc
 create mode 100644 doc/modules/cassandra/pages/getting_started/querying.adoc
 create mode 100644 doc/modules/cassandra/pages/getting_started/quickstart.adoc
 rename doc/{source => modules/cassandra/pages}/new/Figure_1.jpg (100%)
 rename doc/{source => modules/cassandra/pages}/new/Figure_2.jpg (100%)
 create mode 100644 doc/modules/cassandra/pages/new/auditlogging.adoc
 rename doc/{source/new/fqllogging.rst => modules/cassandra/pages/new/fqllogging.adoc} (63%)
 create mode 100644 doc/modules/cassandra/pages/new/index.adoc
 create mode 100644 doc/modules/cassandra/pages/new/java11.adoc
 create mode 100644 doc/modules/cassandra/pages/new/messaging.adoc
 create mode 100644 doc/modules/cassandra/pages/new/streaming.adoc
 create mode 100644 doc/modules/cassandra/pages/new/transientreplication.adoc
 create mode 100644 doc/modules/cassandra/pages/new/virtualtables.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/audit_logging.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/backups.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/bloom_filters.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/bulk_loading.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/cdc.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/compaction/index.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/compaction/lcs.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/compaction/stcs.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/compaction/twcs.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/compression.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/hardware.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/hints.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/index.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/metrics.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/read_repair.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/repair.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/security.adoc
 create mode 100644 doc/modules/cassandra/pages/operating/topo_changes.adoc
 create mode 100644 doc/modules/cassandra/pages/plugins/index.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/cassandra_stress.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/cqlsh.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/index.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/index.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/sstabledump.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/sstableexpiredblockers.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/sstablelevelreset.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/sstableloader.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/sstablemetadata.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/sstableofflinerelevel.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/sstablerepairedset.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/sstablescrub.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/sstablesplit.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/sstableupgrade.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/sstableutil.adoc
 create mode 100644 doc/modules/cassandra/pages/tools/sstable/sstableverify.adoc
 create mode 100644 doc/modules/cassandra/pages/troubleshooting/finding_nodes.adoc
 create mode 100644 doc/modules/cassandra/pages/troubleshooting/index.adoc
 create mode 100644 doc/modules/cassandra/pages/troubleshooting/reading_logs.adoc
 create mode 100644 doc/modules/cassandra/pages/troubleshooting/use_nodetool.adoc
 create mode 100644 doc/modules/cassandra/pages/troubleshooting/use_tools.adoc
 create mode 100644 doc/modules/cassandra/partials/java_version.adoc
 create mode 100644 doc/modules/cassandra/partials/nodetool_and_cqlsh.adoc
 create mode 100644 doc/modules/cassandra/partials/nodetool_and_cqlsh_nobin.adoc
 create mode 100644 doc/modules/cassandra/partials/package_versions.adoc
 create mode 100644 doc/modules/cassandra/partials/tail_syslog.adoc
 rename doc/{convert_yaml_to_rst.py => scripts/convert_yaml_to_adoc.py} (87%)
 rename doc/{ => scripts}/gen-nodetool-docs.py (73%)
 delete mode 100644 doc/source/_static/extra.css
 delete mode 100644 doc/source/_templates/indexcontent.html
 delete mode 100644 doc/source/_theme/cassandra_theme/defindex.html
 delete mode 100644 doc/source/_theme/cassandra_theme/layout.html
 delete mode 100644 doc/source/_theme/cassandra_theme/search.html
 delete mode 100644 doc/source/_theme/cassandra_theme/theme.conf
 delete mode 100644 doc/source/_util/cql.py
 delete mode 100644 doc/source/architecture/dynamo.rst
 delete mode 100644 doc/source/architecture/guarantees.rst
 delete mode 100644 doc/source/architecture/index.rst
 delete mode 100644 doc/source/architecture/overview.rst
 delete mode 100644 doc/source/architecture/storage_engine.rst
 delete mode 100644 doc/source/bugs.rst
 delete mode 100644 doc/source/conf.py
 delete mode 100644 doc/source/configuration/cass_cl_archive_file.rst
 delete mode 100644 doc/source/configuration/cass_env_sh_file.rst
 delete mode 100644 doc/source/configuration/cass_jvm_options_file.rst
 delete mode 100644 doc/source/configuration/cass_logback_xml_file.rst
 delete mode 100644 doc/source/configuration/cass_rackdc_file.rst
 delete mode 100644 doc/source/configuration/cass_topo_file.rst
 delete mode 100644 doc/source/configuration/cass_yaml_file.rst
 delete mode 100644 doc/source/configuration/index.rst
 delete mode 100644 doc/source/contactus.rst
 delete mode 100644 doc/source/cql/appendices.rst
 delete mode 100644 doc/source/cql/changes.rst
 delete mode 100644 doc/source/cql/ddl.rst
 delete mode 100644 doc/source/cql/definitions.rst
 delete mode 100644 doc/source/cql/dml.rst
 delete mode 100644 doc/source/cql/functions.rst
 delete mode 100644 doc/source/cql/index.rst
 delete mode 100644 doc/source/cql/indexes.rst
 delete mode 100644 doc/source/cql/json.rst
 delete mode 100644 doc/source/cql/mvs.rst
 delete mode 100644 doc/source/cql/operators.rst
 delete mode 100644 doc/source/cql/security.rst
 delete mode 100644 doc/source/cql/triggers.rst
 delete mode 100644 doc/source/cql/types.rst
 delete mode 100644 doc/source/data_modeling/data_modeling_logical.rst
 delete mode 100644 doc/source/data_modeling/data_modeling_physical.rst
 delete mode 100644 doc/source/data_modeling/data_modeling_queries.rst
 delete mode 100644 doc/source/data_modeling/data_modeling_refining.rst
 delete mode 100644 doc/source/data_modeling/data_modeling_schema.rst
 delete mode 100644 doc/source/data_modeling/data_modeling_tools.rst
 delete mode 100644 doc/source/data_modeling/index.rst
 delete mode 100644 doc/source/data_modeling/intro.rst
 delete mode 100644 doc/source/development/ci.rst
 delete mode 100644 doc/source/development/code_style.rst
 delete mode 100644 doc/source/development/dependencies.rst
 delete mode 100644 doc/source/development/documentation.rst
 delete mode 100644 doc/source/development/gettingstarted.rst
 delete mode 100644 doc/source/development/how_to_commit.rst
 delete mode 100644 doc/source/development/how_to_review.rst
 delete mode 100644 doc/source/development/ide.rst
 delete mode 100644 doc/source/development/index.rst
 delete mode 100644 doc/source/development/patches.rst
 delete mode 100644 doc/source/development/release_process.rst
 delete mode 100644 doc/source/development/testing.rst
 delete mode 100644 doc/source/faq/index.rst
 delete mode 100644 doc/source/getting_started/configuring.rst
 delete mode 100644 doc/source/getting_started/drivers.rst
 delete mode 100644 doc/source/getting_started/index.rst
 delete mode 100644 doc/source/getting_started/installing.rst
 delete mode 100644 doc/source/getting_started/production.rst
 delete mode 100644 doc/source/getting_started/querying.rst
 delete mode 100644 doc/source/glossary.rst
 delete mode 100644 doc/source/index.rst
 delete mode 100644 doc/source/new/auditlogging.rst
 delete mode 100644 doc/source/new/index.rst
 delete mode 100644 doc/source/new/java11.rst
 delete mode 100644 doc/source/new/messaging.rst
 delete mode 100644 doc/source/new/streaming.rst
 delete mode 100644 doc/source/new/transientreplication.rst
 delete mode 100644 doc/source/new/virtualtables.rst
 delete mode 100644 doc/source/operating/backups.rst
 delete mode 100644 doc/source/operating/bloom_filters.rst
 delete mode 100644 doc/source/operating/bulk_loading.rst
 delete mode 100644 doc/source/operating/cdc.rst
 delete mode 100644 doc/source/operating/compaction/index.rst
 delete mode 100644 doc/source/operating/compaction/lcs.rst
 delete mode 100644 doc/source/operating/compaction/stcs.rst
 delete mode 100644 doc/source/operating/compaction/twcs.rst
 delete mode 100644 doc/source/operating/compression.rst
 delete mode 100644 doc/source/operating/error_codes.txt
 delete mode 100644 doc/source/operating/hardware.rst
 delete mode 100644 doc/source/operating/hints.rst
 delete mode 100644 doc/source/operating/index.rst
 delete mode 100644 doc/source/operating/metrics.rst
 delete mode 100644 doc/source/operating/read_repair.rst
 delete mode 100644 doc/source/operating/repair.rst
 delete mode 100644 doc/source/operating/security.rst
 delete mode 100644 doc/source/operating/snitch.rst
 delete mode 100644 doc/source/operating/topo_changes.rst
 delete mode 100644 doc/source/plugins/index.rst
 delete mode 100644 doc/source/tools/cassandra_stress.rst
 delete mode 100644 doc/source/tools/cqlsh.rst
 delete mode 100644 doc/source/tools/index.rst
 delete mode 100644 doc/source/tools/sstable/index.rst
 delete mode 100644 doc/source/tools/sstable/sstabledump.rst
 delete mode 100644 doc/source/tools/sstable/sstableexpiredblockers.rst
 delete mode 100644 doc/source/tools/sstable/sstablelevelreset.rst
 delete mode 100644 doc/source/tools/sstable/sstableloader.rst
 delete mode 100644 doc/source/tools/sstable/sstablemetadata.rst
 delete mode 100644 doc/source/tools/sstable/sstableofflinerelevel.rst
 delete mode 100644 doc/source/tools/sstable/sstablerepairedset.rst
 delete mode 100644 doc/source/tools/sstable/sstablescrub.rst
 delete mode 100644 doc/source/tools/sstable/sstablesplit.rst
 delete mode 100644 doc/source/tools/sstable/sstableupgrade.rst
 delete mode 100644 doc/source/tools/sstable/sstableutil.rst
 delete mode 100644 doc/source/tools/sstable/sstableverify.rst
 delete mode 100644 doc/source/troubleshooting/finding_nodes.rst
 delete mode 100644 doc/source/troubleshooting/index.rst
 delete mode 100644 doc/source/troubleshooting/reading_logs.rst
 delete mode 100644 doc/source/troubleshooting/use_nodetool.rst
 delete mode 100644 doc/source/troubleshooting/use_tools.rst

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


[cassandra] 01/01: Merge branch 'cassandra-3.11' into cassandra-4.0

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mck pushed a commit to branch cassandra-4.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit 0aad2e9e864df87d64007961b9cbb7cda8164fec
Merge: 3ceaed1 05b0eae
Author: Mick Semb Wever <mc...@apache.org>
AuthorDate: Wed Jan 5 22:25:51 2022 +0100

    Merge branch 'cassandra-3.11' into cassandra-4.0

 .build/build-rat.xml                               |    3 +
 .gitignore                                         |    5 +-
 build.xml                                          |   11 +-
 doc/Dockerfile                                     |   22 -
 doc/Makefile                                       |  316 +-
 doc/README.md                                      |   45 +-
 doc/antora.yml                                     |    9 +
 doc/docker-compose.yml                             |   29 -
 doc/make.bat                                       |  299 --
 doc/modules/ROOT/nav.adoc                          |    4 +
 doc/modules/ROOT/pages/index.adoc                  |   50 +
 .../cassandra/assets/images}/Figure_1_backups.jpg  |  Bin
 .../assets}/images/Figure_1_data_model.jpg         |  Bin
 .../assets/images}/Figure_1_guarantees.jpg         |  Bin
 .../assets/images}/Figure_1_read_repair.jpg        |  Bin
 .../assets}/images/Figure_2_data_model.jpg         |  Bin
 .../assets/images}/Figure_2_read_repair.jpg        |  Bin
 .../assets/images}/Figure_3_read_repair.jpg        |  Bin
 .../assets/images}/Figure_4_read_repair.jpg        |  Bin
 .../assets/images}/Figure_5_read_repair.jpg        |  Bin
 .../assets/images}/Figure_6_read_repair.jpg        |  Bin
 .../images/data_modeling_chebotko_logical.png      |  Bin
 .../images/data_modeling_chebotko_physical.png     |  Bin
 .../images/data_modeling_hotel_bucketing.png       |  Bin
 .../assets}/images/data_modeling_hotel_erd.png     |  Bin
 .../assets}/images/data_modeling_hotel_logical.png |  Bin
 .../images/data_modeling_hotel_physical.png        |  Bin
 .../assets}/images/data_modeling_hotel_queries.png |  Bin
 .../images/data_modeling_hotel_relational.png      |  Bin
 .../images/data_modeling_reservation_logical.png   |  Bin
 .../images/data_modeling_reservation_physical.png  |  Bin
 .../cassandra/assets}/images/docs_commit.png       |  Bin
 .../assets}/images/docs_create_branch.png          |  Bin
 .../cassandra/assets}/images/docs_create_file.png  |  Bin
 .../cassandra/assets}/images/docs_editor.png       |  Bin
 .../cassandra/assets}/images/docs_fork.png         |  Bin
 .../cassandra/assets}/images/docs_pr.png           |  Bin
 .../cassandra/assets}/images/docs_preview.png      |  Bin
 .../cassandra/assets}/images/eclipse_debug0.png    |  Bin
 .../cassandra/assets}/images/eclipse_debug1.png    |  Bin
 .../cassandra/assets}/images/eclipse_debug2.png    |  Bin
 .../cassandra/assets}/images/eclipse_debug3.png    |  Bin
 .../cassandra/assets}/images/eclipse_debug4.png    |  Bin
 .../cassandra/assets}/images/eclipse_debug5.png    |  Bin
 .../cassandra/assets}/images/eclipse_debug6.png    |  Bin
 .../assets/images}/example-stress-graph.png        |  Bin
 .../cassandra/assets/images}/generatetokens.rst    |    0
 .../cassandra/assets}/images/hints.svg             |    0
 .../cassandra/assets}/images/ring.svg              |    0
 .../cassandra/assets}/images/vnodes.svg            |    0
 .../cassandra/assets}/license_compliance.rst       |    0
 .../cassandra/examples/BASH/add_repo_keys.sh       |    1 +
 .../cassandra/examples/BASH/apt-get_cass.sh        |    1 +
 .../cassandra/examples/BASH/apt-get_update.sh      |    1 +
 .../cassandra/examples/BASH/check_backups.sh       |    1 +
 .../cassandra/examples/BASH/cqlsh_localhost.sh     |    1 +
 .../cassandra/examples/BASH/curl_install.sh        |    1 +
 .../cassandra/examples/BASH/curl_verify_sha.sh     |    1 +
 .../cassandra/examples/BASH/docker_cqlsh.sh        |    1 +
 doc/modules/cassandra/examples/BASH/docker_pull.sh |    1 +
 doc/modules/cassandra/examples/BASH/docker_run.sh  |    1 +
 .../cassandra/examples/BASH/find_backups.sh        |    1 +
 .../cassandra/examples/BASH/find_snapshots.sh      |    1 +
 .../cassandra/examples/BASH/find_sstables.sh       |    1 +
 .../cassandra/examples/BASH/find_two_snapshots.sh  |    1 +
 .../cassandra/examples/BASH/flush_and_check.sh     |    2 +
 .../cassandra/examples/BASH/get_deb_package.sh     |    2 +
 doc/modules/cassandra/examples/BASH/java_verify.sh |    1 +
 .../examples/BASH/nodetool_clearsnapshot.sh        |    1 +
 .../examples/BASH/nodetool_clearsnapshot_all.sh    |    1 +
 .../cassandra/examples/BASH/nodetool_flush.sh      |    3 +
 .../examples/BASH/nodetool_flush_table.sh          |    1 +
 .../examples/BASH/nodetool_list_snapshots.sh       |    1 +
 .../cassandra/examples/BASH/nodetool_snapshot.sh   |    1 +
 .../cassandra/examples/BASH/nodetool_status.sh     |    1 +
 .../examples/BASH/nodetool_status_nobin.sh         |    1 +
 doc/modules/cassandra/examples/BASH/run_cqlsh.sh   |    1 +
 .../cassandra/examples/BASH/run_cqlsh_nobin.sh     |    1 +
 .../cassandra/examples/BASH/snapshot_backup2.sh    |    1 +
 .../examples/BASH/snapshot_both_backups.sh         |    1 +
 .../cassandra/examples/BASH/snapshot_files.sh      |    1 +
 .../cassandra/examples/BASH/snapshot_mult_ks.sh    |    1 +
 .../examples/BASH/snapshot_mult_tables.sh          |    1 +
 .../examples/BASH/snapshot_mult_tables_again.sh    |    1 +
 .../cassandra/examples/BASH/snapshot_one_table.sh  |    1 +
 .../cassandra/examples/BASH/snapshot_one_table2.sh |    1 +
 .../cassandra/examples/BASH/start_tarball.sh       |    1 +
 doc/modules/cassandra/examples/BASH/tail_syslog.sh |    1 +
 .../cassandra/examples/BASH/tail_syslog_package.sh |    1 +
 doc/modules/cassandra/examples/BASH/tarball.sh     |    1 +
 doc/modules/cassandra/examples/BASH/verify_gpg.sh  |    1 +
 doc/modules/cassandra/examples/BASH/yum_cass.sh    |    1 +
 doc/modules/cassandra/examples/BASH/yum_start.sh   |    1 +
 doc/modules/cassandra/examples/BASH/yum_update.sh  |    1 +
 doc/modules/cassandra/examples/BNF/alter_ks.bnf    |    2 +
 .../cassandra/examples/BNF/alter_mv_statement.bnf  |    1 +
 .../examples/BNF/alter_role_statement.bnf          |    1 +
 doc/modules/cassandra/examples/BNF/alter_table.bnf |    4 +
 .../cassandra/examples/BNF/alter_udt_statement.bnf |    3 +
 .../examples/BNF/alter_user_statement.bnf          |    1 +
 .../cassandra/examples/BNF/batch_statement.bnf     |    5 +
 .../cassandra/examples/BNF/collection_literal.bnf  |    4 +
 .../cassandra/examples/BNF/collection_type.bnf     |    3 +
 doc/modules/cassandra/examples/BNF/column.bnf      |    1 +
 doc/modules/cassandra/examples/BNF/constant.bnf    |    8 +
 .../cassandra/examples/BNF/cql_statement.bnf       |   48 +
 doc/modules/cassandra/examples/BNF/cql_type.bnf    |    1 +
 .../examples/BNF/create_aggregate_statement.bnf    |    6 +
 .../examples/BNF/create_function_statement.bnf     |    6 +
 .../examples/BNF/create_index_statement.bnf        |    5 +
 doc/modules/cassandra/examples/BNF/create_ks.bnf   |    2 +
 .../cassandra/examples/BNF/create_mv_statement.bnf |    4 +
 .../examples/BNF/create_role_statement.bnf         |    9 +
 .../cassandra/examples/BNF/create_table.bnf        |   12 +
 .../examples/BNF/create_trigger_statement.bnf      |    3 +
 doc/modules/cassandra/examples/BNF/create_type.bnf |    3 +
 .../examples/BNF/create_user_statement.bnf         |    4 +
 doc/modules/cassandra/examples/BNF/custom_type.bnf |    1 +
 .../cassandra/examples/BNF/delete_statement.bnf    |    5 +
 .../examples/BNF/drop_aggregate_statement.bnf      |    2 +
 .../examples/BNF/drop_function_statement.bnf       |    2 +
 .../examples/BNF/drop_index_statement.bnf          |    1 +
 doc/modules/cassandra/examples/BNF/drop_ks.bnf     |    1 +
 .../cassandra/examples/BNF/drop_mv_statement.bnf   |    1 +
 .../cassandra/examples/BNF/drop_role_statement.bnf |    1 +
 doc/modules/cassandra/examples/BNF/drop_table.bnf  |    1 +
 .../examples/BNF/drop_trigger_statement.bnf        |    1 +
 .../cassandra/examples/BNF/drop_udt_statement.bnf  |    1 +
 .../cassandra/examples/BNF/drop_user_statement.bnf |    1 +
 doc/modules/cassandra/examples/BNF/function.bnf    |    1 +
 .../examples/BNF/grant_permission_statement.bnf    |   12 +
 .../examples/BNF/grant_role_statement.bnf          |    1 +
 doc/modules/cassandra/examples/BNF/identifier.bnf  |    3 +
 doc/modules/cassandra/examples/BNF/index_name.bnf  |    1 +
 .../cassandra/examples/BNF/insert_statement.bnf    |    6 +
 doc/modules/cassandra/examples/BNF/ks_table.bnf    |    5 +
 .../examples/BNF/list_permissions_statement.bnf    |    1 +
 .../examples/BNF/list_roles_statement.bnf          |    1 +
 .../examples/BNF/list_users_statement.bnf          |    1 +
 doc/modules/cassandra/examples/BNF/native_type.bnf |    4 +
 doc/modules/cassandra/examples/BNF/options.bnf     |    4 +
 .../examples/BNF/revoke_permission_statement.bnf   |    1 +
 .../examples/BNF/revoke_role_statement.bnf         |    1 +
 doc/modules/cassandra/examples/BNF/role_name.bnf   |    1 +
 .../cassandra/examples/BNF/select_statement.bnf    |   21 +
 doc/modules/cassandra/examples/BNF/term.bnf        |    6 +
 .../cassandra/examples/BNF/trigger_name.bnf        |    1 +
 .../cassandra/examples/BNF/truncate_table.bnf      |    1 +
 doc/modules/cassandra/examples/BNF/tuple.bnf       |    2 +
 doc/modules/cassandra/examples/BNF/udt.bnf         |    2 +
 doc/modules/cassandra/examples/BNF/udt_literal.bnf |    1 +
 .../cassandra/examples/BNF/update_statement.bnf    |   13 +
 doc/modules/cassandra/examples/BNF/use_ks.bnf      |    1 +
 doc/modules/cassandra/examples/BNF/view_name.bnf   |    1 +
 .../cassandra/examples/CQL/allow_filtering.cql     |    9 +
 doc/modules/cassandra/examples/CQL/alter_ks.cql    |    2 +
 doc/modules/cassandra/examples/CQL/alter_role.cql  |    1 +
 .../examples/CQL/alter_table_add_column.cql        |    1 +
 .../examples/CQL/alter_table_spec_retry.cql        |    1 +
 .../CQL/alter_table_spec_retry_percent.cql         |    1 +
 .../examples/CQL/alter_table_with_comment.cql      |    2 +
 doc/modules/cassandra/examples/CQL/alter_user.cql  |    2 +
 doc/modules/cassandra/examples/CQL/as.cql          |   13 +
 .../examples/CQL/autoexpand_exclude_dc.cql         |    4 +
 .../cassandra/examples/CQL/autoexpand_ks.cql       |    4 +
 .../examples/CQL/autoexpand_ks_override.cql        |    4 +
 doc/modules/cassandra/examples/CQL/avg.cql         |    1 +
 .../cassandra/examples/CQL/batch_statement.cql     |    6 +
 .../cassandra/examples/CQL/caching_option.cql      |    6 +
 .../cassandra/examples/CQL/chunk_length.cql        |    6 +
 doc/modules/cassandra/examples/CQL/count.cql       |    2 +
 .../cassandra/examples/CQL/count_nonnull.cql       |    1 +
 .../cassandra/examples/CQL/create_function.cql     |   15 +
 .../cassandra/examples/CQL/create_index.cql        |    8 +
 doc/modules/cassandra/examples/CQL/create_ks.cql   |    6 +
 .../cassandra/examples/CQL/create_ks2_backup.cql   |    2 +
 .../cassandra/examples/CQL/create_ks_backup.cql    |    2 +
 .../examples/CQL/create_ks_trans_repl.cql          |    2 +
 .../cassandra/examples/CQL/create_mv_statement.cql |    5 +
 doc/modules/cassandra/examples/CQL/create_role.cql |    6 +
 .../examples/CQL/create_role_ifnotexists.cql       |    2 +
 .../examples/CQL/create_static_column.cql          |    7 +
 .../cassandra/examples/CQL/create_table.cql        |   23 +
 .../examples/CQL/create_table2_backup.cql          |   14 +
 .../cassandra/examples/CQL/create_table_backup.cql |   13 +
 .../examples/CQL/create_table_clustercolumn.cql    |    7 +
 .../examples/CQL/create_table_compound_pk.cql      |    7 +
 .../cassandra/examples/CQL/create_table_simple.cql |    4 +
 .../examples/CQL/create_table_single_pk.cql        |    1 +
 .../cassandra/examples/CQL/create_trigger.cql      |    1 +
 doc/modules/cassandra/examples/CQL/create_user.cql |    2 +
 .../cassandra/examples/CQL/create_user_role.cql    |   14 +
 doc/modules/cassandra/examples/CQL/currentdate.cql |    1 +
 .../cassandra/examples/CQL/datetime_arithmetic.cql |    1 +
 .../examples/CQL/delete_all_elements_list.cql      |    1 +
 .../cassandra/examples/CQL/delete_element_list.cql |    1 +
 doc/modules/cassandra/examples/CQL/delete_map.cql  |    2 +
 doc/modules/cassandra/examples/CQL/delete_set.cql  |    1 +
 .../cassandra/examples/CQL/delete_statement.cql    |    5 +
 .../cassandra/examples/CQL/drop_aggregate.cql      |    4 +
 .../cassandra/examples/CQL/drop_function.cql       |    4 +
 doc/modules/cassandra/examples/CQL/drop_ks.cql     |    1 +
 .../cassandra/examples/CQL/drop_trigger.cql        |    1 +
 .../cassandra/examples/CQL/function_dollarsign.cql |   15 +
 .../cassandra/examples/CQL/function_overload.cql   |    2 +
 .../cassandra/examples/CQL/function_udfcontext.cql |   11 +
 .../cassandra/examples/CQL/grant_describe.cql      |    1 +
 doc/modules/cassandra/examples/CQL/grant_drop.cql  |    1 +
 .../cassandra/examples/CQL/grant_execute.cql       |    1 +
 .../cassandra/examples/CQL/grant_modify.cql        |    1 +
 doc/modules/cassandra/examples/CQL/grant_perm.cql  |    1 +
 doc/modules/cassandra/examples/CQL/grant_role.cql  |    1 +
 .../cassandra/examples/CQL/insert_data2_backup.cql |    5 +
 .../cassandra/examples/CQL/insert_data_backup.cql  |    6 +
 .../cassandra/examples/CQL/insert_duration.cql     |    6 +
 doc/modules/cassandra/examples/CQL/insert_json.cql |    1 +
 .../cassandra/examples/CQL/insert_statement.cql    |    5 +
 .../cassandra/examples/CQL/insert_static_data.cql  |    2 +
 .../examples/CQL/insert_table_cc_addl.cql          |    1 +
 .../examples/CQL/insert_table_clustercolumn.cql    |    5 +
 .../examples/CQL/insert_table_clustercolumn2.cql   |    5 +
 .../examples/CQL/insert_table_compound_pk.cql      |    5 +
 doc/modules/cassandra/examples/CQL/insert_udt.cql  |   17 +
 doc/modules/cassandra/examples/CQL/list.cql        |   12 +
 .../cassandra/examples/CQL/list_all_perm.cql       |    1 +
 doc/modules/cassandra/examples/CQL/list_perm.cql   |    1 +
 doc/modules/cassandra/examples/CQL/list_roles.cql  |    1 +
 .../examples/CQL/list_roles_nonrecursive.cql       |    1 +
 .../cassandra/examples/CQL/list_roles_of.cql       |    1 +
 .../cassandra/examples/CQL/list_select_perm.cql    |    1 +
 doc/modules/cassandra/examples/CQL/map.cql         |   11 +
 doc/modules/cassandra/examples/CQL/min_max.cql     |    1 +
 .../cassandra/examples/CQL/mv_table_def.cql        |    8 +
 .../cassandra/examples/CQL/mv_table_error.cql      |   13 +
 .../cassandra/examples/CQL/mv_table_from_base.cql  |    9 +
 doc/modules/cassandra/examples/CQL/no_revoke.cql   |    5 +
 .../examples/CQL/query_allow_filtering.cql         |    5 +
 .../examples/CQL/query_fail_allow_filtering.cql    |    1 +
 .../examples/CQL/query_nofail_allow_filtering.cql  |    1 +
 .../cassandra/examples/CQL/rename_udt_field.cql    |    1 +
 doc/modules/cassandra/examples/CQL/revoke_perm.cql |    5 +
 doc/modules/cassandra/examples/CQL/revoke_role.cql |    1 +
 doc/modules/cassandra/examples/CQL/role_error.cql  |    6 +
 .../cassandra/examples/CQL/select_data2_backup.cql |    2 +
 .../cassandra/examples/CQL/select_data_backup.cql  |    2 +
 .../cassandra/examples/CQL/select_range.cql        |    1 +
 .../cassandra/examples/CQL/select_statement.cql    |   11 +
 .../cassandra/examples/CQL/select_static_data.cql  |    1 +
 .../examples/CQL/select_table_clustercolumn.cql    |    1 +
 .../examples/CQL/select_table_compound_pk.cql      |    1 +
 doc/modules/cassandra/examples/CQL/set.cql         |   11 +
 .../cassandra/examples/CQL/spec_retry_values.cql   |    6 +
 doc/modules/cassandra/examples/CQL/sum.cql         |    1 +
 .../cassandra/examples/CQL/table_for_where.cql     |    9 +
 .../cassandra/examples/CQL/timeuuid_min_max.cql    |    3 +
 .../cassandra/examples/CQL/timeuuid_now.cql        |    1 +
 doc/modules/cassandra/examples/CQL/token.cql       |    2 +
 doc/modules/cassandra/examples/CQL/tuple.cql       |    6 +
 doc/modules/cassandra/examples/CQL/uda.cql         |   41 +
 doc/modules/cassandra/examples/CQL/udt.cql         |   16 +
 doc/modules/cassandra/examples/CQL/update_list.cql |    2 +
 doc/modules/cassandra/examples/CQL/update_map.cql  |    2 +
 .../CQL/update_particular_list_element.cql         |    1 +
 doc/modules/cassandra/examples/CQL/update_set.cql  |    1 +
 .../cassandra/examples/CQL/update_statement.cql    |   10 +
 .../cassandra/examples/CQL/update_ttl_map.cql      |    1 +
 doc/modules/cassandra/examples/CQL/use_ks.cql      |    1 +
 doc/modules/cassandra/examples/CQL/where.cql       |    4 +
 doc/modules/cassandra/examples/CQL/where_fail.cql  |    5 +
 .../examples/CQL/where_group_cluster_columns.cql   |    3 +
 .../cassandra/examples/CQL/where_in_tuple.cql      |    3 +
 .../CQL/where_no_group_cluster_columns.cql         |    4 +
 .../cassandra/examples/JAVA/udf_imports.java       |    8 +
 .../cassandra/examples/JAVA/udfcontext.java        |   11 +
 .../examples/RESULTS/add_repo_keys.result          |    4 +
 .../cassandra/examples/RESULTS/add_yum_repo.result |    6 +
 .../examples/RESULTS/autoexpand_exclude_dc.result  |    1 +
 .../examples/RESULTS/autoexpand_ks.result          |    1 +
 .../examples/RESULTS/autoexpand_ks_override.result |    1 +
 .../examples/RESULTS/cqlsh_localhost.result        |   11 +
 .../cassandra/examples/RESULTS/find_backups.result |    4 +
 .../examples/RESULTS/find_backups_table.result     |    1 +
 .../examples/RESULTS/find_two_snapshots.result     |    3 +
 .../examples/RESULTS/flush_and_check.result        |    9 +
 .../examples/RESULTS/flush_and_check2.result       |   17 +
 .../examples/RESULTS/insert_data2_backup.result    |   13 +
 .../examples/RESULTS/insert_table_cc_addl.result   |    9 +
 .../cassandra/examples/RESULTS/java_verify.result  |    3 +
 .../cassandra/examples/RESULTS/no_bups.result      |    1 +
 .../RESULTS/nodetool_list_snapshots.result         |   13 +
 .../examples/RESULTS/nodetool_snapshot_help.result |   54 +
 .../examples/RESULTS/select_data2_backup.result    |   13 +
 .../examples/RESULTS/select_data_backup.result     |   15 +
 .../cassandra/examples/RESULTS/select_range.result |    6 +
 .../examples/RESULTS/select_static_data.result     |    4 +
 .../RESULTS/select_table_clustercolumn.result      |    9 +
 .../RESULTS/select_table_compound_pk.result        |    9 +
 .../cassandra/examples/RESULTS/snapshot_all.result |    4 +
 .../examples/RESULTS/snapshot_backup2.result       |    3 +
 .../examples/RESULTS/snapshot_backup2_find.result  |    2 +
 .../examples/RESULTS/snapshot_files.result         |   11 +
 .../examples/RESULTS/snapshot_mult_ks.result       |    3 +
 .../examples/RESULTS/snapshot_mult_tables.result   |    3 +
 .../RESULTS/snapshot_mult_tables_again.result      |    3 +
 .../examples/RESULTS/snapshot_one_table2.result    |    3 +
 .../cassandra/examples/RESULTS/tail_syslog.result  |    1 +
 .../cassandra/examples/RESULTS/verify_gpg.result   |    2 +
 .../examples/TEXT/tarball_install_dirs.txt         |   11 +
 .../cassandra/examples/YAML/auto_snapshot.yaml     |    1 +
 .../cassandra/examples/YAML/incremental_bups.yaml  |    1 +
 .../examples/YAML/snapshot_before_compaction.yaml  |    1 +
 .../cassandra/examples/YAML}/stress-example.yaml   |   18 -
 .../examples/YAML}/stress-lwt-example.yaml         |   18 -
 doc/modules/cassandra/nav.adoc                     |  106 +
 .../cassandra/pages/architecture/dynamo.adoc       |  531 +++
 .../cassandra/pages/architecture/guarantees.adoc   |  108 +
 .../cassandra/pages}/architecture/images/ring.svg  |    0
 .../pages}/architecture/images/vnodes.svg          |    0
 .../cassandra/pages/architecture/index.adoc        |    9 +
 .../cassandra/pages/architecture/overview.adoc     |  101 +
 .../cassandra/pages/architecture/snitch.adoc       |   74 +
 .../pages/architecture/storage_engine.adoc         |  225 ++
 .../pages/configuration/cass_cl_archive_file.adoc  |   48 +
 .../pages/configuration/cass_env_sh_file.adoc      |  162 +
 .../pages/configuration/cass_jvm_options_file.adoc |   22 +
 .../pages/configuration/cass_logback_xml_file.adoc |  166 +
 .../pages/configuration/cass_rackdc_file.adoc      |   79 +
 .../pages/configuration/cass_topo_file.adoc        |   53 +
 .../cassandra/pages/configuration/index.adoc       |   11 +
 doc/modules/cassandra/pages/cql/SASI.adoc          |  809 ++++
 doc/modules/cassandra/pages/cql/appendices.adoc    |  179 +
 doc/modules/cassandra/pages/cql/changes.adoc       |  215 ++
 .../cassandra/pages/cql/cql_singlefile.adoc        | 3904 ++++++++++++++++++++
 doc/modules/cassandra/pages/cql/ddl.adoc           |  799 ++++
 doc/modules/cassandra/pages/cql/definitions.adoc   |  187 +
 doc/modules/cassandra/pages/cql/dml.adoc           |  458 +++
 doc/modules/cassandra/pages/cql/functions.adoc     |  504 +++
 doc/modules/cassandra/pages/cql/index.adoc         |   24 +
 doc/modules/cassandra/pages/cql/indexes.adoc       |   63 +
 doc/modules/cassandra/pages/cql/json.adoc          |  125 +
 doc/modules/cassandra/pages/cql/mvs.adoc           |  158 +
 doc/modules/cassandra/pages/cql/operators.adoc     |   68 +
 doc/modules/cassandra/pages/cql/security.adoc      |  611 +++
 doc/modules/cassandra/pages/cql/triggers.adoc      |   50 +
 doc/modules/cassandra/pages/cql/types.adoc         |  539 +++
 .../data_modeling/data_modeling_conceptual.adoc}   |   43 +-
 .../pages/data_modeling/data_modeling_logical.adoc |  195 +
 .../data_modeling/data_modeling_physical.adoc      |   96 +
 .../pages/data_modeling/data_modeling_queries.adoc |   60 +
 .../pages/data_modeling/data_modeling_rdbms.adoc}  |   77 +-
 .../data_modeling/data_modeling_refining.adoc      |  201 +
 .../pages/data_modeling/data_modeling_schema.adoc  |  130 +
 .../pages/data_modeling/data_modeling_tools.adoc   |   44 +
 .../data_modeling/images/Figure_1_data_model.jpg   |  Bin
 .../data_modeling/images/Figure_2_data_model.jpg   |  Bin
 .../images/data_modeling_chebotko_logical.png      |  Bin
 .../images/data_modeling_chebotko_physical.png     |  Bin
 .../images/data_modeling_hotel_bucketing.png       |  Bin
 .../images/data_modeling_hotel_erd.png             |  Bin
 .../images/data_modeling_hotel_logical.png         |  Bin
 .../images/data_modeling_hotel_physical.png        |  Bin
 .../images/data_modeling_hotel_queries.png         |  Bin
 .../images/data_modeling_hotel_relational.png      |  Bin
 .../images/data_modeling_reservation_logical.png   |  Bin
 .../images/data_modeling_reservation_physical.png  |  Bin
 .../cassandra/pages/data_modeling/index.adoc       |   11 +
 .../cassandra/pages/data_modeling/intro.adoc       |  220 ++
 doc/modules/cassandra/pages/faq/index.adoc         |  290 ++
 .../pages/getting_started/configuring.adoc         |   84 +
 .../cassandra/pages/getting_started/drivers.adoc   |   90 +
 .../cassandra/pages/getting_started/index.adoc     |   30 +
 .../pages/getting_started/installing.adoc          |  344 ++
 .../pages/getting_started/production.adoc          |  163 +
 .../cassandra/pages/getting_started/querying.adoc  |   31 +
 .../pages/getting_started/quickstart.adoc          |  116 +
 .../cassandra/pages}/new/Figure_1.jpg              |  Bin
 .../cassandra/pages}/new/Figure_2.jpg              |  Bin
 doc/modules/cassandra/pages/new/auditlogging.adoc  |  464 +++
 .../cassandra/pages/new/fqllogging.adoc}           |  390 +-
 doc/modules/cassandra/pages/new/index.adoc         |   11 +
 doc/modules/cassandra/pages/new/java11.adoc        |  292 ++
 doc/modules/cassandra/pages/new/messaging.adoc     |  360 ++
 doc/modules/cassandra/pages/new/streaming.adoc     |  217 ++
 .../cassandra/pages/new/transientreplication.adoc  |  186 +
 doc/modules/cassandra/pages/new/virtualtables.adoc |  410 ++
 .../cassandra/pages/operating/audit_logging.adoc   |  224 ++
 doc/modules/cassandra/pages/operating/backups.adoc |  517 +++
 .../cassandra/pages/operating/bloom_filters.adoc   |   64 +
 .../cassandra/pages/operating/bulk_loading.adoc    |  842 +++++
 doc/modules/cassandra/pages/operating/cdc.adoc     |   86 +
 .../pages/operating/compaction/index.adoc          |  339 ++
 .../cassandra/pages/operating/compaction/lcs.adoc  |   81 +
 .../cassandra/pages/operating/compaction/stcs.adoc |   42 +
 .../cassandra/pages/operating/compaction/twcs.adoc |   75 +
 .../cassandra/pages/operating/compression.adoc     |  187 +
 .../cassandra/pages/operating/hardware.adoc        |  100 +
 doc/modules/cassandra/pages/operating/hints.adoc   |  248 ++
 doc/modules/cassandra/pages/operating/index.adoc   |   15 +
 doc/modules/cassandra/pages/operating/metrics.adoc | 1088 ++++++
 .../cassandra/pages/operating/read_repair.adoc     |  264 ++
 doc/modules/cassandra/pages/operating/repair.adoc  |  222 ++
 .../cassandra/pages/operating/security.adoc        |  527 +++
 .../cassandra/pages/operating/topo_changes.adoc    |  133 +
 doc/modules/cassandra/pages/plugins/index.adoc     |   36 +
 .../cassandra/pages/tools/cassandra_stress.adoc    |  326 ++
 doc/modules/cassandra/pages/tools/cqlsh.adoc       |  482 +++
 doc/modules/cassandra/pages/tools/index.adoc       |    9 +
 .../cassandra/pages/tools/sstable/index.adoc       |   20 +
 .../cassandra/pages/tools/sstable/sstabledump.adoc |  286 ++
 .../tools/sstable/sstableexpiredblockers.adoc      |   42 +
 .../pages/tools/sstable/sstablelevelreset.adoc     |   69 +
 .../pages/tools/sstable/sstableloader.adoc         |  316 ++
 .../pages/tools/sstable/sstablemetadata.adoc       |  320 ++
 .../pages/tools/sstable/sstableofflinerelevel.adoc |   94 +
 .../pages/tools/sstable/sstablerepairedset.adoc    |   83 +
 .../pages/tools/sstable/sstablescrub.adoc          |  102 +
 .../pages/tools/sstable/sstablesplit.adoc          |   96 +
 .../pages/tools/sstable/sstableupgrade.adoc        |  136 +
 .../cassandra/pages/tools/sstable/sstableutil.adoc |  102 +
 .../pages/tools/sstable/sstableverify.adoc         |   82 +
 .../pages/troubleshooting/finding_nodes.adoc       |  133 +
 .../cassandra/pages/troubleshooting/index.adoc     |   19 +
 .../pages/troubleshooting/reading_logs.adoc        |  247 ++
 .../pages/troubleshooting/use_nodetool.adoc        |  242 ++
 .../cassandra/pages/troubleshooting/use_tools.adoc |  578 +++
 doc/modules/cassandra/partials/java_version.adoc   |   23 +
 .../cassandra/partials/nodetool_and_cqlsh.adoc     |   21 +
 .../partials/nodetool_and_cqlsh_nobin.adoc         |   21 +
 .../cassandra/partials/package_versions.adoc       |    5 +
 doc/modules/cassandra/partials/tail_syslog.adoc    |   25 +
 .../convert_yaml_to_adoc.py}                       |   23 +-
 doc/{ => scripts}/gen-nodetool-docs.py             |   27 +-
 doc/source/_static/extra.css                       |   76 -
 doc/source/_templates/indexcontent.html            |  100 -
 doc/source/_theme/cassandra_theme/defindex.html    |   40 -
 doc/source/_theme/cassandra_theme/layout.html      |  108 -
 doc/source/_theme/cassandra_theme/search.html      |   67 -
 doc/source/_theme/cassandra_theme/theme.conf       |    3 -
 doc/source/_util/cql.py                            |  283 --
 doc/source/architecture/dynamo.rst                 |  537 ---
 doc/source/architecture/guarantees.rst             |   76 -
 doc/source/architecture/index.rst                  |   29 -
 doc/source/architecture/overview.rst               |  114 -
 doc/source/architecture/storage_engine.rst         |  208 --
 doc/source/bugs.rst                                |   30 -
 doc/source/conf.py                                 |  441 ---
 doc/source/configuration/cass_cl_archive_file.rst  |   46 -
 doc/source/configuration/cass_env_sh_file.rst      |  128 -
 doc/source/configuration/cass_jvm_options_file.rst |   10 -
 doc/source/configuration/cass_logback_xml_file.rst |  157 -
 doc/source/configuration/cass_rackdc_file.rst      |   67 -
 doc/source/configuration/cass_topo_file.rst        |   48 -
 doc/source/configuration/cass_yaml_file.rst        | 2109 -----------
 doc/source/configuration/index.rst                 |   31 -
 doc/source/contactus.rst                           |   50 -
 doc/source/cql/appendices.rst                      |  333 --
 doc/source/cql/changes.rst                         |  211 --
 doc/source/cql/ddl.rst                             | 1177 ------
 doc/source/cql/definitions.rst                     |  236 --
 doc/source/cql/dml.rst                             |  522 ---
 doc/source/cql/functions.rst                       |  581 ---
 doc/source/cql/index.rst                           |   47 -
 doc/source/cql/indexes.rst                         |   83 -
 doc/source/cql/json.rst                            |  115 -
 doc/source/cql/mvs.rst                             |  179 -
 doc/source/cql/operators.rst                       |   74 -
 doc/source/cql/security.rst                        |  538 ---
 doc/source/cql/triggers.rst                        |   63 -
 doc/source/cql/types.rst                           |  603 ---
 doc/source/data_modeling/data_modeling_logical.rst |  219 --
 .../data_modeling/data_modeling_physical.rst       |  117 -
 doc/source/data_modeling/data_modeling_queries.rst |   85 -
 .../data_modeling/data_modeling_refining.rst       |  218 --
 doc/source/data_modeling/data_modeling_schema.rst  |  144 -
 doc/source/data_modeling/data_modeling_tools.rst   |   64 -
 doc/source/data_modeling/index.rst                 |   36 -
 doc/source/data_modeling/intro.rst                 |  146 -
 doc/source/development/ci.rst                      |   84 -
 doc/source/development/code_style.rst              |   93 -
 doc/source/development/dependencies.rst            |   53 -
 doc/source/development/documentation.rst           |  104 -
 doc/source/development/gettingstarted.rst          |   60 -
 doc/source/development/how_to_commit.rst           |  151 -
 doc/source/development/how_to_review.rst           |   73 -
 doc/source/development/ide.rst                     |  185 -
 doc/source/development/index.rst                   |   34 -
 doc/source/development/patches.rst                 |  141 -
 doc/source/development/release_process.rst         |  243 --
 doc/source/development/testing.rst                 |  179 -
 doc/source/faq/index.rst                           |  299 --
 doc/source/getting_started/configuring.rst         |   80 -
 doc/source/getting_started/drivers.rst             |  123 -
 doc/source/getting_started/index.rst               |   34 -
 doc/source/getting_started/installing.rst          |  324 --
 doc/source/getting_started/production.rst          |  156 -
 doc/source/getting_started/querying.rst            |   52 -
 doc/source/glossary.rst                            |   35 -
 doc/source/index.rst                               |   43 -
 doc/source/new/auditlogging.rst                    |  510 ---
 doc/source/new/index.rst                           |   32 -
 doc/source/new/java11.rst                          |  274 --
 doc/source/new/messaging.rst                       |  257 --
 doc/source/new/streaming.rst                       |  167 -
 doc/source/new/transientreplication.rst            |  155 -
 doc/source/new/virtualtables.rst                   |  341 --
 doc/source/operating/backups.rst                   |  660 ----
 doc/source/operating/bloom_filters.rst             |   65 -
 doc/source/operating/bulk_loading.rst              |  660 ----
 doc/source/operating/cdc.rst                       |   96 -
 doc/source/operating/compaction/index.rst          |  301 --
 doc/source/operating/compaction/lcs.rst            |   91 -
 doc/source/operating/compaction/stcs.rst           |   58 -
 doc/source/operating/compaction/twcs.rst           |   76 -
 doc/source/operating/compression.rst               |  164 -
 doc/source/operating/error_codes.txt               |   31 -
 doc/source/operating/hardware.rst                  |   85 -
 doc/source/operating/hints.rst                     |  279 --
 doc/source/operating/index.rst                     |   39 -
 doc/source/operating/metrics.rst                   |  888 -----
 doc/source/operating/read_repair.rst               |  169 -
 doc/source/operating/repair.rst                    |  208 --
 doc/source/operating/security.rst                  |  441 ---
 doc/source/operating/snitch.rst                    |   82 -
 doc/source/operating/topo_changes.rst              |  129 -
 doc/source/plugins/index.rst                       |   35 -
 doc/source/tools/cassandra_stress.rst              |  273 --
 doc/source/tools/cqlsh.rst                         |  458 ---
 doc/source/tools/index.rst                         |   29 -
 doc/source/tools/sstable/index.rst                 |   39 -
 doc/source/tools/sstable/sstabledump.rst           |  316 --
 .../tools/sstable/sstableexpiredblockers.rst       |   48 -
 doc/source/tools/sstable/sstablelevelreset.rst     |   82 -
 doc/source/tools/sstable/sstableloader.rst         |  273 --
 doc/source/tools/sstable/sstablemetadata.rst       |  304 --
 doc/source/tools/sstable/sstableofflinerelevel.rst |   95 -
 doc/source/tools/sstable/sstablerepairedset.rst    |   79 -
 doc/source/tools/sstable/sstablescrub.rst          |  100 -
 doc/source/tools/sstable/sstablesplit.rst          |   93 -
 doc/source/tools/sstable/sstableupgrade.rst        |  137 -
 doc/source/tools/sstable/sstableutil.rst           |   91 -
 doc/source/tools/sstable/sstableverify.rst         |   91 -
 doc/source/troubleshooting/finding_nodes.rst       |  149 -
 doc/source/troubleshooting/index.rst               |   39 -
 doc/source/troubleshooting/reading_logs.rst        |  267 --
 doc/source/troubleshooting/use_nodetool.rst        |  245 --
 doc/source/troubleshooting/use_tools.rst           |  542 ---
 546 files changed, 24873 insertions(+), 24182 deletions(-)

diff --cc .build/build-rat.xml
index 47e2cdf,da9c13d..af31c1a
--- a/.build/build-rat.xml
+++ b/.build/build-rat.xml
@@@ -53,8 -53,8 +53,9 @@@
                   <exclude name="**/cassandra.yaml"/>
                   <exclude name="**/cassandra-murmur.yaml"/>
                   <exclude name="**/cassandra-seeds.yaml"/>
+                  <exclude NAME="**/doc/antora.yml"/>
                   <exclude name="**/test/conf/cassandra.yaml"/>
 +                 <exclude name="**/test/conf/cassandra_deprecated_parameters_names.yaml"/>
                   <exclude name="**/test/conf/cassandra_encryption.yaml"/>
                   <exclude name="**/test/conf/cdc.yaml"/>
                   <exclude name="**/test/conf/commitlog_compression_LZ4.yaml"/>
diff --cc doc/antora.yml
index 0000000,4ce17d5..771311b
mode 000000,100644..100644
--- a/doc/antora.yml
+++ b/doc/antora.yml
@@@ -1,0 -1,18 +1,9 @@@
+ name: Cassandra
 -title: Cassandra
 -version: '3.11'
 -display_version: '3.11'
++version: '4.0'
++display_version: '4.0'
+ asciidoc:
+   attributes:
 -    sectanchors: ''
 -    sectlinks: ''
+     cass_url: 'http://cassandra.apache.org/'
 -    cass-docker-tag-3x: latest
 -    cass-tag-3x: '3.11'
 -    311_version: '3.11.10'
 -    30_version: '3.0.24'
 -    22_version: '2.2.19'
 -    21_version: '2.1.22'
+ nav:
+ - modules/ROOT/nav.adoc
+ - modules/cassandra/nav.adoc
diff --cc doc/modules/ROOT/nav.adoc
index 0000000,4c80eca..74c129c
mode 000000,100644..100644
--- a/doc/modules/ROOT/nav.adoc
+++ b/doc/modules/ROOT/nav.adoc
@@@ -1,0 -1,4 +1,4 @@@
+ * xref:index.adoc[Main]
+ ** xref:master@_:ROOT:glossary.adoc[Glossary]
+ ** xref:master@_:ROOT:bugs.adoc[How to report bugs]
 -** xref:master@_:ROOT:contactus.adoc[Contact us]
++** xref:master@_:ROOT:contactus.adoc[Contact us]
diff --cc doc/modules/ROOT/pages/index.adoc
index 0000000,183bf9e..6a0c745
mode 000000,100644..100644
--- a/doc/modules/ROOT/pages/index.adoc
+++ b/doc/modules/ROOT/pages/index.adoc
@@@ -1,0 -1,48 +1,50 @@@
+ = Welcome to Apache Cassandra's documentation!
+ 
+ :description: Starting page for Apache Cassandra documentation.
+ :keywords: Apache, Cassandra, NoSQL, database
+ :cass-url: http://cassandra.apache.org
+ :cass-contrib-url: https://wiki.apache.org/cassandra/HowToContribute
+ 
+ This is the official documentation for {cass-url}[Apache Cassandra]. 
+ If you would like to contribute to this documentation, you are welcome 
+ to do so by submitting your contribution like any other patch following
+ {cass-contrib-url}[these instructions].
+ 
+ == Main documentation
+ 
+ [cols="a,a"]
+ |===
+ 
+ | xref:cassandra:getting_started/index.adoc[Getting started] | Newbie starting point
+ 
++| xref:cassandra:new/index.adoc[What's new in 4.0] | What's new in Cassandra 4.0
++
+ | xref:cassandra:architecture/index.adoc[Architecture] | Cassandra's big picture
+ 
+ | xref:cassandra:data_modeling/index.adoc[Data modeling] | Hint: it's not relational
+ 
+ | xref:cassandra:cql/index.adoc[Cassandra Query Language (CQL)] | CQL reference documentation
+ 
+ | xref:cassandra:configuration/index.adoc[Configuration] | Cassandra's handles and knobs
+ 
+ | xref:cassandra:operating/index.adoc[Operation] | The operator's corner
+ 
+ | xref:cassandra:tools/index.adoc[Tools] | cqlsh, nodetool, and others
+ 
+ | xref:cassandra:troubleshooting/index.adoc[Troubleshooting] | What to look for when you have a problem
+ 
+ | xref:cassandra:faq/index.adoc[FAQ] | Frequently asked questions
+ 
+ | xref:cassandra:plugins/index.adoc[Plug-ins] | Third-party plug-ins
+ 
+ | xref:master@_:ROOT:native_protocol.adoc[Native Protocols] | Native Cassandra protocol specifications
+ 
+ |===
+ 
+ == Meta information
+ * xref:master@_:ROOT:bugs.adoc[Reporting bugs]
+ * xref:master@_:ROOT:contactus.adoc[Contact us]
+ * xref:master@_:ROOT:development/index.adoc[Contributing code]
+ * xref:master@_:ROOT:docdev/index.adoc[Contributing to the docs]
+ * xref:master@_:ROOT:community.adoc[Community]
+ * xref:master@_:ROOT:download.adoc[Download]
diff --cc doc/modules/cassandra/assets/images/generatetokens.rst
index 24448d0,0000000..24448d0
mode 100644,000000..100644
--- a/doc/modules/cassandra/assets/images/generatetokens.rst
+++ b/doc/modules/cassandra/assets/images/generatetokens.rst
diff --cc doc/modules/cassandra/assets/license_compliance.rst
index e2eba2a,0000000..e2eba2a
mode 100644,000000..100644
--- a/doc/modules/cassandra/assets/license_compliance.rst
+++ b/doc/modules/cassandra/assets/license_compliance.rst
diff --cc doc/modules/cassandra/examples/BASH/curl_install.sh
index 0000000,23e7c01..1f1c2c9
mode 000000,100644..100644
--- a/doc/modules/cassandra/examples/BASH/curl_install.sh
+++ b/doc/modules/cassandra/examples/BASH/curl_install.sh
@@@ -1,0 -1,1 +1,1 @@@
 -$ curl -OL http://apache.mirror.digitalpacific.com.au/cassandra/{cass-tag-3x}/apache-cassandra-{cass-tag-3x}-bin.tar.gz
++$ curl -OL http://apache.mirror.digitalpacific.com.au/cassandra/4.0.0/apache-cassandra-4.0.0-bin.tar.gz
diff --cc doc/modules/cassandra/examples/BASH/curl_verify_sha.sh
index 0000000,bde80ca..dcb5314
mode 000000,100644..100644
--- a/doc/modules/cassandra/examples/BASH/curl_verify_sha.sh
+++ b/doc/modules/cassandra/examples/BASH/curl_verify_sha.sh
@@@ -1,0 -1,1 +1,1 @@@
 -$ curl -L https://downloads.apache.org/cassandra/{cass-tag-3x}/apache-cassandra-{cass-tag-3x}-bin.tar.gz.sha256
++$ curl -L https://downloads.apache.org/cassandra/4.0.0/apache-cassandra-4.0.0-bin.tar.gz.sha256
diff --cc doc/modules/cassandra/examples/BASH/docker_pull.sh
index 0000000,67e5e22..a732b1a
mode 000000,100644..100644
--- a/doc/modules/cassandra/examples/BASH/docker_pull.sh
+++ b/doc/modules/cassandra/examples/BASH/docker_pull.sh
@@@ -1,0 -1,1 +1,1 @@@
 -docker pull cassandra:{cass-docker-tag-3x}
++docker pull cassandra:latest
diff --cc doc/modules/cassandra/examples/BASH/docker_run.sh
index 0000000,bb4ecdb..00e75fa
mode 000000,100644..100644
--- a/doc/modules/cassandra/examples/BASH/docker_run.sh
+++ b/doc/modules/cassandra/examples/BASH/docker_run.sh
@@@ -1,0 -1,1 +1,1 @@@
 -docker run --name cass_cluster cassandra:{cass-docker-tag-3x}
++docker run --name cass_cluster cassandra:latest
diff --cc doc/modules/cassandra/examples/BASH/get_deb_package.sh
index 0000000,f52e72c..891bed6
mode 000000,100644..100644
--- a/doc/modules/cassandra/examples/BASH/get_deb_package.sh
+++ b/doc/modules/cassandra/examples/BASH/get_deb_package.sh
@@@ -1,0 -1,2 +1,2 @@@
 -$ echo "deb http://www.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
 -deb http://www.apache.org/dist/cassandra/debian 311x main
++$ echo "deb http://www.apache.org/dist/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
++deb http://www.apache.org/dist/cassandra/debian 40x main
diff --cc doc/modules/cassandra/examples/BASH/start_tarball.sh
index 0000000,6331270..7ec066f
mode 000000,100644..100644
--- a/doc/modules/cassandra/examples/BASH/start_tarball.sh
+++ b/doc/modules/cassandra/examples/BASH/start_tarball.sh
@@@ -1,0 -1,1 +1,1 @@@
 -$ cd apache-cassandra-{cass-tag-3x}/ && bin/cassandra
++$ cd apache-cassandra-4.0.0/ && bin/cassandra
diff --cc doc/modules/cassandra/examples/BASH/tarball.sh
index 0000000,0ef448a..4b25ecf
mode 000000,100644..100644
--- a/doc/modules/cassandra/examples/BASH/tarball.sh
+++ b/doc/modules/cassandra/examples/BASH/tarball.sh
@@@ -1,0 -1,1 +1,1 @@@
 -$ tar xzvf apache-cassandra-{cass-tag-3x}-bin.tar.gz
++$ tar xzvf apache-cassandra-4.0.0-bin.tar.gz
diff --cc doc/modules/cassandra/examples/BASH/verify_gpg.sh
index 0000000,9a503da..3046e57
mode 000000,100644..100644
--- a/doc/modules/cassandra/examples/BASH/verify_gpg.sh
+++ b/doc/modules/cassandra/examples/BASH/verify_gpg.sh
@@@ -1,0 -1,1 +1,1 @@@
 -$ gpg --print-md SHA256 apache-cassandra-{cass-tag-3x}-bin.tar.gz
++$ gpg --print-md SHA256 apache-cassandra-4.0.0-bin.tar.gz
diff --cc doc/modules/cassandra/examples/RESULTS/add_yum_repo.result
index 0000000,8fdb78c..ba06f54
mode 000000,100644..100644
--- a/doc/modules/cassandra/examples/RESULTS/add_yum_repo.result
+++ b/doc/modules/cassandra/examples/RESULTS/add_yum_repo.result
@@@ -1,0 -1,6 +1,6 @@@
+ [cassandra]
+ name=Apache Cassandra
 -baseurl=https://downloads.apache.org/cassandra/redhat/311x/
++baseurl=https://downloads.apache.org/cassandra/redhat/40x/
+ gpgcheck=1
+ repo_gpgcheck=1
+ gpgkey=https://downloads.apache.org/cassandra/KEYS
diff --cc doc/modules/cassandra/examples/RESULTS/verify_gpg.result
index 0000000,da62736..443e23d
mode 000000,100644..100644
--- a/doc/modules/cassandra/examples/RESULTS/verify_gpg.result
+++ b/doc/modules/cassandra/examples/RESULTS/verify_gpg.result
@@@ -1,0 -1,2 +1,2 @@@
 -apache-cassandra-3.11.10-bin.tar.gz: 28757DDE 589F7041 0F9A6A95 C39EE7E6
++apache-cassandra-4.0.0-bin.tar.gz: 28757DDE 589F7041 0F9A6A95 C39EE7E6
+                                    CDE63440 E2B06B91 AE6B2006 14FA364D
diff --cc doc/modules/cassandra/examples/YAML/stress-example.yaml
index 4a67102,4a67102..17161af
--- a/doc/modules/cassandra/examples/YAML/stress-example.yaml
+++ b/doc/modules/cassandra/examples/YAML/stress-example.yaml
@@@ -1,21 -1,21 +1,3 @@@
--#
--# Licensed to the Apache Software Foundation (ASF) under one
--# or more contributor license agreements.  See the NOTICE file
--# distributed with this work for additional information
--# regarding copyright ownership.  The ASF licenses this file
--# to you under the Apache License, Version 2.0 (the
--# "License"); you may not use this file except in compliance
--# with the License.  You may obtain a copy of the License at
--#
--#     http://www.apache.org/licenses/LICENSE-2.0
--#
--# Unless required by applicable law or agreed to in writing, software
--# distributed under the License is distributed on an "AS IS" BASIS,
--# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--# See the License for the specific language governing permissions and
--# limitations under the License.
--#
--
  spacenam: example # idenitifier for this spec if running with multiple yaml files
  keyspace: example
  
diff --cc doc/modules/cassandra/examples/YAML/stress-lwt-example.yaml
index 1f12c24,1f12c24..fc5db08
--- a/doc/modules/cassandra/examples/YAML/stress-lwt-example.yaml
+++ b/doc/modules/cassandra/examples/YAML/stress-lwt-example.yaml
@@@ -1,21 -1,21 +1,3 @@@
--#
--# Licensed to the Apache Software Foundation (ASF) under one
--# or more contributor license agreements.  See the NOTICE file
--# distributed with this work for additional information
--# regarding copyright ownership.  The ASF licenses this file
--# to you under the Apache License, Version 2.0 (the
--# "License"); you may not use this file except in compliance
--# with the License.  You may obtain a copy of the License at
--#
--#     http://www.apache.org/licenses/LICENSE-2.0
--#
--# Unless required by applicable law or agreed to in writing, software
--# distributed under the License is distributed on an "AS IS" BASIS,
--# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--# See the License for the specific language governing permissions and
--# limitations under the License.
--#
--
  # Keyspace Name
  keyspace: stresscql
  
diff --cc doc/modules/cassandra/nav.adoc
index 0000000,c0d30ed..2188006
mode 000000,100644..100644
--- a/doc/modules/cassandra/nav.adoc
+++ b/doc/modules/cassandra/nav.adoc
@@@ -1,0 -1,97 +1,106 @@@
+ * Cassandra
+ ** xref:getting_started/index.adoc[Getting Started]	
+ *** xref:getting_started/installing.adoc[Installing Cassandra]
+ *** xref:getting_started/configuring.adoc[Configuring Cassandra]
+ *** xref:getting_started/querying.adoc[Inserting and querying]
+ *** xref:getting_started/drivers.adoc[Client drivers]
+ *** xref:getting_started/production.adoc[Production recommendations]
+ 
++** xref:new/index.adoc[What's new]
++*** xref:new/java11.adoc[Support for Java 11]
++*** xref:new/virtualtables.adoc[Virtual tables]
++*** xref:new/auditlogging.adoc[Audit logging]
++*** xref:new/fqllogging.adoc[Full query logging]
++*** xref:new/messaging.adoc[Improved internode Messaging]
++*** xref:new/streaming.adoc[Improved streaming]
++*** xref:new/transientreplication.adoc[Transient replication]
++
+ ** xref:architecture/index.adoc[Architecture]
+ *** xref:architecture/overview.adoc[Overview]
+ *** xref:architecture/dynamo.adoc[Dynamo]		
+ *** xref:architecture/storage_engine.adoc[Storage engine]
+ *** xref:architecture/guarantees.adoc[Guarantees]
+ 
+ ** xref:data_modeling/index.adoc[Data modeling]
+ *** xref:data_modeling/intro.adoc[Introduction]
+ *** xref:data_modeling/data_modeling_conceptual.adoc[Conceptual data modeling]
+ *** xref:data_modeling/data_modeling_rdbms.adoc[RDBMS design]
+ *** xref:data_modeling/data_modeling_queries.adoc[Defining application queries]
+ *** xref:data_modeling/data_modeling_logical.adoc[Logical data modeling]
+ *** xref:data_modeling/data_modeling_physical.adoc[Physical data modeling]
+ *** xref:data_modeling/data_modeling_refining.adoc[Evaluating and refining data models]
+ *** xref:data_modeling/data_modeling_schema.adoc[Defining database schema]
+ *** xref:data_modeling/data_modeling_tools.adoc[Cassandra data modeling tools]
+ 
+ ** xref:cql/index.adoc[Cassandra Query Language (CQL)]
+ *** xref:cql/definitions.adoc[Definitions]
+ *** xref:cql/types.adoc[Data types]
+ *** xref:cql/ddl.adoc[Data definition (DDL)]
+ *** xref:cql/dml.adoc[Data manipulation (DML)]
+ *** xref:cql/operators.adoc[Operators]
+ *** xref:cql/indexes.adoc[Secondary indexes]
+ *** xref:cql/mvs.adoc[Materialized views]
+ *** xref:cql/functions.adoc[Functions]
+ *** xref:cql/json.adoc[JSON]
+ *** xref:cql/security.adoc[Security]
+ *** xref:cql/triggers.adoc[Triggers]
+ *** xref:cql/appendices.adoc[Appendices]
+ *** xref:cql/changes.adoc[Changes]
+ *** xref:cql/SASI.adoc[SASI]
+ *** xref:cql/cql_singlefile.adoc[Single file of CQL information]
+ 
+ ** xref:configuration/index.adoc[Configuration]
+ *** xref:configuration/cass_yaml_file.adoc[cassandra.yaml]
+ *** xref:configuration/cass_rackdc_file.adoc[cassandra-rackdc.properties]
+ *** xref:configuration/cass_env_sh_file.adoc[cassandra-env.sh]
+ *** xref:configuration/cass_topo_file.adoc[cassandra-topologies.properties]
+ *** xref:configuration/cass_cl_archive_file.adoc[commitlog-archiving.properties]
+ *** xref:configuration/cass_logback_xml_file.adoc[logback.xml]
+ *** xref:configuration/cass_jvm_options_file.adoc[jvm-* files]
+ 
+ ** xref:operating/index.adoc[Operating]
+ *** xref:operating/snitch.adoc[Snitches]
+ *** xref:operating/topo_changes.adoc[Topology changes]
+ *** xref:operating/repair.adoc[Repair]
+ *** xref:operating/read_repair.adoc[Read repair]
+ *** xref:operating/hints.adoc[Hints]
+ *** xref:operating/bloom_filters.adoc[Bloom filters]
+ *** xref:operating/compression.adoc[Compression]
+ *** xref:operating/cdc.adoc[Change Data Capture (CDC)]
+ *** xref:operating/backups.adoc[Backups]
+ *** xref:operating/bulk_loading.adoc[Bulk loading]
+ *** xref:operating/metrics.adoc[Metrics]
+ *** xref:operating/security.adoc[Security]
+ *** xref:operating/hardware.adoc[Hardware]
+ *** xref:operating/audit_logging.adoc[Audit logging]
+ *** xref:operating/compaction/index.adoc[Compaction]		
+ 
+ ** xref:tools/index.adoc[Tools]
+ *** xref:tools/cqlsh.adoc[cqlsh: the CQL shell]
+ *** xref:tools/nodetool/nodetool.adoc[nodetool]
+ *** xref:tools/sstable/index.adoc[SSTable tools]
+ *** xref:tools/cassandra_stress.adoc[cassandra-stress]
+ 
+ ** xref:troubleshooting/index.adoc[Troubleshooting]
+ *** xref:troubleshooting/finding_nodes.adoc[Finding misbehaving nodes]
+ *** xref:troubleshooting/reading_logs.adoc[Reading Cassandra logs]
+ *** xref:troubleshooting/use_nodetool.adoc[Using nodetool]
+ *** xref:troubleshooting/use_tools.adoc[Using external tools to deep-dive]
+ 
+ ** xref:master@_:ROOT:development/index.adoc[Development]
+ *** xref:master@_:ROOT:development/gettingstarted.adoc[Getting started]
+ *** xref:master@_:ROOT:development/ide.adoc[Building and IDE integration]
+ *** xref:master@_:ROOT:development/testing.adoc[Testing]
+ *** xref:master@_:ROOT:development/patches.adoc[Contributing code changes]
+ *** xref:master@_:ROOT:development/code_style.adoc[Code style]
+ *** xref:master@_:ROOT:development/how_to_review.adoc[Review checklist]
+ *** xref:master@_:ROOT:development/how_to_commit.adoc[How to commit]
+ *** xref:master@_:ROOT:development/documentation.adoc[Working on documentation]
+ *** xref:master@_:ROOT:development/ci.adoc[Jenkins CI environment]
+ *** xref:master@_:ROOT:development/dependencies.adoc[Dependency management]
+ *** xref:master@_:ROOT:development/release_process.adoc[Release process]
+ 
+ ** xref:faq/index.adoc[FAQ]
+ 
+ ** xref:plugins/index.adoc[Plug-ins]
+ 
diff --cc doc/modules/cassandra/pages/getting_started/installing.adoc
index 0000000,668dbee..4d4ea06
mode 000000,100644..100644
--- a/doc/modules/cassandra/pages/getting_started/installing.adoc
+++ b/doc/modules/cassandra/pages/getting_started/installing.adoc
@@@ -1,0 -1,344 +1,344 @@@
+ = Installing Cassandra
 -:slug: Installing Cassandra
+ :tabs:
+ 
+ These are the instructions for deploying the supported releases of
+ Apache Cassandra on Linux servers.
+ 
+ Cassandra runs on a wide array of Linux distributions including (but not
+ limited to):
+ 
+ * Ubuntu, most notably LTS releases 16.04 to 18.04
+ * CentOS & RedHat Enterprise Linux (RHEL) including 6.6 to 7.7
+ * Amazon Linux AMIs including 2016.09 through to Linux 2
+ * Debian versions 8 & 9
+ * SUSE Enterprise Linux 12
+ 
+ This is not an exhaustive list of operating system platforms, nor is it
+ prescriptive. However users will be well-advised to conduct exhaustive
+ tests of their own particularly for less-popular distributions of Linux.
+ Deploying on older versions is not recommended unless you have previous
+ experience with the older distribution in a production environment.
+ 
+ == Prerequisites
+ 
+ * Install the latest version of Java 8, either the
+ http://www.oracle.com/technetwork/java/javase/downloads/index.html[Oracle
+ Java Standard Edition 8] or http://openjdk.java.net/[OpenJDK 8]. To
+ verify that you have the correct version of java installed, type
+ `java -version`.
++* *NOTE*: _Experimental_ support for Java 11 was added in Cassandra {40_version}
++(https://issues.apache.org/jira/browse/CASSANDRA-9608[CASSANDRA-9608]).
++Running Cassandra on Java 11 is _experimental_. Do so at your own risk.
++For more information, see
++https://github.com/apache/cassandra/blob/trunk/NEWS.txt[NEWS.txt].
+ * For using cqlsh, the latest version of
 -https://www.python.org/downloads/[Python 2.7]. To verify
++https://www.python.org/downloads/[Python 2.7] or Python 3.6+. To verify
+ that you have the correct version of Python installed, type
+ `python --version`.
+ 
+ == Choosing an installation method
+ 
+ There are three methods of installing Cassandra that are common:
+ 
 -* xref:getting_started/installing.adoc#docker[Docker image]
 -* xref:getting_started/installing.adoc#tarball[Tarball binary file]
 -* xref:getting_started/installing.adoc#package[Package installation (RPM, YUM)]
++* Docker image
++* Tarball binary file
++* Package installation (RPM, YUM)
+ 
 -If you are a current Docker user, installing a Docker image is simple.
++If you are a current Docker user, installing a Docker image is simple. 
+ You'll need to install Docker Desktop for Mac, Docker Desktop for Windows,
 -or have `docker` installed on Linux.
 -Pull the appropriate image and then start Cassandra with a run command.
++or have `docker` installed on Linux. 
++Pull the appropriate image and then start Cassandra with a run command. 
+ 
+ For most users, installing the binary tarball is also a simple choice.
+ The tarball unpacks all its contents into a single location with
+ binaries and configuration files located in their own subdirectories.
+ The most obvious attribute of the tarball installation is it does not
+ require `root` permissions and can be installed on any Linux
+ distribution.
+ 
+ Packaged installations require `root` permissions, and are most appropriate for
 -production installs.
 -Install the RPM build on CentOS and RHEL-based distributions if you want to
 -install Cassandra using YUM.
++production installs. 
++Install the RPM build on CentOS and RHEL-based distributions if you want to 
++install Cassandra using YUM. 
+ Install the Debian build on Ubuntu and other Debian-based
 -distributions if you want to install Cassandra using APT.
 -Note that both the YUM and APT methods required `root` permissions and
++distributions if you want to install Cassandra using APT. 
++Note that both the YUM and APT methods required `root` permissions and 
+ will install the binaries and configuration files as the `cassandra` OS user.
+ 
 -[#docker]
+ == Installing the docker image
+ 
+ [arabic, start=1]
+ . Pull the docker image. For the latest image, use:
+ 
 -[source, shell, subs="attributes+"]
++[source, shell]
+ ----
+ include::example$BASH/docker_pull.sh[]
+ ----
+ 
 -This `docker pull` command will get the specified version of the official
++This `docker pull` command will get the latest version of the official
+ Apache Cassandra image available from the https://hub.docker.com/_/cassandra[Dockerhub].
+ 
+ [arabic, start=2]
+ . Start Cassandra with a `docker run` command:
+ 
 -[source, shell, subs="attributes+"]
++[source, shell]
+ ----
+ include::example$BASH/docker_run.sh[]
+ ----
+ 
+ The `--name` option will be the name of the Cassandra cluster created.
+ 
+ [arabic, start=3]
+ . Start the CQL shell, `cqlsh` to interact with the Cassandra node created:
+ 
 -[source, shell, subs="attributes+"]
++[source, shell]
+ ----
+ include::example$BASH/docker_cqlsh.sh[]
+ ----
 -
 -[#tarball]
+ == Installing the binary tarball
+ 
+ include::partial$java_version.adoc[]
+ 
+ [arabic, start=2]
+ . Download the binary tarball from one of the mirrors on the
+ {cass_url}download/[Apache Cassandra Download] site.
+ For example, to download Cassandra {40_version}:
+ 
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/curl_install.sh[]
+ ----
+ 
+ NOTE: The mirrors only host the latest versions of each major supported
+ release. To download an earlier version of Cassandra, visit the
+ http://archive.apache.org/dist/cassandra/[Apache Archives].
+ 
+ [arabic, start=3]
+ . OPTIONAL: Verify the integrity of the downloaded tarball using one of
+ the methods https://www.apache.org/dyn/closer.cgi#verify[here]. For
+ example, to verify the hash of the downloaded file using GPG:
+ 
+ [{tabs}]
+ ====
+ Command::
+ +
+ --
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/verify_gpg.sh[]
+ ----
+ --
+ 
+ Result::
+ +
+ --
+ [source,plaintext]
+ ----
+ include::example$RESULTS/verify_gpg.result[]
+ ----
+ --
+ ====
+ 
+ Compare the signature with the SHA256 file from the Downloads site:
+ 
+ [{tabs}]
+ ====
+ Command::
+ +
+ --
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/curl_verify_sha.sh[]
+ ----
+ --
+ 
+ Result::
+ +
+ --
+ [source,plaintext]
+ ----
 -include::example$RESULTS/curl_verify_sha.result[]
++28757dde589f70410f9a6a95c39ee7e6cde63440e2b06b91ae6b200614fa364d
+ ----
+ --
+ ====
+ 
+ [arabic, start=4]
+ . Unpack the tarball:
+ 
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/tarball.sh[]
+ ----
+ 
 -The files will be extracted to the `apache-cassandra-{cass-tag-3x}/` directory.
++The files will be extracted to the `apache-cassandra-4.0.0/` directory.
+ This is the tarball installation location.
+ 
+ [arabic, start=5]
+ . Located in the tarball installation location are the directories for
+ the scripts, binaries, utilities, configuration, data and log files:
+ 
+ [source,plaintext]
+ ----
+ include::example$TEXT/tarball_install_dirs.txt[]
+ ----
+ <1> location of the commands to run cassandra, cqlsh, nodetool, and SSTable tools
+ <2> location of cassandra.yaml and other configuration files
+ <3> location of the commit logs, hints, and SSTables
+ <4> location of system and debug logs
+ <5>location of cassandra-stress tool
+ 
+ For information on how to configure your installation, see
+ {cass_url}doc/latest/getting_started/configuring.html[Configuring
+ Cassandra].
+ 
+ [arabic, start=6]
+ . Start Cassandra:
+ 
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/start_tarball.sh[]
+ ----
+ 
+ NOTE: This will run Cassandra as the authenticated Linux user.
+ 
+ include::partial$tail_syslog.adoc[]
+ You can monitor the progress of the startup with:
+ 
+ [{tabs}]
+ ====
+ Command::
+ +
+ --
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/tail_syslog.sh[]
+ ----
+ --
+ 
+ Result::
+ +
+ --
+ Cassandra is ready when you see an entry like this in the `system.log`:
+ 
+ [source,plaintext]
+ ----
+ include::example$RESULTS/tail_syslog.result[]
+ ----
+ --
+ ====
+ 
+ include::partial$nodetool_and_cqlsh.adoc[]
+ 
 -[#package]
+ == Installing the Debian packages
+ 
+ include::partial$java_version.adoc[]
+ 
+ [arabic, start=2]
+ . Add the Apache repository of Cassandra to the file
 -`cassandra.sources.list`.
++`cassandra.sources.list`. 
+ include::partial$package_versions.adoc[]
+ 
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/get_deb_package.sh[]
+ ----
+ 
+ [arabic, start=3]
+ . Add the Apache Cassandra repository keys to the list of trusted keys
+ on the server:
+ 
+ [{tabs}]
+ ====
+ Command::
+ +
+ --
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/add_repo_keys.sh[]
+ ----
+ --
+ 
+ Result::
+ +
+ --
+ [source,plaintext]
+ ----
+ include::example$RESULTS/add_repo_keys.result[]
+ ----
+ --
+ ====
+ 
+ [arabic, start=4]
+ . Update the package index from sources:
+ 
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/apt-get_update.sh[]
+ ----
+ 
+ [arabic, start=5]
+ . Install Cassandra with APT:
+ 
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/apt-get_cass.sh[]
+ ----
+ 
+ NOTE: For information on how to configure your installation, see
+ {cass_url}doc/latest/getting_started/configuring.html[Configuring
+ Cassandra].
+ 
+ include::partial$tail_syslog.adoc[]
+ 
+ include::partial$nodetool_and_cqlsh_nobin.adoc[]
+ 
+ == Installing the RPM packages
+ 
+ include::partial$java_version.adoc[]
+ 
+ [arabic, start=2]
+ . Add the Apache repository of Cassandra to the file
+ `/etc/yum.repos.d/cassandra.repo` (as the `root` user).
+ include::partial$package_versions.adoc[]
 -
++ 
+ [source,plaintext]
+ ----
+ include::example$RESULTS/add_yum_repo.result[]
+ ----
+ 
+ [arabic, start=3]
+ . Update the package index from sources:
+ 
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/yum_update.sh[]
+ ----
+ 
+ [arabic, start=4]
+ . Install Cassandra with YUM:
+ 
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/yum_cass.sh[]
+ ----
+ 
+ NOTE: A new Linux user `cassandra` will get created as part of the
+ installation. The Cassandra service will also be run as this user.
+ 
+ [arabic, start=5]
+ . Start the Cassandra service:
+ 
 -[source,shell, subs="attributes+"]
++[source,shell]
+ ----
+ include::example$BASH/yum_start.sh[]
+ ----
+ 
+ include::partial$tail_syslog.adoc[]
+ 
+ include::partial$nodetool_and_cqlsh_nobin.adoc[]
+ 
+ == Further installation info
+ 
+ For help with installation issues, see the
+ {cass_url}doc/latest/troubleshooting/index.html[Troubleshooting]
+ section.
diff --cc doc/modules/cassandra/pages/getting_started/quickstart.adoc
index 0000000,0f2e5b0..69b55a6
mode 000000,100644..100644
--- a/doc/modules/cassandra/pages/getting_started/quickstart.adoc
+++ b/doc/modules/cassandra/pages/getting_started/quickstart.adoc
@@@ -1,0 -1,100 +1,116 @@@
+ = Apache Cassandra Quickstart
+ :tabs:
+ 
+ _Interested in getting started with Cassandra? Follow these instructions._
+ 
+ *STEP 1: GET CASSANDRA USING DOCKER*
+ 
+ You'll need to have Docker Desktop for Mac, Docker Desktop for Windows, or
+ similar software installed on your computer.
+ 
 -[source, shell, subs="attributes+"]
++[source, plaintext]
+ ----
 -include::example$BASH/docker_pull.sh[]
++docker pull cassandra:latest
+ ----
+ 
+ Apache Cassandra is also available as a https://cassandra.apache.org/download/[tarball or package download].
+ 
+ *STEP 2: START CASSANDRA*
+ 
 -[source, shell, subs="attributes+"]
++[source, plaintext]
+ ----
 -include::example$BASH/docker_run.sh[]
++docker run --name cassandra cassandra
+ ----
+ 
+ *STEP 3: CREATE FILES*
+ 
+ In the directory where you plan to run the next step, create these two files
+ so that some data can be automatically inserted in the next step.
+ 
+ A _cqlshrc_ file will log into the Cassandra database with the default superuser:
+ 
+ [source, plaintext]
+ ----
+ [authentication]
+ 	username = cassandra
+ 	password = cassandra
+ ----
+ 
+ Create a _scripts_ directory and change to that directory.
+ The following _data.cql_ file will create a keyspace, the layer at which Cassandra
+ replicates its data, a table to hold the data, and insert some data:
+ 
 -[source, shell, subs="attributes+"]
++[source, plaintext]
+ ----
 -include::example$CQL/qs_create_ks.cql[]
 -include::example$CQL/qs_create_table.cql[]
 -include::example$CQL/qs_insert_data.cql[]
++# Create a keyspace
++CREATE KEYSPACE IF NOT EXISTS store WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : '1' };
++
++# Create a table
++CREATE TABLE IF NOT EXISTS store.shopping_cart  (
++	userid text PRIMARY KEY,
++	item_count int,
++	last_update_timestamp timestamp
++);
++
++# Insert some data
++INSERT INTO store.shopping_cart
++(userid, item_count, last_update_timestamp)
++VALUES ('9876', 2, toTimeStamp(toDate(now))));
++INSERT INTO store.shopping_cart
++(userid, item_count, last_update_timestamp)
++VALUES (1234, 5, toTimeStamp(toDate(now))));
+ ----
+ 
+ You should now have a _cqlshrc_ file and _<currentdir>/scripts/data.cql_ file.
+ 
+ *STEP 4: RUN CQLSH TO INTERACT*
+ 
+ Cassandra is a distributed database that can read and write data across multiple
+ nodes with  peer-to-peer replication. The Cassandra Query Language (CQL) is
+ similar to SQL but suited for the JOINless structure of Cassandra. The CQL
+ shell, or `cqlsh`, is one tool to use in interacting with the database.
+ 
 -[source, shell, subs="attributes+"]
++[source, plaintext]
+ ----
 -include::example$BASH/docker_run_qs.sh[]
++docker run --rm -it -v /<currentdir>/scripts:/scripts  \
++-v /<currentdir/cqlshrc:/.cassandra/cqlshrc  \
++--env CQLSH_HOST=host.docker.internal --env CQLSH_PORT=9042  nuvo/docker-cqlsh
+ ----
+ 
+ For this quickstart, this cqlsh docker image also loads some data automatically,
+ so you can start running queries.
+ 
+ *STEP 5: READ SOME DATA*
+ 
 -[source, shell, subs="attributes+"]
++[source, plaintext]
+ ----
 -include::example$CQL/qs_select_data.cql[]
++SELECT * FROM store.shopping_cart;
+ ----
+ 
+ *STEP 6: WRITE SOME MORE DATA*
+ 
 -[source, shell, subs="attributes+"]
++[source, plaintext]
+ ----
 -include::example$CQL/qs_insert_data_again.cql[]
++INSERT (userid, item_count) VALUES (4567, 20) INTO store.shopping_cart;
+ ----
+ 
+ *STEP 7: TERMINATE CASSANDRA*
+ 
 -[source, shell, subs="attributes+"]
++[source, plaintext]
+ ----
 -include::example$BASH/docker_remove.sh[]
++docker rm cassandra
+ ----
+ 
+ *CONGRATULATIONS!*
+ 
+ Hey, that wasn't so hard, was it?
+ 
+ To learn more, we suggest the following next steps:
+ 
+ * Read through the *need link*[Overview] to learn main concepts and how Cassandra works at a
+ high level.
+ * To understand Cassandra in more detail, head over to the
+ https://cassandra.apache.org/doc/latest/[Docs].
+ * Browse through the https://cassandra.apache.org/case-studies/[Case Studies] to
+ learn how other users in our worldwide community are getting value out of
+ Cassandra.
diff --cc doc/modules/cassandra/pages/new/Figure_1.jpg
index ccaec67,0000000..ccaec67
mode 100644,000000..100644
Binary files differ
diff --cc doc/modules/cassandra/pages/new/Figure_2.jpg
index 099e15f,0000000..099e15f
mode 100644,000000..100644
Binary files differ
diff --cc doc/modules/cassandra/pages/new/auditlogging.adoc
index 0000000,0000000..e81776a
new file mode 100644
--- /dev/null
+++ b/doc/modules/cassandra/pages/new/auditlogging.adoc
@@@ -1,0 -1,0 +1,464 @@@
++= Audit Logging
++
++Audit Logging is a new feature in Apache Cassandra 4.0 (https://issues.apache.org/jira/browse/CASSANDRA-12151[CASSANDRA-12151]).
++This new feature is safe for production use, with configurable limits to heap memory and disk space to prevent out-of-memory errors.
++All database activity is logged per-node as file-based records to a specified local filesystem directory. 
++The audit log files are rolled periodically based on a configurable value. 
++
++Some of the features of audit logging are:
++
++* No additional database capacity is needed to store audit logs.
++* No query tool is required to store the audit logs.
++* Latency of database operations is not affected, so there is no performance impact.
++* Heap memory usage is bounded by a weighted queue, with configurable maximum weight sitting in front of logging thread.
++* Disk utilization is bounded by a configurable size, deleting old log segments once the limit is reached.
++* Can be enabled, disabled, or reset (to delete on-disk data) using the JMX tool, ``nodetool``.
++* Can configure the settings in either the `cassandra.yaml` file or by using ``nodetool``.
++
++Audit logging includes all CQL requests, both successful and failed. 
++It also captures all successful and failed authentication and authorization events, such as login attempts. 
++The difference between Full Query Logging (FQL) and audit logging is that FQL captures only successful CQL requests, which allow replay or comparison of logs.
++Audit logs are useful for compliance and debugging, while FQL is useful for debugging, performance benchmarking, testing and auditing CQL queries.
++
++== Audit information logged
++
++The audit log contains:
++
++* all events in the configured keyspaces to include
++* all events in the configured categories to include
++* all events executed by the configured users to include
++
++The audit log does not contain:
++
++* configuration changes made in `cassandra.yaml` file
++* `nodetool` commands
++
++The audit log is a series of log entries. 
++An audit log entry contains:
++
++* keyspace (String) - Keyspace on which request is made
++* operation (String) - Database operation such as CQL command
++* user (String) - User name
++* scope (String) - Scope of request such as Table/Function/Aggregate name
++* type (AuditLogEntryType) - Type of request
++** CQL Audit Log Entry Type
++** Common Audit Log Entry Type
++* source (InetAddressAndPort) - Source IP Address from which request originated
++* timestamp (long ) - Timestamp of the request
++* batch (UUID) - Batch of request
++* options (QueryOptions) - CQL Query options
++* state (QueryState) - State related to a given query
++
++Each entry contains all applicable attributes for the given event, concatenated with a pipe (|).
++
++CQL audit log entry types are the following CQL commands. Each command is assigned to a particular specified category to log:
++
++[width="100%",cols="20%,80%",options="header",]
++|===
++| Category | CQL commands
++
++| DDL | ALTER_KEYSPACE, CREATE_KEYSPACE, DROP_KEYSPACE, 
++ALTER_TABLE, CREATE_TABLE, DROP_TABLE, 
++CREATE_FUNCTION, DROP_FUNCTION, 
++CREATE_AGGREGATE, DROP_AGGREGATE, 
++CREATE_INDEX, DROP_INDEX, 
++ALTER_TYPE, CREATE_TYPE, DROP_TYPE,
++CREATE_TRIGGER, DROP_TRIGGER,
++ALTER_VIEW, CREATE_VIEW, DROP_VIEW,
++TRUNCATE
++| DML | BATCH, DELETE, UPDATE
++| DCL | GRANT, REVOKE, 
++ALTER_ROLE, CREATE_ROLE, DROP_ROLE, 
++LIST_ROLES, LIST_PERMISSIONS, LIST_USERS
++| OTHER | USE_KEYSPACE
++| QUERY | SELECT
++| PREPARE | PREPARE_STATEMENT
++|===
++
++Common audit log entry types are one of the following:
++
++[width="100%",cols="50%,50%",options="header",]
++|===
++| Category | CQL commands
++
++| AUTH | LOGIN_SUCCESS, LOGIN_ERROR, UNAUTHORIZED_ATTEMPT
++| ERROR | REQUEST_FAILURE
++|===
++
++== Configuring audit logging in cassandra.yaml
++
++The `cassandra.yaml` file can be used to configure and enable audit logging.
++Configuration and enablement may be the same or different on each node, depending on the `cassandra.yaml` file settings.
++Audit logs are generated on each enabled node, so logs on each node will have that node's queries.
++All options for audit logging can be set in the `cassandra.yaml` file under the ``audit_logging_options:``.
++
++The file includes the following options that can be uncommented for use:
++
++[source, yaml]
++----
++# Audit logging - Logs every incoming CQL command request, authentication to a node. See the docs
++# on audit_logging for full details about the various configuration options.
++audit_logging_options:
++    enabled: false
++    logger:
++      - class_name: BinAuditLogger
++    # audit_logs_dir:
++    # included_keyspaces:
++    # excluded_keyspaces: system, system_schema, system_virtual_schema
++    # included_categories:
++    # excluded_categories:
++    # included_users:
++    # excluded_users:
++    # roll_cycle: HOURLY
++    # block: true
++    # max_queue_weight: 268435456 # 256 MiB
++    # max_log_size: 17179869184 # 16 GiB
++    ## archive command is "/path/to/script.sh %path" where %path is replaced with the file being rolled:
++    # archive_command:
++    # max_archive_retries: 10
++----
++
++=== enabled
++
++Audit logging is enabled by setting the `enabled` option to `true` in
++the `audit_logging_options` setting. 
++If this option is enabled, audit logging will start when Cassandra is started.
++For example, ``enabled: true``.
++
++=== logger
++
++The type of audit logger is set with the `logger` option. 
++Supported values are: `BinAuditLogger` (default), `FileAuditLogger` and `NoOpAuditLogger`.
++`BinAuditLogger` logs events to a file in binary format. 
++`FileAuditLogger` uses the standard logging mechanism, `slf4j` to log events to the `audit/audit.log` file. It is a synchronous, file-based audit logger. The roll_cycle will be set in the `logback.xml` file.
++`NoOpAuditLogger` is a no-op implementation of the audit logger that shoudl be specified when audit logging is disabled.
++
++For example:
++
++[source, yaml]
++----
++logger: 
++  - class_name: FileAuditLogger
++----
++
++=== audit_logs_dir
++
++To write audit logs, an existing directory must be set in ``audit_logs_dir``.
++
++The directory must have appropriate permissions set to allow reading, writing, and executing.
++Logging will recursively delete the directory contents as needed.
++Do not place links in this directory to other sections of the filesystem.
++For example, ``audit_logs_dir: /cassandra/audit/logs/hourly``.
++
++The audit log directory can also be configured using the system property `cassandra.logdir.audit`, which by default is set to `cassandra.logdir + /audit/`.
++
++=== included_keyspaces and excluded_keyspaces
++
++Set the keyspaces to include with the `included_keyspaces` option and
++the keyspaces to exclude with the `excluded_keyspaces` option. 
++By default, `system`, `system_schema` and `system_virtual_schema` are excluded, and all other keyspaces are included.
++
++For example:
++[source, yaml]
++----
++included_keyspaces: test, demo
++excluded_keyspaces: system, system_schema, system_virtual_schema
++----
++
++=== included_categories and excluded_categories
++
++The categories of database operations to include are specified with the `included_categories` option as a comma-separated list. 
++The categories of database operations to exclude are specified with `excluded_categories` option as a comma-separated list. 
++The supported categories for audit log are: `AUTH`, `DCL`, `DDL`, `DML`, `ERROR`, `OTHER`, `PREPARE`, and `QUERY`.
++By default all supported categories are included, and no category is excluded. 
++
++[source, yaml]
++----
++included_categories: AUTH, ERROR, DCL
++excluded_categories: DDL, DML, QUERY, PREPARE
++----
++
++=== included_users and excluded_users
++
++Users to audit log are set with the `included_users` and `excluded_users` options. 
++The `included_users` option specifies a comma-separated list of users to include explicitly.
++The `excluded_users` option specifies a comma-separated list of users to exclude explicitly.
++By default all users are included, and no users are excluded. 
++
++[source, yaml]
++----
++included_users: 
++excluded_users: john, mary
++----
++
++=== roll_cycle
++
++The ``roll_cycle`` defines the frequency with which the audit log segments are rolled.
++Supported values are ``HOURLY`` (default), ``MINUTELY``, and ``DAILY``.
++For example: ``roll_cycle: DAILY``
++
++=== block
++
++The ``block`` option specifies whether audit logging should block writing or drop log records if the audit logging falls behind. Supported boolean values are ``true`` (default) or ``false``.
++For example: ``block: false`` to drop records
++
++=== max_queue_weight
++
++The ``max_queue_weight`` option sets the maximum weight of in-memory queue for records waiting to be written to the file before blocking or dropping.  The option must be set to a positive value. The default value is 268435456, or 256 MiB.
++For example, to change the default: ``max_queue_weight: 134217728 # 128 MiB``
++
++=== max_log_size
++
++The ``max_log_size`` option sets the maximum size of the rolled files to retain on disk before deleting the oldest file.  The option must be set to a positive value. The default is 17179869184, or 16 GiB.
++For example, to change the default: ``max_log_size: 34359738368 # 32 GiB``
++
++=== archive_command
++
++The ``archive_command`` option sets the user-defined archive script to execute on rolled log files.
++For example: ``archive_command: /usr/local/bin/archiveit.sh %path # %path is the file being rolled``
++
++=== max_archive_retries
++
++The ``max_archive_retries`` option sets the max number of retries of failed archive commands. The default is 10.
++For example: ``max_archive_retries: 10``
++
++
++An audit log file could get rolled for other reasons as well such as a
++log file reaches the configured size threshold.
++
++Audit logging can also be configured using ``nodetool` when enabling the feature, and will override any values set in the `cassandra.yaml` file, as discussed in the next section.
++
++
++== Enabling Audit Logging with ``nodetool``
++ 
++Audit logging is enabled on a per-node basis using the ``nodetool enableauditlog`` command. The logging directory must be defined with ``audit_logs_dir`` in the `cassandra.yaml` file or uses the default value ``cassandra.logdir.audit``.
++
++The syntax of the ``nodetool enableauditlog`` command has all the same options that can be set in the ``cassandra.yaml`` file except ``audit_logs_dir``.
++In addition, ``nodetool`` has options to set which host and port to run the command on, and username and password if the command requires authentication.
++
++[source, plaintext]
++----
++       nodetool [(-h <host> | --host <host>)] [(-p <port> | --port <port>)]
++                [(-pp | --print-port)] [(-pw <password> | --password <password>)]
++                [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
++                [(-u <username> | --username <username>)] enableauditlog
++                [--excluded-categories <excluded_categories>]
++                [--excluded-keyspaces <excluded_keyspaces>]
++                [--excluded-users <excluded_users>]
++                [--included-categories <included_categories>]
++                [--included-keyspaces <included_keyspaces>]
++                [--included-users <included_users>] [--logger <logger>]
++
++OPTIONS
++        --excluded-categories <excluded_categories>
++            Comma separated list of Audit Log Categories to be excluded for
++            audit log. If not set the value from cassandra.yaml will be used
++
++        --excluded-keyspaces <excluded_keyspaces>
++            Comma separated list of keyspaces to be excluded for audit log. If
++            not set the value from cassandra.yaml will be used
++
++        --excluded-users <excluded_users>
++            Comma separated list of users to be excluded for audit log. If not
++            set the value from cassandra.yaml will be used
++
++        -h <host>, --host <host>
++            Node hostname or ip address
++
++        --included-categories <included_categories>
++            Comma separated list of Audit Log Categories to be included for
++            audit log. If not set the value from cassandra.yaml will be used
++
++        --included-keyspaces <included_keyspaces>
++            Comma separated list of keyspaces to be included for audit log. If
++            not set the value from cassandra.yaml will be used
++
++        --included-users <included_users>
++            Comma separated list of users to be included for audit log. If not
++            set the value from cassandra.yaml will be used
++
++        --logger <logger>
++            Logger name to be used for AuditLogging. Default BinAuditLogger. If
++            not set the value from cassandra.yaml will be used
++
++        -p <port>, --port <port>
++            Remote jmx agent port number
++
++        -pp, --print-port
++            Operate in 4.0 mode with hosts disambiguated by port number
++
++        -pw <password>, --password <password>
++            Remote jmx agent password
++
++        -pwf <passwordFilePath>, --password-file <passwordFilePath>
++            Path to the JMX password file
++
++        -u <username>, --username <username>
++            Remote jmx agent username
++----
++
++To enable audit logging, run following command on each node in the cluster on which you want to enable logging:
++
++[source, bash]
++----
++$ nodetool enableauditlog
++----
++
++== Disabling audit logging
++
++Use the `nodetool disableauditlog` command to disable audit logging. 
++
++== Viewing audit logs
++
++The `auditlogviewer` tool is used to view (dump) audit logs if the logger was ``BinAuditLogger``.. 
++``auditlogviewer`` converts the binary log files into human-readable format; only the audit log directory must be supplied as a command-line option.
++If the logger ``FileAuditLogger`` was set, the log file are already in human-readable format and ``auditlogviewer`` is not needed to read files. 
++
++
++The syntax of `auditlogviewer` is:
++
++[source, plaintext]
++----
++auditlogviewer
++
++Audit log files directory path is a required argument.
++usage: auditlogviewer <path1> [<path2>...<pathN>] [options]
++--
++View the audit log contents in human readable format
++--
++Options are:
++-f,--follow       Upon reaching the end of the log continue indefinitely
++                  waiting for more records
++-h,--help         display this help message
++-r,--roll_cycle   How often to roll the log file was rolled. May be
++                  necessary for Chronicle to correctly parse file names. (MINUTELY, HOURLY,
++                  DAILY). Default HOURLY.
++----
++
++== Example
++
++[arabic, start=1]
++. To demonstrate audit logging, first configure the ``cassandra.yaml`` file with the following settings:
++
++[source, yaml]
++----
++audit_logging_options:
++   enabled: true
++   logger: BinAuditLogger
++   audit_logs_dir: "/cassandra/audit/logs/hourly"
++   # included_keyspaces:
++   # excluded_keyspaces: system, system_schema, system_virtual_schema
++   # included_categories:
++   # excluded_categories:
++   # included_users:
++   # excluded_users:
++   roll_cycle: HOURLY
++   # block: true
++   # max_queue_weight: 268435456 # 256 MiB
++   # max_log_size: 17179869184 # 16 GiB
++   ## archive command is "/path/to/script.sh %path" where %path is replaced with the file being rolled:
++   # archive_command:
++   # max_archive_retries: 10
++----
++
++[arabic, start=2]
++. Create the audit log directory `/cassandra/audit/logs/hourly` and set the directory permissions to read, write, and execute for all. 
++
++[arabic, start=3]
++. Now create a demo keyspace and table and insert some data using ``cqlsh``:
++
++[source, cql]
++----
++ cqlsh> CREATE KEYSPACE auditlogkeyspace
++   ... WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};
++ cqlsh> USE auditlogkeyspace;
++ cqlsh:auditlogkeyspace> CREATE TABLE t (
++ ...id int,
++ ...k int,
++ ...v text,
++ ...PRIMARY KEY (id)
++ ... );
++ cqlsh:auditlogkeyspace> INSERT INTO t (id, k, v) VALUES (0, 0, 'val0');
++ cqlsh:auditlogkeyspace> INSERT INTO t (id, k, v) VALUES (0, 1, 'val1');
++----
++
++All the supported CQL commands will be logged to the audit log directory.
++
++[arabic, start=4]
++. Change directory to the audit logs directory.
++
++[source, bash]
++----
++$ cd /cassandra/audit/logs/hourly
++----
++
++[arabic, start=5]
++. List the audit log files and directories. 
++
++[source, bash]
++----
++$ ls -l
++----
++
++You should see results similar to:
++
++[source, plaintext]
++----
++total 28
++-rw-rw-r--. 1 ec2-user ec2-user    65536 Aug  2 03:01 directory-listing.cq4t
++-rw-rw-r--. 1 ec2-user ec2-user 83886080 Aug  2 03:01 20190802-02.cq4
++-rw-rw-r--. 1 ec2-user ec2-user 83886080 Aug  2 03:01 20190802-03.cq4
++----
++
++The audit log files will all be listed with a `.cq4` file type. The audit directory is of `.cq4t` type.
++
++[arabic, start=6]
++. Run `auditlogviewer` tool to view the audit logs. 
++
++[source, bash]
++----
++$ auditlogviewer /cassandra/audit/logs/hourly
++----
++
++This command will return a readable version of the log. Here is a partial sample of the log for the commands in this demo:
++
++[source, plaintext]
++----
++WARN  03:12:11,124 Using Pauser.sleepy() as not enough processors, have 2, needs 8+
++Type: AuditLog
++LogMessage:
++user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564711427328|type :USE_KEYSPACE|category:OTHER|ks:auditlogkeyspace|operation:USE AuditLogKeyspace;
++Type: AuditLog
++LogMessage:
++user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564711427329|type :USE_KEYSPACE|category:OTHER|ks:auditlogkeyspace|operation:USE "auditlogkeyspace"
++Type: AuditLog
++LogMessage:
++user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564711446279|type :SELECT|category:QUERY|ks:auditlogkeyspace|scope:t|operation:SELECT * FROM t;
++Type: AuditLog
++LogMessage:
++user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564713878834|type :DROP_TABLE|category:DDL|ks:auditlogkeyspace|scope:t|operation:DROP TABLE IF EXISTS
++AuditLogKeyspace.t;
++Type: AuditLog
++LogMessage:
++user:anonymous|host:10.0.2.238:7000|source:/3.91.56.164|port:42382|timestamp:1564714618360|ty
++pe:REQUEST_FAILURE|category:ERROR|operation:CREATE KEYSPACE AuditLogKeyspace
++WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};; Cannot add
++existing keyspace "auditlogkeyspace"
++Type: AuditLog
++LogMessage:
++user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564714690968|type :DROP_KEYSPACE|category:DDL|ks:auditlogkeyspace|operation:DROP KEYSPACE AuditLogKeyspace;
++Type: AuditLog
++LogMessage:
++user:anonymous|host:10.0.2.238:7000|source:/3.91.56.164|port:42406|timestamp:1564714708329|ty pe:CREATE_KEYSPACE|category:DDL|ks:auditlogkeyspace|operation:CREATE KEYSPACE
++AuditLogKeyspace
++WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};
++Type: AuditLog
++LogMessage:
++user:anonymous|host:10.0.2.238:7000|source:/127.0.0.1|port:46264|timestamp:1564714870678|type :USE_KEYSPACE|category:OTHER|ks:auditlogkeyspace|operation:USE auditlogkeyspace;
++[ec2-user@ip-10-0-2-238 hourly]$
++----
++
++== Diagnostic events for user audit logging
++
++Any native transport-enabled client can subscribe to audit log events for diagnosing cluster issues.
++These events can be consumed by external tools to implement a Cassandra user auditing solution.
diff --cc doc/modules/cassandra/pages/new/fqllogging.adoc
index 20085da,0000000..84febb5
mode 100644,000000..100644
--- a/doc/modules/cassandra/pages/new/fqllogging.adoc
+++ b/doc/modules/cassandra/pages/new/fqllogging.adoc
@@@ -1,618 -1,0 +1,566 @@@
- .. Licensed to the Apache Software Foundation (ASF) under one
- .. or more contributor license agreements.  See the NOTICE file
- .. distributed with this work for additional information
- .. regarding copyright ownership.  The ASF licenses this file
- .. to you under the Apache License, Version 2.0 (the
- .. "License"); you may not use this file except in compliance
- .. with the License.  You may obtain a copy of the License at
- ..
- ..     http://www.apache.org/licenses/LICENSE-2.0
- ..
- .. Unless required by applicable law or agreed to in writing, software
- .. distributed under the License is distributed on an "AS IS" BASIS,
- .. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- .. See the License for the specific language governing permissions and
- .. limitations under the License.
- 
- Full Query Logging (FQL)
- ========================
- 
- Apache Cassandra 4.0 adds a new highly performant feature that supports live query logging (`CASSANDRA-13983 <https://issues.apache.org/jira/browse/CASSANDRA-13983>`_). 
++= Full Query Logging
++
++Apache Cassandra 4.0 adds a new highly performant feature that supports live query logging (https://issues.apache.org/jira/browse/CASSANDRA-13983[CASSANDRA-13983]).
 +FQL is safe for production use, with configurable limits to heap memory and disk space to prevent out-of-memory errors.
- This feature is useful for live traffic capture, as well as traffic replay. The tool provided can be used for both debugging query traffic and migration.
++This feature is useful for live traffic capture, as well as traffic replay. 
++The tool provided can be used for both debugging query traffic and migration.
 +New ``nodetool`` options are also added to enable, disable or reset FQL, as well as a new tool to read and replay the binary logs.
- The full query logging (FQL) capability uses `Chronicle-Queue <http://github.com/OpenHFT/Chronicle-Queue>`_ to rotate a log of queries. 
++The full query logging (FQL) capability uses http://github.com/OpenHFT/Chronicle-Queue[Chronicle-Queue] to rotate a log of queries.
 +Full query logs will be referred to as *logs* for the remainder of the page.
 +
 +Some of the features of FQL are:
 +
- - The impact on query latency is reduced by asynchronous single-thread log entry writes to disk.
- - Heap memory usage is bounded by a weighted queue, with configurable maximum weight sitting in front of logging thread.
- - If the weighted queue is full, producers can be blocked or samples can be dropped.
- - Disk utilization is bounded by a configurable size, deleting old log segments once the limit is reached.
- - A flexible schema binary format, `Chronicle-Wire <http://github.com/OpenHFT/Chronicle-Wire>`_, for on-disk serialization that can skip unrecognized fields, add new ones, and omit old ones.
- - Can be enabled, disabled, or reset (to delete on-disk data) using the JMX tool, ``nodetool``.
- - Can configure the settings in either the `cassandra.yaml` file or by using ``nodetool``.
- - Introduces new ``fqltool`` that currently can ``Dump`` the binary logs to a readable format. Other options are ``Replay`` and ``Compare``.
++* The impact on query latency is reduced by asynchronous single-thread log entry writes to disk.
++* Heap memory usage is bounded by a weighted queue, with configurable maximum weight sitting in front of logging thread.
++* If the weighted queue is full, producers can be blocked or samples can be dropped.
++* Disk utilization is bounded by a configurable size, deleting old log segments once the limit is reached.
++* A flexible schema binary format, http://github.com/OpenHFT/Chronicle-Wire[Chronicle-Wire], for on-disk serialization that can skip unrecognized fields, add new ones, and omit old ones.
++* Can be enabled, disabled, or reset (to delete on-disk data) using the JMX tool, ``nodetool``.
++* Can configure the settings in either the `cassandra.yaml` file or by using ``nodetool``.
++* Introduces new ``fqltool`` that currently can ``Dump`` the binary logs to a readable format. Other options are ``Replay`` and ``Compare``.
 +
- FQL logs all successful Cassandra Query Language (CQL) requests, both events that modify the data and those that query. 
++FQL logs all successful Cassandra Query Language (CQL) requests, both events that modify the data and those that query.
 +While audit logs also include CQL requests, FQL logs only the CQL request. This difference means that FQL can be used to replay or compare logs, which audit logging cannot. FQL is useful for debugging, performance benchmarking, testing and auditing CQL queries, while audit logs are useful for compliance.
 +
- Currently DCL statements containing passwords are logged for informational purposes but for security reasons they are not available for replay.
- Replay of those statements will be unsuccessful operation because everything after the word password in a DCL statement
- will be obfuscated as *******.
- 
 +In performance testing, FQL appears to have little or no overhead in ``WRITE`` only workloads, and a minor overhead in ``MIXED`` workload.
 +
- Query information logged
- ------------------------
++== Query information logged
 +
 +The query log contains:
 +
- - all queries invoked 
- - approximate time they were invoked 
- - any parameters necessary to bind wildcard values 
- - all query options 
++* all queries invoked
++* approximate time they were invoked
++* any parameters necessary to bind wildcard values
++* all query options
 +
- The logger writes single or batched CQL queries after they finish, so only successfully completed queries are logged. Failed or timed-out queries are not logged. Different data is logged, depending on the type of query. 
++The logger writes single or batched CQL queries after they finish, so only successfully completed queries are logged. 
++Failed or timed-out queries are not logged. Different data is logged, depending on the type of query.
 +
 +A single CQL query log entry contains:
 +
- - query - CQL query text
- - queryOptions - Options associated with the query invocation
- - queryState - Timestamp state associated with the query invocation
- - queryTimeMillis - Approximate time in milliseconds since the epoch since the query was invoked
++* query - CQL query text
++* queryOptions - Options associated with the query invocation
++* queryState - Timestamp state associated with the query invocation
++* queryTimeMillis - Approximate time in milliseconds since the epoch since the query was invoked
 +
 +A batch CQL query log entry contains:
 +
- - queries - CQL text of the queries
- - queryOptions - Options associated with the query invocation
- - queryState - Timestamp state associated with the query invocation
- - batchTimeMillis - Approximate time in milliseconds since the epoch since the batch was invoked
- - type - The type of the batch
- - values - Values to bind to as parameters for the queries
++* queries - CQL text of the queries
++* queryOptions - Options associated with the query invocation
++* queryState - Timestamp state associated with the query invocation
++* batchTimeMillis - Approximate time in milliseconds since the epoch since the batch was invoked
++* type - The type of the batch
++* values - Values to bind to as parameters for the queries
 +
- Because FQL is backed by `Binlog`, the performance and footprint are predictable, with minimal impact on log record producers. 
++Because FQL is backed by `Binlog`, the performance and footprint are predictable, with minimal impact on log record producers.
 +Performance safety prevents the producers from overloading the log, using a weighted queue to drop records if the logging falls behind.
 +Single-thread asynchronous writing produces the logs. Chronicle-Queue provides an easy method of  rolling the logs.
 +
- Logging information logged
- --------------------------
++== Logging information logged
 +
 +FQL also tracks information about the stored log files:
 +
- - Stored log files that are added and their storage impact. Deletes them if over storage limit.
- - The log files in Chronicle-Queue that have already rolled
- - The number of bytes in the log files that have already rolled
++* Stored log files that are added and their storage impact. Deletes them if over storage limit.
++* The log files in Chronicle-Queue that have already rolled
++* The number of bytes in the log files that have already rolled
 +
- Logging sequence
- ----------------
++== Logging sequence
 +
 +The logger follows a well-defined sequence of events:
 +
- 1. The consumer thread that writes log records is started. This action can occur only once.
- 2. The consumer thread offers a record to the log. If the in-memory queue is full, the record will be dropped and offer returns a `false` value.
- 3. If accepted, the record is entered into the log. If the in-memory queue is full, the putting thread will be blocked until there is space or it is interrupted.
- 4. The buffers are cleaned up at thread exit. Finalization will check again, to ensure there are no stragglers in the queue.
- 5. The consumer thread is stopped. It can be called multiple times.
++. The consumer thread that writes log records is started. This action can occur only once.
++. The consumer thread offers a record to the log. If the in-memory queue is full, the record will be dropped and offer returns a `false` value.
++. If accepted, the record is entered into the log. If the in-memory queue is full, the putting thread will be blocked until there is space or it is interrupted.
++. The buffers are cleaned up at thread exit. Finalization will check again, to ensure there are no stragglers in the queue.
++. The consumer thread is stopped. It can be called multiple times.
 +
- Using FQL
- ---------
++== Using FQL
 +
- To use FQL, two actions must be completed. FQL must be configured using either the `cassandra.yaml` file or ``nodetool``, and logging must be enabled using ``nodetool enablefullquerylog``. 
- Both actions are completed on a per-node basis.
++To use FQL, two actions must be completed. FQL must be configured using either the `cassandra.yaml` file or ``nodetool``, and logging must be enabled using ``nodetool enablefullquerylog``.
 +With either method, at a minimum, the path to the log directory must be specified.
++Both actions are completed on a per-node basis.
 +Full query logs are generated on each enabled node, so logs on each node will have that node's queries.
 +
- Configuring FQL in cassandra.yaml
- ---------------------------------
++== Configuring FQL in cassandra.yaml
 +
- The `cassandra.yaml` file can be used to configure FQL before enabling the feature with ``nodetool``. 
++The `cassandra.yaml` file can be used to configure FQL before enabling the feature with ``nodetool``.
 +
 +The file includes the following options that can be uncommented for use:
 +
- :: 
- 
-  # default options for full query logging - these can be overridden from command line
-  # when executing nodetool enablefullquerylog
-  #full_query_logging_options:
-     # log_dir:
-     # roll_cycle: HOURLY
-     # block: true
-     # max_queue_weight: 268435456 # 256 MiB
-     # max_log_size: 17179869184 # 16 GiB
-     ## archive command is "/path/to/script.sh %path" where %path is replaced with the file being rolled:
-     # archive_command:
-     # max_archive_retries: 10
- 
- log_dir
- ^^^^^^^
- 
- To write logs, an existing directory must be set in ``log_dir``. 
- 
- The directory must have appropriate permissions set to allow reading, writing, and executing. 
- Logging will recursively delete the directory contents as needed. 
- Do not place links in this directory to other sections of the filesystem. 
++[source, yaml]
++----
++# default options for full query logging - these can be overridden from command line
++# when executing nodetool enablefullquerylog
++#full_query_logging_options:
++   # log_dir:
++   # roll_cycle: HOURLY
++   # block: true
++   # max_queue_weight: 268435456 # 256 MiB
++   # max_log_size: 17179869184 # 16 GiB
++   # archive command is "/path/to/script.sh %path" where %path is replaced with the file being rolled:
++   # archive_command:
++   # max_archive_retries: 10
++----
++
++=== log_dir
++
++To write logs, an existing directory must be set in ``log_dir``.
++
++The directory must have appropriate permissions set to allow reading, writing, and executing.
++Logging will recursively delete the directory contents as needed.
++Do not place links in this directory to other sections of the filesystem.
 +For example, ``log_dir: /tmp/cassandrafullquerylog``.
 +
- roll_cycle
- ^^^^^^^^^^
++=== roll_cycle
 +
- The ``roll_cycle`` defines the frequency with which the log segments are rolled. 
++The ``roll_cycle`` defines the frequency with which the log segments are rolled.
 +Supported values are ``HOURLY`` (default), ``MINUTELY``, and ``DAILY``.
 +For example: ``roll_cycle: DAILY``
 +
- block
- ^^^^^
++=== block
 +
 +The ``block`` option specifies whether FQL should block writing or drop log records if FQL falls behind. Supported boolean values are ``true`` (default) or ``false``.
 +For example: ``block: false`` to drop records
 +
- max_queue_weight
- ^^^^^^^^^^^^^^^^
++=== max_queue_weight
 +
 +The ``max_queue_weight`` option sets the maximum weight of in-memory queue for records waiting to be written to the file before blocking or dropping.  The option must be set to a positive value. The default value is 268435456, or 256 MiB.
 +For example, to change the default: ``max_queue_weight: 134217728 # 128 MiB``
 +
- max_log_size
- ^^^^^^^^^^^^
++=== max_log_size
 +
 +The ``max_log_size`` option sets the maximum size of the rolled files to retain on disk before deleting the oldest file.  The option must be set to a positive value. The default is 17179869184, or 16 GiB.
 +For example, to change the default: ``max_log_size: 34359738368 # 32 GiB``
 +
- archive_command
- ^^^^^^^^^^^^^^^
++=== archive_command
 +
- The ``archive_command`` option sets the user-defined archive script to execute on rolled log files. 
- When not defined, files are deleted, with a default of ``""`` which then maps to `org.apache.cassandra.utils.binlog.DeletingArchiver`.
++The ``archive_command`` option sets the user-defined archive script to execute on rolled log files.
++When not defined, files are deleted, with the default ``""`` which then maps to `org.apache.cassandra.utils.binlog.DeletingArchiver`.
 +For example: ``archive_command: /usr/local/bin/archiveit.sh %path # %path is the file being rolled``
 +
- max_archive_retries
- ^^^^^^^^^^^^^^^^^^^
++=== max_archive_retries
 +
 +The ``max_archive_retries`` option sets the max number of retries of failed archive commands. The default is 10.
 +For example: ``max_archive_retries: 10``
 +
 +FQL can also be configured using ``nodetool`` when enabling the feature, and will override any values set in the `cassandra.yaml` file, as discussed in the next section.
 +
- Querying the state of FQL
- ---------------------
++== Enabling FQL
 +
- In order to know what state FQL is in, you may use nodetool command ``getfullquerylog``. It will print out whether FQL is enabled
- and with what configuration options; if you reset or stop FQL, the configuration displayed will be taken from
- configuration in ``cassandra.yaml``.
- 
- ::
- 
-  $ nodetool getfullquerylog
-  enabled             true
-  log_dir             /path/to/fql/log/dir
-  archive_command     /usr/local/bin/archiveit.sh %path
-  roll_cycle          HOURLY
-  block               true
-  max_log_size        17179869184
-  max_queue_weight    268435456
-  max_archive_retries 10
- 
- Enabling FQL
- ------------
- 
- FQL is enabled on a per-node basis using the ``nodetool enablefullquerylog`` command. At a minimum, the path to the logging directory must be defined, if ``log_dir`` is not set in the `cassandra.yaml` file. 
++FQL is enabled on a per-node basis using the ``nodetool enablefullquerylog`` command. At a minimum, the path to the logging directory must be defined, if ``log_dir`` is not set in the `cassandra.yaml` file.
 +
 +The syntax of the ``nodetool enablefullquerylog`` command has all the same options that can be set in the ``cassandra.yaml`` file.
- In addition, ``nodetool`` has options to set which host and port to run the command on, and username and password if the command requires authentication. 
- 
- ::
++In addition, ``nodetool`` has options to set which host and port to run the command on, and username and password if the command requires authentication.
 +
++[source, plaintext]
++----
 +  nodetool [(-h <host> | --host <host>)] [(-p <port> | --port <port>)]
 + [(-pp | --print-port)] [(-pw <password> | --password <password>)]
 + [(-pwf <passwordFilePath> | --password-file <passwordFilePath>)]
 + [(-u <username> | --username <username>)] enablefullquerylog
 + [--archive-command <archive_command>] [--blocking]
 + [--max-archive-retries <archive_retries>]
 + [--max-log-size <max_log_size>] [--max-queue-weight <max_queue_weight>]
 + [--path <path>] [--roll-cycle <roll_cycle>]
 +
 + OPTIONS
 +   --archive-command <archive_command>
 +  Command that will handle archiving rolled full query log files.
 +  Format is "/path/to/script.sh %path" where %path will be replaced
 +  with the file to archive
 +
 +   --blocking
 +  If the queue is full whether to block producers or drop samples.
 +
 +   -h <host>, --host <host>
 +  Node hostname or ip address
 +
 +   --max-archive-retries <archive_retries>
 +  Max number of archive retries.
 +
 +   --max-log-size <max_log_size>
 +  How many bytes of log data to store before dropping segments. Might
 +  not be respected if a log file hasn't rolled so it can be deleted.
 +
 +   --max-queue-weight <max_queue_weight>
 +  Maximum number of bytes of query data to queue to disk before
 +  blocking or dropping samples.
 +
 +   -p <port>, --port <port>
 +  Remote jmx agent port number
 +
 +   --path <path>
 +  Path to store the full query log at. Will have it's contents
 +  recursively deleted.
 +
 +   -pp, --print-port
 +  Operate in 4.0 mode with hosts disambiguated by port number
 +
 +   -pw <password>, --password <password>
 +  Remote jmx agent password
 +
 +   -pwf <passwordFilePath>, --password-file <passwordFilePath>
 +  Path to the JMX password file
 +
 +   --roll-cycle <roll_cycle>
 +  How often to roll the log file (MINUTELY, HOURLY, DAILY).
 +
 +   -u <username>, --username <username>
 +  Remote jmx agent username
++----
 +
 +To enable FQL, run the following command on each node in the cluster on which you want to enable logging:
 +
- ::
- 
-  nodetool enablefullquerylog --path /tmp/cassandrafullquerylog
++[source, bash]
++----
++$ nodetool enablefullquerylog --path /tmp/cassandrafullquerylog
++----
 +
- Disabling or resetting FQL
- -------------
++== Disabling or resetting FQL
 +
- Use the ``nodetool disablefullquerylog`` to disable logging. 
++Use the ``nodetool disablefullquerylog`` to disable logging.
 +Use ``nodetool resetfullquerylog`` to stop FQL and clear the log files in the configured directory.
 +**IMPORTANT:** Using ``nodetool resetfullquerylog`` will delete the log files! Do not use this command unless you need to delete all log files.
 +
- fqltool
- -------
++== fqltool
 +
 +The ``fqltool`` command is used to view (dump), replay, or compare logs.
 +``fqltool dump`` converts the binary log files into human-readable format; only the log directory must be supplied as a command-line option.
 +
- ``fqltool replay`` (`CASSANDRA-14618 <https://issues.apache.org/jira/browse/CASSANDRA-14618>`_) enables replay of logs. 
- The command can run from a different machine or cluster for testing, debugging, or performance benchmarking. 
- The command can also be used to recreate a dropped database object (keyspace, table), usually in a different cluster.
- The ``fqltool replay`` command does not replay DDL statements automatically; explicitly enable it with the ``--replay-ddl-statements`` flag.
++``fqltool replay`` (https://issues.apache.org/jira/browse/CASSANDRA-14618[CASSANDRA-14618]) enables replay of logs.
++The command can run from a different machine or cluster for testing, debugging, or performance benchmarking.
++The command can also be used to recreate a dropped database object.
 +Use ``fqltool replay`` to record and compare different runs of production traffic against different versions/configurations of Cassandra or different clusters.
 +Another use is to gather logs from several machines and replay them in “order” by the timestamps recorded.
 +
 +The syntax of ``fqltool replay`` is:
 +
- ::
- 
-   fqltool replay [--keyspace <keyspace>] [--replay-ddl-statements]
-   [--results <results>] [--store-queries <store_queries>] 
-   --target <target>... [--] <path1> [<path2>...<pathN>]
++[source, plaintext]
++----
++  fqltool replay [--keyspace <keyspace>] [--results <results>]
++ [--store-queries <store_queries>] --target <target>... [--] <path1>
++ [<path2>...<pathN>]
 +
 + OPTIONS
 +   --keyspace <keyspace>
 +  Only replay queries against this keyspace and queries without
 +  keyspace set.
 +
-    --replay-ddl-statements
-    If specified, replays DDL statements as well, they are excluded from
-    replaying by default.
- 
 +   --results <results>
 +  Where to store the results of the queries, this should be a
 +  directory. Leave this option out to avoid storing results.
 +
 +   --store-queries <store_queries>
 +  Path to store the queries executed. Stores queries in the same order
 +  as the result sets are in the result files. Requires --results
 +
 +   --target <target>
 +  Hosts to replay the logs to, can be repeated to replay to more
 +  hosts.
 +
 +   --
 +  This option can be used to separate command-line options from the
 +  list of argument, (useful when arguments might be mistaken for
 +  command-line options
 +
 +   <path1> [<path2>...<pathN>]
 +  Paths containing the FQ logs to replay.
++----
 +
- ``fqltool compare`` (`CASSANDRA-14619 <https://issues.apache.org/jira/browse/CASSANDRA-14619>`_) compares result files generated by ``fqltool replay``.
++``fqltool compare`` (https://issues.apache.org/jira/browse/CASSANDRA-14619[CASSANDRA-14619]) compares result files generated by ``fqltool replay``.
 +The command uses recorded runs from ``fqltool replay`` and compareslog, outputting any differences (potentially all queries).
 +It also stores each row as a separate chronicle document to avoid reading the entire result from in-memory when comparing.
 +
 +The syntax of ``fqltool compare`` is:
 +
- ::
- 
- $ fqltool help compare
-  NAME
-    fqltool compare - Compare result files generated by fqltool replay
- 
-  SYNOPSIS
++[source, plaintext]
++----
 +   fqltool compare --queries <queries> [--] <path1> [<path2>...<pathN>]
 +
 + OPTIONS
 +   --queries <queries>
 +  Directory to read the queries from. It is produced by the fqltool
 +  replay --store-queries option.
 +
 +   --
 +  This option can be used to separate command-line options from the
 +  list of argument, (useful when arguments might be mistaken for
 +  command-line options
 +
 +   <path1> [<path2>...<pathN>]
 +  Directories containing result files to compare.
++----
 +
 +The comparison sets the following marks:
 +
- - Mark the beginning of a query set:
++* Mark the beginning of a query set:
 +
- ::
- 
-   -------------------
++[source, plaintext]
++----
 +  version: int16
 +  type: column_definitions
 +  column_count: int32;
 +  column_definition: text, text
 +  column_definition: text, text
 +  ....
-   --------------------
- 
++----
 +
- - Mark a failed query set:
++* Mark a failed query set:
 +
- ::
- 
-   ---------------------
++[source, plaintext]
++----
 +  version: int16
 +  type: query_failed
 +  message: text
-   ---------------------
- 
- - Mark a row set:
++----
 +
- ::
++* Mark a row set:
 +
-   --------------------
++[source, plaintext]
++----
 +  version: int16
 +  type: row
 +  row_column_count: int32
 +  column: bytes
-   ---------------------
++----
 +
- - Mark the end of a result set:
++* Mark the end of a result set:
 +
- ::
- 
-   -------------------
++[source, plaintext]
++----
 +  version: int16
 +  type: end_resultset
-   -------------------
- 
- Example
- -------
++----
 +
- 1. To demonstrate FQL, first configure and enable FQL on a node in your cluster:
++== Example
 +
- ::
-  
-  nodetool enablefullquerylog --path /tmp/cassandrafullquerylog
++[arabic, start=1]
++. To demonstrate FQL, first configure and enable FQL on a node in your cluster:
 +
++[source, bash]
++----
++$ nodetool enablefullquerylog --path /tmp/cassandrafullquerylog
++----
 +
- 2. Now create a demo keyspace and table and insert some data using ``cqlsh``:
- 
- ::
++[arabic, start=2]
++. Now create a demo keyspace and table and insert some data using ``cqlsh``:
 +
++[source, cql]
++----
 + cqlsh> CREATE KEYSPACE querylogkeyspace
 +   ... WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};
 + cqlsh> USE querylogkeyspace;
 + cqlsh:querylogkeyspace> CREATE TABLE t (
 + ...id int,
 + ...k int,
 + ...v text,
 + ...PRIMARY KEY (id)
 + ... );
 + cqlsh:querylogkeyspace> INSERT INTO t (id, k, v) VALUES (0, 0, 'val0');
 + cqlsh:querylogkeyspace> INSERT INTO t (id, k, v) VALUES (0, 1, 'val1');
++----
 +
- 3. Then check that the data is inserted:
- 
- :: 
++[arabic, start=3]
++. Then check that the data is inserted:
 +
++[source, plaintext]
++----
 + cqlsh:querylogkeyspace> SELECT * FROM t;
 +
 + id | k | v
 + ----+---+------
 +  0 | 1 | val1
 +
 + (1 rows)
++----
 +
- 4. Use the ``fqltool dump`` command to view the logs.
- 
- ::
++[arabic, start=4]
++. Use the ``fqltool dump`` command to view the logs.
 +
++[source, bash]
++----
 +$ fqltool dump /tmp/cassandrafullquerylog
++----
 +
 +This command will return a readable version of the log. Here is a partial sample of the log for the commands in this demo:
 +
- ::
- 
-       WARN  [main] 2019-08-02 03:07:53,635 Slf4jExceptionHandler.java:42 - Using Pauser.sleepy() as not enough processors, have 2, needs 8+
++[source, plaintext]
++----
++WARN  [main] 2019-08-02 03:07:53,635 Slf4jExceptionHandler.java:42 - Using Pauser.sleepy() as not enough processors, have 2, needs 8+
 +      Type: single-query
 +      Query start time: 1564708322030
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708322
 +      Query: SELECT * FROM system.peers
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708322054
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708322
 +      Query: SELECT * FROM system.local WHERE key='local'
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708322109
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708322
 +      Query: SELECT * FROM system_schema.keyspaces
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708322116
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708322
 +      Query: SELECT * FROM system_schema.tables
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708322139
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708322
 +      Query: SELECT * FROM system_schema.columns
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708322142
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708322
 +      Query: SELECT * FROM system_schema.functions
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708322141
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708322
 +      Query: SELECT * FROM system_schema.aggregates
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708322143
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708322
 +      Query: SELECT * FROM system_schema.types
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708322144
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708322
 +      Query: SELECT * FROM system_schema.indexes
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708322145
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708322
 +      Query: SELECT * FROM system_schema.views
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708345408
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:-2147483648
 +      Query: CREATE KEYSPACE querylogkeyspace
 +      WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1};
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708360873
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:-2147483648
 +      Query: USE querylogkeyspace;
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708360874
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:-2147483648
 +      Query: USE "querylogkeyspace"
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708378837
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:-2147483648
 +      Query: CREATE TABLE t (
 +          id int,
 +          k int,
 +          v text,
 +          PRIMARY KEY (id)
 +      );
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708379247
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708379
 +      Query: SELECT * FROM system_schema.tables WHERE keyspace_name = 'querylogkeyspace' AND table_name = 't'
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708397144
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708397
 +      Query: INSERT INTO t (id, k, v) VALUES (0, 0, 'val0');
 +      Values:
 +
 +      Type: single-query
 +      Query start time: 1564708434782
 +      Protocol version: 4
 +      Generated timestamp:-9223372036854775808
 +      Generated nowInSeconds:1564708434
 +      Query: SELECT * FROM t;
 +      Values:
++----
 +
- 5. This example will demonstrate ``fqltool replay`` in a single cluster. However, the most common method of using ``replay`` is between clusters. 
- To demonstrate in the same cluster, first drop the keyspace.
++[arabic, start=5]
++. To demonstrate ``fqltool replay``, first drop the keyspace.
 +
- ::
++[source, cql]
++----
++cqlsh:querylogkeyspace> DROP KEYSPACE querylogkeyspace;
++----
 +
-  cqlsh:querylogkeyspace> DROP KEYSPACE querylogkeyspace;
++[arabic, start=6]
++. Now run ``fqltool replay`` specifying the directories in which to store the results of the queries and
++the list of queries run, respectively, in `--results` and `--store-queries`:
 +
- 6. Now run ``fqltool replay`` specifying the directories in which to store the results of the queries and 
- the list of queries run, respectively, in `--results` and `--store-queries`, and specifiying that the DDL statements to create the keyspace and tables will be executed:
- 
- ::
- 
-  $ fqltool replay \
-  --keyspace querylogkeyspace --replay-ddl-statements --results /cassandra/fql/logs/results/replay \
-  --store-queries /cassandra/fql/logs/queries/replay \
-  --target 3.91.56.164 \
-  /tmp/cassandrafullquerylog
++[source, bash]
++----
++$ fqltool replay \
++--keyspace querylogkeyspace --results /cassandra/fql/logs/results/replay \
++--store-queries /cassandra/fql/logs/queries/replay \
++-- target 3.91.56.164 \
++/tmp/cassandrafullquerylog
++----
 +
 +The ``--results`` and ``--store-queries`` directories are optional, but if ``--store-queries`` is set, then ``--results`` must also be set.
 +The ``--target`` specifies the node on which to replay to logs.
- If ``--replay-ddl-statements`` is not specified, the keyspace and any tables must be created prior to the ``replay``.
- 
- 7. Check that the keyspace was replayed and exists again using the ``DESCRIBE KEYSPACES`` command:
 +
- ::
++[arabic, start=7]
++. Check that the keyspace was replayed and exists again using the ``DESCRIBE KEYSPACES`` command:
 +
++[source, cql]
++----
 + cqlsh:querylogkeyspace> DESC KEYSPACES;
 +
 + system_schema  system  system_distributed  system_virtual_schema
 + system_auth    querylogkeyspace  system_traces  system_views
++----
diff --cc doc/modules/cassandra/pages/new/index.adoc
index 0000000,0000000..50fafa7
new file mode 100644
--- /dev/null
+++ b/doc/modules/cassandra/pages/new/index.adoc
@@@ -1,0 -1,0 +1,11 @@@
++= New Features in Apache Cassandra 4.0
++
++This section covers the new features in Apache Cassandra 4.0.
++
++* xref:new/java11.adoc[Java 11]
++* xref:new/virtualtables.adoc[Virtual tables]
++* xref:new/auditlogging.adoc[Audit logging]
++* xref:new/fqllogging.adoc[Full query logging]
++* xref:new/messaging.adoc[Messaging]
++* xref:new/streaming.adoc[Streaming]
++* xref:new/transientreplication.adoc[Transient replication]
diff --cc doc/modules/cassandra/pages/new/java11.adoc
index 0000000,0000000..f3efc50
new file mode 100644
--- /dev/null
+++ b/doc/modules/cassandra/pages/new/java11.adoc
@@@ -1,0 -1,0 +1,292 @@@
++= Support for Java 11
++
++In the new Java release cadence a new Java version is made available
++every six months. The more frequent release cycle is favored as it
++brings new Java features to the developers as and when they are
++developed without the wait that the earlier 3 year release model
++incurred. Not every Java version is a Long Term Support (LTS) version.
++After Java 8 the next LTS version is Java 11. Java 9, 10, 12 and 13 are
++all non-LTS versions.
++
++One of the objectives of the Apache Cassandra 4.0 version is to support
++the recent LTS Java versions 8 and 11
++(https://issues.apache.org/jira/browse/CASSANDRA-9608[CASSANDRA-9608]).
++Java 8 and Java 11 may be used to build and run Apache Cassandra 4.0.
++
++*Note*: Support for JDK 11 in Apache Cassandra 4.0 is an experimental
++feature, and not recommended for production use.
++
++== Support Matrix
++
++The support matrix for the Java versions for compiling and running
++Apache Cassandra 4.0 is detailed in Table 1. The build version is along
++the vertical axis and the run version is along the horizontal axis.
++
++Table 1 : Support Matrix for Java
++
++[width="68%",cols="34%,30%,36%",]
++|===
++| |Java 8 (Run) |Java 11 (Run)
++|Java 8 (Build) |Supported |Supported
++|Java 11(Build) |Not Supported |Supported
++|===
++
++Essentially Apache 4.0 source code built with Java 11 cannot be run with
++Java 8. Next, we shall discuss using each of Java 8 and 11 to build and
++run Apache Cassandra 4.0.
++
++== Using Java 8 to Build
++
++To start with, install Java 8. As an example, for installing Java 8 on
++RedHat Linux the command is as follows:
++
++....
++$ sudo yum install java-1.8.0-openjdk-devel
++....
++
++Set `JAVA_HOME` and `JRE_HOME` environment variables in the shell bash
++script. First, open the bash script:
++
++....
++$ sudo vi ~/.bashrc
++....
++
++Set the environment variables including the `PATH`.
++
++....
++$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
++$ export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk/jre
++$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
++....
++
++Download and install Apache Cassandra 4.0 source code from the Git along
++with the dependencies.
++
++....
++$ git clone https://github.com/apache/cassandra.git
++....
++
++If Cassandra is already running stop Cassandra with the following
++command.
++
++....
++[ec2-user@ip-172-30-3-146 bin]$ ./nodetool stopdaemon
++....
++
++Build the source code from the `cassandra` directory, which has the
++`build.xml` build script. The Apache Ant uses the Java version set in
++the `JAVA_HOME` environment variable.
++
++....
++$ cd ~/cassandra
++$ ant
++....
++
++Apache Cassandra 4.0 gets built with Java 8. Set the environment
++variable for `CASSANDRA_HOME` in the bash script. Also add the
++`CASSANDRA_HOME/bin` to the `PATH` variable.
++
++....
++$ export CASSANDRA_HOME=~/cassandra
++$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CASSANDRA_HOME/bin
++....
++
++To run Apache Cassandra 4.0 with either of Java 8 or Java 11 run the
++Cassandra application in the `CASSANDRA_HOME/bin` directory, which is in
++the `PATH` env variable.
++
++....
++$ cassandra
++....
++
++The Java version used to run Cassandra gets output as Cassandra is
++getting started. As an example if Java 11 is used, the run output should
++include similar to the following output snippet:
++
++....
++INFO  [main] 2019-07-31 21:18:16,862 CassandraDaemon.java:480 - Hostname: ip-172-30-3- 
++146.ec2.internal:7000:7001
++INFO  [main] 2019-07-31 21:18:16,862 CassandraDaemon.java:487 - JVM vendor/version: OpenJDK 
++64-Bit Server VM/11.0.3
++INFO  [main] 2019-07-31 21:18:16,863 CassandraDaemon.java:488 - Heap size: 
++1004.000MiB/1004.000MiB
++....
++
++The following output indicates a single node Cassandra 4.0 cluster has
++started.
++
++....
++INFO  [main] 2019-07-31 21:18:19,687 InboundConnectionInitiator.java:130 - Listening on 
++address: (127.0.0.1:7000), nic: lo, encryption: enabled (openssl)
++...
++...
++INFO  [main] 2019-07-31 21:18:19,850 StorageService.java:512 - Unable to gossip with any 
++peers but continuing anyway since node is in its own seed list
++INFO  [main] 2019-07-31 21:18:19,864 StorageService.java:695 - Loading persisted ring state
++INFO  [main] 2019-07-31 21:18:19,865 StorageService.java:814 - Starting up server gossip
++INFO  [main] 2019-07-31 21:18:20,088 BufferPool.java:216 - Global buffer pool is enabled,  
++when pool is exhausted (max is 251.000MiB) it will allocate on heap
++INFO  [main] 2019-07-31 21:18:20,110 StorageService.java:875 - This node will not auto 
++bootstrap because it is configured to be a seed node.
++...
++...
++INFO  [main] 2019-07-31 21:18:20,809 StorageService.java:1507 - JOINING: Finish joining ring
++INFO  [main] 2019-07-31 21:18:20,921 StorageService.java:2508 - Node 127.0.0.1:7000 state 
++jump to NORMAL
++....
++
++== Using Java 11 to Build
++
++If Java 11 is used to build Apache Cassandra 4.0, first Java 11 must be
++installed and the environment variables set. As an example, to download
++and install Java 11 on RedHat Linux run the following command.
++
++....
++$ yum install java-11-openjdk-devel
++....
++
++Set the environment variables in the bash script for Java 11. The first
++command is to open the bash script.
++
++....
++$ sudo vi ~/.bashrc 
++$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
++$ export JRE_HOME=/usr/lib/jvm/java-11-openjdk/jre
++$ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
++....
++
++To build source code with Java 11 one of the following two options must
++be used.
++
++____
++[arabic]
++. {blank}
+++
++Include Apache Ant command-line option `-Duse.jdk=11` as follows:::
++....
++$ ant -Duse.jdk=11
++....
++. {blank}
+++
++Set environment variable `CASSANDRA_USE_JDK11` to `true`:::
++....
++$ export CASSANDRA_USE_JDK11=true
++....
++____
++
++As an example, set the environment variable `CASSANDRA_USE_JDK11` to
++`true`.
++
++....
++[ec2-user@ip-172-30-3-146 cassandra]$ export CASSANDRA_USE_JDK11=true
++[ec2-user@ip-172-30-3-146 cassandra]$ ant
++Buildfile: /home/ec2-user/cassandra/build.xml
++....
++
++Or, set the command-line option.
++
++....
++[ec2-user@ip-172-30-3-146 cassandra]$ ant -Duse.jdk11=true
++....
++
++The build output should include the following.
++
++....
++_build_java:
++    [echo] Compiling for Java 11
++...
++...
++build:
++
++_main-jar:
++         [copy] Copying 1 file to /home/ec2-user/cassandra/build/classes/main/META-INF
++     [jar] Building jar: /home/ec2-user/cassandra/build/apache-cassandra-4.0-SNAPSHOT.jar
++...
++...
++_build-test:
++   [javac] Compiling 739 source files to /home/ec2-user/cassandra/build/test/classes
++    [copy] Copying 25 files to /home/ec2-user/cassandra/build/test/classes
++...
++...
++jar:
++   [mkdir] Created dir: /home/ec2-user/cassandra/build/classes/stress/META-INF
++   [mkdir] Created dir: /home/ec2-user/cassandra/build/tools/lib
++     [jar] Building jar: /home/ec2-user/cassandra/build/tools/lib/stress.jar
++   [mkdir] Created dir: /home/ec2-user/cassandra/build/classes/fqltool/META-INF
++     [jar] Building jar: /home/ec2-user/cassandra/build/tools/lib/fqltool.jar
++
++BUILD SUCCESSFUL
++Total time: 1 minute 3 seconds
++[ec2-user@ip-172-30-3-146 cassandra]$ 
++....
++
++== Common Issues
++
++One of the two options mentioned must be used to compile with JDK 11 or
++the build fails and the following error message is output.
++
++....
++[ec2-user@ip-172-30-3-146 cassandra]$ ant
++Buildfile: /home/ec2-user/cassandra/build.xml
++validate-build-conf:
++
++BUILD FAILED
++/home/ec2-user/cassandra/build.xml:293: -Duse.jdk11=true or $CASSANDRA_USE_JDK11=true must 
++be set when building from java 11
++Total time: 1 second
++[ec2-user@ip-172-30-3-146 cassandra]$ 
++....
++
++The Java 11 built Apache Cassandra 4.0 source code may be run with Java
++11 only. If a Java 11 built code is run with Java 8 the following error
++message gets output.
++
++....
++[root@localhost ~]# ssh -i cassandra.pem ec2-user@ec2-3-85-85-75.compute-1.amazonaws.com
++Last login: Wed Jul 31 20:47:26 2019 from 75.155.255.51
++[ec2-user@ip-172-30-3-146 ~]$ echo $JAVA_HOME
++/usr/lib/jvm/java-1.8.0-openjdk
++[ec2-user@ip-172-30-3-146 ~]$ cassandra 
++...
++...
++Error: A JNI error has occurred, please check your installation and try again
++Exception in thread "main" java.lang.UnsupportedClassVersionError: 
++org/apache/cassandra/service/CassandraDaemon has been compiled by a more recent version of 
++the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes 
++class file versions up to 52.0
++  at java.lang.ClassLoader.defineClass1(Native Method)
++  at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
++  at ...
++...
++....
++
++The `CASSANDRA_USE_JDK11` variable or the command-line option
++`-Duse.jdk11` cannot be used to build with Java 8. To demonstrate set
++`JAVA_HOME` to version 8.
++
++....
++[root@localhost ~]# ssh -i cassandra.pem ec2-user@ec2-3-85-85-75.compute-1.amazonaws.com
++Last login: Wed Jul 31 21:41:50 2019 from 75.155.255.51
++[ec2-user@ip-172-30-3-146 ~]$ echo $JAVA_HOME
++/usr/lib/jvm/java-1.8.0-openjdk
++....
++
++Set the `CASSANDRA_USE_JDK11=true` or command-line option
++`-Duse.jdk11=true`. Subsequently, run Apache Ant to start the build. The
++build fails with error message listed.
++
++....
++[ec2-user@ip-172-30-3-146 ~]$ cd 
++cassandra
++[ec2-user@ip-172-30-3-146 cassandra]$ export CASSANDRA_USE_JDK11=true
++[ec2-user@ip-172-30-3-146 cassandra]$ ant 
++Buildfile: /home/ec2-user/cassandra/build.xml
++
++validate-build-conf:
++
++BUILD FAILED
++/home/ec2-user/cassandra/build.xml:285: -Duse.jdk11=true or $CASSANDRA_USE_JDK11=true cannot 
++be set when building from java 8
++
++Total time: 0 seconds
++....
diff --cc doc/modules/cassandra/pages/new/messaging.adoc
index 0000000,0000000..07a423b
new file mode 100644
--- /dev/null
+++ b/doc/modules/cassandra/pages/new/messaging.adoc
@@@ -1,0 -1,0 +1,360 @@@
++= Improved Internode Messaging
++
++Apache Cassandra 4.0 has added several new improvements to internode
++messaging.
++
++== Optimized Internode Messaging Protocol
++
++The internode messaging protocol has been optimized
++(https://issues.apache.org/jira/browse/CASSANDRA-14485[CASSANDRA-14485]).
++Previously the `IPAddressAndPort` of the sender was included with each
++message that was sent even though the `IPAddressAndPort` had already
++been sent once when the initial connection/session was established. In
++Cassandra 4.0 `IPAddressAndPort` has been removed from every separate
++message sent and only sent when connection/session is initiated.
++
++Another improvement is that at several instances (listed) a fixed 4-byte
++integer value has been replaced with `vint` as a `vint` is almost always
++less than 1 byte:
++
++* The `paramSize` (the number of parameters in the header)
++* Each individual parameter value
++* The `payloadSize`
++
++== NIO Messaging
++
++In Cassandra 4.0 peer-to-peer (internode) messaging has been switched to
++non-blocking I/O (NIO) via Netty
++(https://issues.apache.org/jira/browse/CASSANDRA-8457[CASSANDRA-8457]).
++
++As serialization format, each message contains a header with several
++fixed fields, an optional key-value parameters section, and then the
++message payload itself. Note: the IP address in the header may be either
++IPv4 (4 bytes) or IPv6 (16 bytes).
++
++____
++The diagram below shows the IPv4 address for brevity.
++____
++
++....
++1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6
++0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2
+++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++|                       PROTOCOL MAGIC                          |
+++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++|                         Message ID                            |
+++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++|                         Timestamp                             |
+++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++|  Addr len |           IP Address (IPv4)                       /
+++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++/           |                 Verb                              /
+++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++/           |            Parameters size                        /
+++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++/           |             Parameter data                        /
+++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++/                                                               |
+++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++|                        Payload size                           |
+++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++|                                                               /
++/                           Payload                             /
++/                                                               |
+++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++....
++
++An individual parameter has a String key and a byte array value. The key
++is serialized with its length, encoded as two bytes, followed by the
++UTF-8 byte encoding of the string. The body is serialized with its
++length, encoded as four bytes, followed by the bytes of the value.
++
++== Resource limits on Queued Messages
++
++System stability is improved by enforcing strict resource limits
++(https://issues.apache.org/jira/browse/CASSANDRA-15066[CASSANDRA-15066])
++on the number of outbound messages that are queued, measured by the
++`serializedSize` of the message. There are three separate limits imposed
++simultaneously to ensure that progress is always made without any
++reasonable combination of failures impacting a node’s stability.
++
++[arabic]
++. Global, per-endpoint and per-connection limits are imposed on messages
++queued for delivery to other nodes and waiting to be processed on
++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
++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
++per-link limit, simultaneously with the global limit, on all links to or
++from a single node in the cluster. The global limit is imposed on all
++messages exceeding the per-link limit, simultaneously with the
++per-endpoint limit, on all links to or from any node in the cluster. The
++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
++....
++
++== Virtual Tables for Messaging Metrics
++
++Metrics is improved by keeping metrics using virtual tables for
++inter-node inbound and outbound messaging
++(https://issues.apache.org/jira/browse/CASSANDRA-15066[CASSANDRA-15066]).
++For inbound messaging a virtual table (`internode_inbound`) has been
++added to keep metrics for:
++
++* Bytes and count of messages that could not be serialized or flushed
++due to an error
++* Bytes and count of messages scheduled
++* Bytes and count of messages successfully processed
++* Bytes and count of messages successfully received
++* Nanos and count of messages throttled
++* Bytes and count of messages expired
++* Corrupt frames recovered and unrecovered
++
++A separate virtual table (`internode_outbound`) has been added for
++outbound inter-node messaging. The outbound virtual table keeps metrics
++for:
++
++* Bytes and count of messages pending
++* Bytes and count of messages sent
++* Bytes and count of messages expired
++* Bytes and count of messages that could not be sent due to an error
++* Bytes and count of messages overloaded
++* Active Connection Count
++* Connection Attempts
++* Successful Connection Attempts
++
++== Hint Messaging
++
++A specialized version of hint message that takes an already encoded in a
++`ByteBuffer` hint and sends it verbatim has been added. It is an
++optimization for when dispatching a hint file of the current messaging
++version to a node of the same messaging version, which is the most
++common case. It saves on extra `ByteBuffer` allocations one redundant
++hint deserialization-serialization cycle.
++
++== Internode Application Timeout
++
++A configuration setting has been added to `cassandra.yaml` for the
++maximum continuous period a connection may be unwritable in application
++space.
++
++....
++# internode_application_timeout_in_ms = 30000
++....
++
++Some other new features include logging of message size to trace message
++for tracing a query.
++
++== Paxos prepare and propose stage for local requests optimized
++
++In pre-4.0 Paxos prepare and propose messages always go through entire
++`MessagingService` stack in Cassandra even if request is to be served
++locally, we can enhance and make local requests severed w/o involving
++`MessagingService`. Similar things are done elsewhere in Cassandra which
++skips `MessagingService` stage for local requests.
++
++This is what it looks like in pre 4.0 if we have tracing on and run a
++light-weight transaction:
++
++....
++Sending PAXOS_PREPARE message to /A.B.C.D [MessagingService-Outgoing-/A.B.C.D] | 2017-09-11
++21:55:18.971000 | A.B.C.D | 15045
++… REQUEST_RESPONSE message received from /A.B.C.D [MessagingService-Incoming-/A.B.C.D] |
++2017-09-11 21:55:18.976000 | A.B.C.D | 20270
++… Processing response from /A.B.C.D [SharedPool-Worker-4] | 2017-09-11 21:55:18.976000 |
++A.B.C.D | 20372
++....
++
++Same thing applies for Propose stage as well.
++
++In version 4.0 Paxos prepare and propose stage for local requests are
++optimized
++(https://issues.apache.org/jira/browse/CASSANDRA-13862[CASSANDRA-13862]).
++
++== Quality Assurance
++
++Several other quality assurance improvements have been made in version
++4.0
++(https://issues.apache.org/jira/browse/CASSANDRA-15066[CASSANDRA-15066]).
++
++=== Framing
++
++Version 4.0 introduces framing to all internode messages, i.e. the
++grouping of messages into a single logical payload with headers and
++trailers; these frames are guaranteed to either contain at most one
++message, that is split into its own unique sequence of frames (for large
++messages), or that a frame contains only complete messages.
++
++=== Corruption prevention
++
++Previously, intra-datacenter internode messages would be unprotected
++from corruption by default, as only LZ4 provided any integrity checks.
++All messages to post 4.0 nodes are written to explicit frames, which may
++be:
++
++* LZ4 encoded
++* CRC protected
++
++The Unprotected option is still available.
++
++=== Resilience
++
++For resilience, all frames are written with a separate CRC protected
++header, of 8 and 6 bytes respectively. If corruption occurs in this
++header, the connection must be reset, as before. If corruption occurs
++anywhere outside of the header, the corrupt frame will be skipped,
++leaving the connection intact and avoiding the loss of any messages
++unnecessarily.
++
++Previously, any issue at any point in the stream would result in the
++connection being reset, with the loss of any in-flight messages.
++
++=== Efficiency
++
++The overall memory usage, and number of byte shuffles, on both inbound
++and outbound messages is reduced.
++
++Outbound the Netty LZ4 encoder maintains a chunk size buffer (64KiB),
++that is filled before any compressed frame can be produced. Our frame
++encoders avoid this redundant copy, as well as freeing 192KiB per
++endpoint.
++
++Inbound, frame decoders guarantee only to copy the number of bytes
++necessary to parse a frame, and to never store more bytes than
++necessary. This improvement applies twice to LZ4 connections, improving
++both the message decode and the LZ4 frame decode.
++
++=== Inbound Path
++
++Version 4.0 introduces several improvements to the inbound path.
++
++An appropriate message handler is used based on whether large or small
++messages are expected on a particular connection as set in a flag.
++`NonblockingBufferHandler`, running on event loop, is used for small
++messages, and `BlockingBufferHandler`, running off event loop, for large
++messages. The single implementation of `InboundMessageHandler` handles
++messages of any size effectively by deriving size of the incoming
++message from the byte stream. In addition to deriving size of the
++message from the stream, incoming message expiration time is proactively
++read, before attempting to deserialize the entire message. If it’s
++expired at the time when a message is encountered the message is just
++skipped in the byte stream altogether. And if a message fails to be
++deserialized while still on the receiving side - say, because of table
++id or column being unknown - bytes are skipped, without dropping the
++entire connection and losing all the buffered messages. An immediately
++reply back is sent to the coordinator node with the failure reason,
++rather than waiting for the coordinator callback to expire. This logic
++is extended to a corrupted frame; a corrupted frame is safely skipped
++over without dropping the connection.
++
++Inbound path imposes strict limits on memory utilization. Specifically,
++the memory occupied by all parsed, but unprocessed messages is bound -
++on per-connection, per-endpoint, and global basis. Once a connection
++exceeds its local unprocessed capacity and cannot borrow any permits
++from per-endpoint and global reserve, it simply stops processing further
++messages, providing natural backpressure - until sufficient capacity is
++regained.
++
++=== Outbound Connections
++
++==== Opening a connection
++
++A consistent approach is adopted for all kinds of failure to connect,
++including: refused by endpoint, incompatible versions, or unexpected
++exceptions;
++
++* Retry forever, until either success or no messages waiting to deliver.
++* Wait incrementally longer periods before reconnecting, up to a maximum
++of 1s.
++* While failing to connect, no reserve queue limits are acquired.
++
++==== Closing a connection
++
++* Correctly drains outbound messages that are waiting to be delivered
++(unless disconnected and fail to reconnect).
++* Messages written to a closing connection are either delivered or
++rejected, with a new connection being opened if the old is irrevocably
++closed.
++* Unused connections are pruned eventually.
++
++==== Reconnecting
++
++We sometimes need to reconnect a perfectly valid connection, e.g. if the
++preferred IP address changes. We ensure that the underlying connection
++has no in-progress operations before closing it and reconnecting.
++
++==== Message Failure
++
++Propagates to callbacks instantly, better preventing overload by
++reclaiming committed memory.
++
++===== Expiry
++
++* No longer experiences head-of-line blocking (e.g. undroppable message
++preventing all droppable messages from being expired).
++* While overloaded, expiry is attempted eagerly on enqueuing threads.
++* While disconnected we schedule regular pruning, to handle the case
++where messages are no longer being sent, but we have a large backlog to
++expire.
++
++===== Overload
++
++* Tracked by bytes queued, as opposed to number of messages.
++
++===== Serialization Errors
++
++* Do not result in the connection being invalidated; the message is
++simply completed with failure, and then erased from the frame.
++* Includes detected mismatch between calculated serialization size to
++actual.
++
++Failures to flush to network, perhaps because the connection has been
++reset are not currently notified to callback handlers, as the necessary
++information has been discarded, though it would be possible to do so in
++future if we decide it is worth our while.
++
++==== QoS
++
++"Gossip" connection has been replaced with a general purpose "Urgent"
++connection, for any small messages impacting system stability.
++
++==== Metrics
++
++We track, and expose via Virtual Table and JMX, the number of messages
++and bytes that: we could not serialize or flush due to an error, we
++dropped due to overload or timeout, are pending, and have successfully
++sent.
++
++== Added a Message size limit
++
++Cassandra pre-4.0 doesn't protect the server from allocating huge
++buffers for the inter-node Message objects. Adding a message size limit
++would be good to deal with issues such as a malfunctioning cluster
++participant. Version 4.0 introduced max message size config param, akin
++to max mutation size - set to endpoint reserve capacity by default.
++
++== Recover from unknown table when deserializing internode messages
++
++As discussed in
++(https://issues.apache.org/jira/browse/CASSANDRA-9289[CASSANDRA-9289])
++it would be nice to gracefully recover from seeing an unknown table in a
++message from another node. Pre-4.0, we close the connection and
++reconnect, which can cause other concurrent queries to fail. Version 4.0
++fixes the issue by wrapping message in-stream with
++`TrackedDataInputPlus`, catching `UnknownCFException`, and skipping the
++remaining bytes in this message. TCP won't be closed and it will remain
++connected for other messages.
diff --cc doc/modules/cassandra/pages/new/streaming.adoc
index 0000000,0000000..991bec7
new file mode 100644
--- /dev/null
+++ b/doc/modules/cassandra/pages/new/streaming.adoc
@@@ -1,0 -1,0 +1,217 @@@
++= Improved Streaming
++
++Apache Cassandra 4.0 has made several improvements to streaming.
++Streaming is the process used by nodes of a cluster to exchange data in
++the form of SSTables. Streaming of SSTables is performed for several
++operations, such as:
++
++* SSTable Repair
++* Host Replacement
++* Range movements
++* Bootstrapping
++* Rebuild
++* Cluster expansion
++
++== Streaming based on Netty
++
++Streaming in Cassandra 4.0 is based on Non-blocking Input/Output (NIO)
++with Netty
++(https://issues.apache.org/jira/browse/CASSANDRA-12229[CASSANDRA-12229]).
++It replaces the single-threaded (or sequential), synchronous, blocking
++model of streaming messages and transfer of files. Netty supports
++non-blocking, asynchronous, multi-threaded streaming with which multiple
++connections are opened simultaneously. Non-blocking implies that threads
++are not blocked as they don’t wait for a response for a sent request. A
++response could be returned in a different thread. With asynchronous,
++connections and threads are decoupled and do not have a 1:1 relation.
++Several more connections than threads may be opened.
++
++== Zero Copy Streaming
++
++Pre-4.0, during streaming Cassandra reifies the SSTables into objects.
++This creates unnecessary garbage and slows down the whole streaming
++process as some SSTables can be transferred as a whole file rather than
++individual partitions. Cassandra 4.0 has added support for streaming
++entire SSTables when possible
++(https://issues.apache.org/jira/browse/CASSANDRA-14556[CASSANDRA-14556])
++for faster Streaming using ZeroCopy APIs. If enabled, Cassandra will use
++ZeroCopy for eligible SSTables significantly speeding up transfers and
++increasing throughput. A zero-copy path avoids bringing data into
++user-space on both sending and receiving side. Any streaming related
++operations will notice corresponding improvement. Zero copy streaming is
++hardware bound; only limited by the hardware limitations (Network and
++Disk IO ).
++
++=== High Availability
++
++In benchmark tests Zero Copy Streaming is 5x faster than partitions
++based streaming. Faster streaming provides the benefit of improved
++availability. A cluster’s recovery mainly depends on the streaming
++speed, Cassandra clusters with failed nodes will be able to recover much
++more quickly (5x faster). If a node fails, SSTables need to be streamed
++to a replacement node. During the replacement operation, the new
++Cassandra node streams SSTables from the neighboring nodes that hold
++copies of the data belonging to this new node’s token range. Depending
++on the amount of data stored, this process can require substantial
++network bandwidth, taking some time to complete. The longer these range
++movement operations take, the more the cluster availability is lost.
++Failure of multiple nodes would reduce high availability greatly. The
++faster the new node completes streaming its data, the faster it can
++serve traffic, increasing the availability of the cluster.
++
++=== Enabling Zero Copy Streaming
++
++Zero copy streaming is enabled by setting the following setting in
++`cassandra.yaml`.
++
++....
++stream_entire_sstables: true
++....
++
++By default zero copy streaming is enabled.
++
++=== SSTables Eligible for Zero Copy Streaming
++
++Zero copy streaming is used if all partitions within the SSTable need to
++be transmitted. This is common when using `LeveledCompactionStrategy` or
++when partitioning SSTables by token range has been enabled. All
++partition keys in the SSTables are iterated over to determine the
++eligibility for Zero Copy streaming.
++
++=== Benefits of 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`.
++
++Enabling this will reduce the GC pressure on sending and receiving node.
++While this feature tries to keep the disks balanced, it cannot guarantee
++it. This feature will be automatically disabled if internode encryption
++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
++streaming file transfers on a node to the given total throughput in
++Mbps. When unset, the default is 200 Mbps or 25 MB/s.
++
++....
++stream_throughput_outbound_megabits_per_sec: 200
++....
++
++To run any Zero Copy streaming benchmark the
++`stream_throughput_outbound_megabits_per_sec` 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
++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
++is 200 Mbps or 25 MB/s.
++
++....
++inter_dc_stream_throughput_outbound_megabits_per_sec: 200
++....
++
++=== SSTable Components Streamed with Zero Copy Streaming
++
++Zero Copy Streaming streams entire SSTables. SSTables are made up of
++multiple components in separate files. SSTable components streamed are
++listed in Table 1.
++
++Table 1. SSTable Components
++
++[width="98%",cols="27%,73%",]
++|===
++|SSTable Component |Description
++
++|Data.db |The base data for an SSTable: the remaining components can be
++regenerated based on the data component.
++
++|Index.db |Index of the row keys with pointers to their positions in the
++data file.
++
++|Filter.db |Serialized bloom filter for the row keys in the SSTable.
++
++|CompressionInfo.db |File to hold information about uncompressed data
++length, chunk offsets etc.
++
++|Statistics.db |Statistical metadata about the content of the SSTable.
++
++|Digest.crc32 |Holds CRC32 checksum of the data file size_bytes.
++
++|CRC.db |Holds the CRC32 for chunks in an uncompressed file.
++
++|Summary.db |Holds SSTable Index Summary (sampling of Index component)
++
++|TOC.txt |Table of contents, stores the list of all components for the
++SSTable.
++|===
++
++Custom component, used by e.g. custom compaction strategy may also be
++included.
++
++== Repair Streaming Preview
++
++Repair with `nodetool repair` involves streaming of repaired SSTables
++and a repair preview has been added to provide an estimate of the amount
++of repair streaming that would need to be performed. Repair preview
++(https://issues.apache.org/jira/browse/CASSANDRA-13257[CASSANDRA-13257])
++is invoke with `nodetool repair --preview` using option:
++
++....
++-prv, --preview
++....
++
++It determines ranges and amount of data to be streamed, but doesn't
++actually perform repair.
++
++== Parallelizing of Streaming of Keyspaces
++
++The streaming of the different keyspaces for bootstrap and rebuild has
++been parallelized in Cassandra 4.0
++(https://issues.apache.org/jira/browse/CASSANDRA-4663[CASSANDRA-4663]).
++
++== Unique nodes for Streaming in Multi-DC deployment
++
++Range Streamer picks unique nodes to stream data from when number of
++replicas in each DC is three or more
++(https://issues.apache.org/jira/browse/CASSANDRA-4650[CASSANDRA-4650]).
++What the optimization does is to even out the streaming load across the
++cluster. Without the optimization, some node can be picked up to stream
++more data than others. This patch allows to select dedicated node to
++stream only one range.
++
++This will increase the performance of bootstrapping a node and will also
++put less pressure on nodes serving the data. This does not affect if N <
++3 in each DC as then it streams data from only 2 nodes.
++
++Stream Operation Types ^^^^^^^^^^^^^
++
++It is important to know the type or purpose of a certain stream. Version
++4.0
++(https://issues.apache.org/jira/browse/CASSANDRA-13064[CASSANDRA-13064])
++adds an `enum` to distinguish between the different types of streams.
++Stream types are available both in a stream request and a stream task.
++The different stream types are:
++
++* Restore replica count
++* Unbootstrap
++* Relocation
++* Bootstrap
++* Rebuild
++* Bulk Load
++* Repair
++
++== Disallow Decommission when number of Replicas will drop below configured RF
++
++https://issues.apache.org/jira/browse/CASSANDRA-12510[CASSANDRA-12510]
++guards against decommission that will drop # of replicas below
++configured replication factor (RF), and adds the `--force` option that
++allows decommission to continue if intentional; force decommission of
++this node even when it reduces the number of replicas to below
++configured RF.
diff --cc doc/modules/cassandra/pages/new/transientreplication.adoc
index 0000000,0000000..c939497
new file mode 100644
--- /dev/null
+++ b/doc/modules/cassandra/pages/new/transientreplication.adoc
@@@ -1,0 -1,0 +1,186 @@@
++= Transient Replication
++
++*Note*:
++
++Transient Replication
++(https://issues.apache.org/jira/browse/CASSANDRA-14404[CASSANDRA-14404])
++is an experimental feature designed for expert Apache Cassandra users
++who are able to validate every aspect of the database for their
++application and deployment. That means being able to check that
++operations like reads, writes, decommission, remove, rebuild, repair,
++and replace all work with your queries, data, configuration, operational
++practices, and availability requirements. Apache Cassandra 4.0 has the
++initial implementation of transient replication. Future releases of
++Cassandra will make this feature suitable for a wider audience. It is
++anticipated that a future version will support monotonic reads with
++transient replication as well as LWT, logged batches, and counters.
++Being experimental, Transient replication is *not* recommended for
++production use.
++
++== Objective
++
++The objective of transient replication is to decouple storage
++requirements from data redundancy (or consensus group size) using
++incremental repair, in order to reduce storage overhead. Certain nodes
++act as full replicas (storing all the data for a given token range), and
++some nodes act as transient replicas, storing only unrepaired data for
++the same token ranges.
++
++The optimization that is made possible with transient replication is
++called "Cheap quorums", which implies that data redundancy is increased
++without corresponding increase in storage usage.
++
++Transient replication is useful when sufficient full replicas are
++unavailable to receive and store all the data. Transient replication
++allows you to configure a subset of replicas to only replicate data that
++hasn't been incrementally repaired. As an optimization, we can avoid
++writing data to a transient replica if we have successfully written data
++to the full replicas.
++
++After incremental repair, transient data stored on transient replicas
++can be discarded.
++
++== Enabling Transient Replication
++
++Transient replication is not enabled by default. Transient replication
++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 may be configured with both `SimpleStrategy` and
++`NetworkTopologyStrategy`. Transient replication is configured by
++setting replication factor as `<total_replicas>/<transient_replicas>`.
++
++As an example, create a keyspace with replication factor (RF) 3.
++
++....
++CREATE KEYSPACE CassandraKeyspaceSimple WITH replication = {'class': 'SimpleStrategy',
++'replication_factor' : 4/1};
++....
++
++As another example, `some_keysopace keyspace` will have 3 replicas in
++DC1, 1 of which is transient, and 5 replicas in DC2, 2 of which are
++transient:
++
++....
++CREATE KEYSPACE some_keysopace WITH replication = {'class': 'NetworkTopologyStrategy',
++'DC1' : '3/1'', 'DC2' : '5/2'};
++....
++
++Transiently replicated keyspaces only support tables with `read_repair`
++set to `NONE`.
++
++Important Restrictions:
++
++* RF cannot be altered while some endpoints are not in a normal state
++(no range movements).
++* You can't add full replicas if there are any transient replicas. You
++must first remove all transient replicas, then change the # of full
++replicas, then add back the transient replicas.
++* You can only safely increase number of transients one at a time with
++incremental repair run in between each time.
++
++Additionally, transient replication cannot be used for:
++
++* Monotonic Reads
++* Lightweight Transactions (LWTs)
++* Logged Batches
++* Counters
++* Keyspaces using materialized views
++* Secondary indexes (2i)
++
++== Cheap Quorums
++
++Cheap quorums are a set of optimizations on the write path to avoid
++writing to transient replicas unless sufficient full replicas are not
++available to satisfy the requested consistency level. Hints are never
++written for transient replicas. Optimizations on the read path prefer
++reading from transient replicas. When writing at quorum to a table
++configured to use transient replication the quorum will always prefer
++available full replicas over transient replicas so that transient
++replicas don't have to process writes. Tail latency is reduced by rapid
++write protection (similar to rapid read protection) when full replicas
++are slow or unavailable by sending writes to transient replicas.
++Transient replicas can serve reads faster as they don't have to do
++anything beyond bloom filter checks if they have no data. With vnodes
++and large cluster sizes they will not have a large quantity of data even
++for failure of one or more full replicas where transient replicas start
++to serve a steady amount of write traffic for some of their transiently
++replicated ranges.
++
++== Speculative Write Option
++
++The `CREATE TABLE` adds an option `speculative_write_threshold` for use
++with transient replicas. The option is of type `simple` with default
++value as `99PERCENTILE`. When replicas are slow or unresponsive
++`speculative_write_threshold` specifies the threshold at which a cheap
++quorum write will be upgraded to include transient replicas.
++
++== Pending Ranges and Transient Replicas
++
++Pending ranges refers to the movement of token ranges between transient
++replicas. When a transient range is moved, there will be a period of
++time where both transient replicas would need to receive any write
++intended for the logical transient replica so that after the movement
++takes effect a read quorum is able to return a response. Nodes are _not_
++temporarily transient replicas during expansion. They stream data like a
++full replica for the transient range before they can serve reads. A
++pending state is incurred similar to how there is a pending state for
++full replicas. Transient replicas also always receive writes when they
++are pending. Pending transient ranges are sent a bit more data and
++reading from them is avoided.
++
++== Read Repair and Transient Replicas
++
++Read repair never attempts to repair a transient replica. Reads will
++always include at least one full replica. They should also prefer
++transient replicas where possible. Range scans ensure the entire scanned
++range performs replica selection that satisfies the requirement that
++every range scanned includes one full replica. During incremental &
++validation repair handling, at transient replicas anti-compaction does
++not output any data for transient ranges as the data will be dropped
++after repair, and transient replicas never have data streamed to them.
++
++== Transitioning between Full Replicas and Transient Replicas
++
++The additional state transitions that transient replication introduces
++requires streaming and `nodetool cleanup` to behave differently. When
++data is streamed it is ensured that it is streamed from a full replica
++and not a transient replica.
++
++Transitioning from not replicated to transiently replicated means that a
++node must stay pending until the next incremental repair completes at
++which point the data for that range is known to be available at full
++replicas.
++
++Transitioning from transiently replicated to fully replicated requires
++streaming from a full replica and is identical to how data is streamed
++when transitioning from not replicated to replicated. The transition is
++managed so the transient replica is not read from as a full replica
++until streaming completes. It can be used immediately for a write
++quorum.
++
++Transitioning from fully replicated to transiently replicated requires
++cleanup to remove repaired data from the transiently replicated range to
++reclaim space. It can be used immediately for a write quorum.
++
++Transitioning from transiently replicated to not replicated requires
++cleanup to be run to remove the formerly transiently replicated data.
++
++When transient replication is in use ring changes are supported
++including add/remove node, change RF, add/remove DC.
++
++== Transient Replication supports EACH_QUORUM
++
++(https://issues.apache.org/jira/browse/CASSANDRA-14727[CASSANDRA-14727])
++adds support for Transient Replication support for `EACH_QUORUM`. Per
++(https://issues.apache.org/jira/browse/CASSANDRA-14768[CASSANDRA-14768]),
++we ensure we write to at least a `QUORUM` of nodes in every DC,
++regardless of how many responses we need to wait for and our requested
++consistency level. This is to minimally surprise users with transient
++replication; with normal writes, we soft-ensure that we reach `QUORUM`
++in all DCs we are able to, by writing to every node; even if we don't
++wait for ACK, we have in both cases sent sufficient messages.
diff --cc doc/modules/cassandra/pages/new/virtualtables.adoc
index 0000000,0000000..b18ba31
new file mode 100644
--- /dev/null
+++ b/doc/modules/cassandra/pages/new/virtualtables.adoc
@@@ -1,0 -1,0 +1,410 @@@
++= Virtual Tables
++
++Apache Cassandra 4.0 implements virtual tables (https://issues.apache.org/jira/browse/CASSANDRA-7622[CASSANDRA-7622]).
++Virtual tables are tables backed by an API instead of data explicitly managed and stored as SSTables. 
++Apache Cassandra 4.0 implements a virtual keyspace interface for virtual tables. 
++Virtual tables are specific to each node.
++
++Some of the features of virtual tables are the ability to:
++
++* expose metrics through CQL
++* expose YAML configuration information
++
++Virtual keyspaces and tables are quite different from regular tables and keyspaces:
++
++* Virtual tables are created in special keyspaces and not just any keyspace.
++* Virtual tables are managed by Cassandra. Users cannot run DDL to create new virtual tables or DML to modify existing virtual tables.
++* Virtual tables are currently read-only, although that may change in a later version.
++* Virtual tables are local only, non-distributed, and thus not replicated.
++* Virtual tables have no associated SSTables.
++* Consistency level of the queries sent to virtual tables are ignored.
++* All existing virtual tables use `LocalPartitioner`. 
++Since a virtual table is not replicated the partitioner sorts in order of partition keys instead of by their hash.
++* Making advanced queries using `ALLOW FILTERING` and aggregation functions can be executed in virtual tables, even though in normal tables we dont recommend it.
++
++== Virtual Keyspaces
++
++Apache Cassandra 4.0 has added two new keyspaces for virtual tables:
++
++* `system_virtual_schema` 
++* `system_views`. 
++
++The `system_virtual_schema` keyspace has three tables: `keyspaces`,
++`columns` and `tables` for the virtual keyspace, table, and column definitions, respectively.
++These tables contain schema information for the virtual tables.
++It is used by Cassandra internally and a user should not access it directly.
++
++The `system_views` keyspace contains the actual virtual tables.
++
++== Virtual Table Limitations
++
++Before disccusing virtual keyspaces and tables, note that virtual keyspaces and tables have some limitations. 
++These limitations are subject to change.
++Virtual keyspaces cannot be altered or dropped. 
++In fact, no operations can be performed against virtual keyspaces.
++
++Virtual tables cannot be created in virtual keyspaces.
++Virtual tables cannot be altered, dropped, or truncated.
++Secondary indexes, types, functions, aggregates, materialized views, and triggers cannot be created for virtual tables.
++Expiring time-to-live (TTL) columns cannot be created.
++Virtual tables do not support conditional updates or deletes.
++Aggregates may be run in SELECT statements.
++
++Conditional batch statements cannot include mutations for virtual tables, nor can a virtual table statement be included in a logged batch.
++In fact, mutations for virtual and regular tables cannot occur in the same batch table.
++
++== Virtual Tables
++
++Each of the virtual tables in the `system_views` virtual keyspace contain different information.
++
++The following table describes the virtual tables: 
++
++[width="98%",cols="27%,73%",]
++|===
++|Virtual Table |Description
++
++|caches |Displays the general cache information including cache name, capacity_bytes, entry_count, hit_count, hit_ratio double,
++recent_hit_rate_per_second, recent_request_rate_per_second, request_count, and size_bytes.
++
++|clients |Lists information about all connected clients.
++
++|coordinator_read_latency |Records counts, keyspace_name, table_name, max, median, and per_second for coordinator reads.
++
++|coordinator_scan |Records counts, keyspace_name, table_name, max, median, and per_second for coordinator scans.
++
++|coordinator_write_latency |Records counts, keyspace_name, table_name, max, median, and per_second for coordinator writes.
++
++|disk_usage |Records disk usage including disk_space, keyspace_name, and table_name, sorted by system keyspaces.
++
++|internode_inbound |Lists information about the inbound internode messaging.
++
++|internode_outbound |Information about the outbound internode messaging.
++
++|local_read_latency |Records counts, keyspace_name, table_name, max, median, and per_second for local reads.
++
++|local_scan |Records counts, keyspace_name, table_name, max, median, and per_second for local scans.
++
++|local_write_latency |Records counts, keyspace_name, table_name, max, median, and per_second for local writes.
++
++|max_partition_size |A table metric for maximum partition size.
++
++|rows_per_read |Records counts, keyspace_name, tablek_name, max, and median for rows read.
++
++|settings |Displays configuration settings in cassandra.yaml.
++
++|sstable_tasks |Lists currently running tasks and progress on SSTables, for operations like compaction and upgrade.
++
++|system_properties |Displays environmental system properties set on the node.
++
++|thread_pools |Lists metrics for each thread pool.
++
++|tombstones_per_read |Records counts, keyspace_name, tablek_name, max, and median for tombstones.
++|===
++
++We shall discuss some of the virtual tables in more detail next.
++
++=== Clients Virtual Table
++
++The `clients` virtual table lists all active connections (connected
++clients) including their ip address, port, connection stage, driver
++name, driver version, hostname, protocol version, request count, ssl
++enabled, ssl protocol and user name:
++
++....
++cqlsh:system_views> select * from system_views.clients;
++ address   | port  | connection_stage | driver_name | driver_version | hostname  | protocol_version | request_count | ssl_cipher_suite | ssl_enabled | ssl_protocol | username
++-----------+-------+------------------+-------------+----------------+-----------+------------------+---------------+------------------+-------------+--------------+-----------
++ 127.0.0.1 | 50628 |            ready |        null |           null | localhost |                4 |            55 |             null |       False |         null | anonymous
++ 127.0.0.1 | 50630 |            ready |        null |           null | localhost |                4 |            70 |             null |       False |         null | anonymous
++
++(2 rows)
++....
++
++Some examples of how `clients` can be used are:
++
++* To find applications using old incompatible versions of drivers before
++upgrading and with `nodetool enableoldprotocolversions` and
++`nodetool disableoldprotocolversions` during upgrades.
++* To identify clients sending too many requests.
++* To find if SSL is enabled during the migration to and from ssl.
++
++The virtual tables may be described with `DESCRIBE` statement. The DDL
++listed however cannot be run to create a virtual table. As an example
++describe the `system_views.clients` virtual table:
++
++....
++cqlsh:system_views> DESC TABLE system_views.clients;
++CREATE TABLE system_views.clients (
++  address inet,
++  connection_stage text,
++  driver_name text,
++  driver_version text,
++  hostname text,
++  port int,
++  protocol_version int,
++  request_count bigint,
++  ssl_cipher_suite text,
++  ssl_enabled boolean,
++  ssl_protocol text,
++  username text,
++  PRIMARY KEY (address, port)) WITH CLUSTERING ORDER BY (port ASC)
++  AND compaction = {'class': 'None'}
++  AND compression = {};
++....
++
++=== Caches Virtual Table
++
++The `caches` virtual table lists information about the caches. The four
++caches presently created are chunks, counters, keys and rows. A query on
++the `caches` virtual table returns the following details:
++
++....
++cqlsh:system_views> SELECT * FROM system_views.caches;
++name     | capacity_bytes | entry_count | hit_count | hit_ratio | recent_hit_rate_per_second | recent_request_rate_per_second | request_count | size_bytes
++---------+----------------+-------------+-----------+-----------+----------------------------+--------------------------------+---------------+------------
++  chunks |      229638144 |          29 |       166 |      0.83 |                          5 |                              6 |           200 |     475136
++counters |       26214400 |           0 |         0 |       NaN |                          0 |                              0 |             0 |          0
++    keys |       52428800 |          14 |       124 |  0.873239 |                          4 |                              4 |           142 |       1248
++    rows |              0 |           0 |         0 |       NaN |                          0 |                              0 |             0 |          0
++
++(4 rows)
++....
++
++=== Settings Virtual Table
++
++The `settings` table is rather useful and lists all the current
++configuration settings from the `cassandra.yaml`. The encryption options
++are overridden to hide the sensitive truststore information or
++passwords. The configuration settings however cannot be set using DML on
++the virtual table presently: :
++
++....
++cqlsh:system_views> SELECT * FROM system_views.settings;
++
++name                                 | value
++-------------------------------------+--------------------
++  allocate_tokens_for_keyspace       | null
++  audit_logging_options_enabled      | false
++  auto_snapshot                      | true
++  automatic_sstable_upgrade          | false
++  cluster_name                       | Test Cluster
++  enable_transient_replication       | false
++  hinted_handoff_enabled             | true
++  hints_directory                    | /home/ec2-user/cassandra/data/hints
++  incremental_backups                | false
++  initial_token                      | null
++                           ...
++                           ...
++                           ...
++  rpc_address                        | localhost
++  ssl_storage_port                   | 7001
++  start_native_transport             | true
++  storage_port                       | 7000
++  stream_entire_sstables             | true
++  (224 rows)
++....
++
++The `settings` table can be really useful if yaml file has been changed
++since startup and dont know running configuration, or to find if they
++have been modified via jmx/nodetool or virtual tables.
++
++=== Thread Pools Virtual Table
++
++The `thread_pools` table lists information about all thread pools.
++Thread pool information includes active tasks, active tasks limit,
++blocked tasks, blocked tasks all time, completed tasks, and pending
++tasks. A query on the `thread_pools` returns following details:
++
++....
++cqlsh:system_views> select * from system_views.thread_pools;
++
++name                         | active_tasks | active_tasks_limit | blocked_tasks | blocked_tasks_all_time | completed_tasks | pending_tasks
++------------------------------+--------------+--------------------+---------------+------------------------+-----------------+---------------
++            AntiEntropyStage |            0 |                  1 |             0 |                      0 |               0 |             0
++        CacheCleanupExecutor |            0 |                  1 |             0 |                      0 |               0 |             0
++          CompactionExecutor |            0 |                  2 |             0 |                      0 |             881 |             0
++        CounterMutationStage |            0 |                 32 |             0 |                      0 |               0 |             0
++                 GossipStage |            0 |                  1 |             0 |                      0 |               0 |             0
++             HintsDispatcher |            0 |                  2 |             0 |                      0 |               0 |             0
++       InternalResponseStage |            0 |                  2 |             0 |                      0 |               0 |             0
++         MemtableFlushWriter |            0 |                  2 |             0 |                      0 |               1 |             0
++           MemtablePostFlush |            0 |                  1 |             0 |                      0 |               2 |             0
++       MemtableReclaimMemory |            0 |                  1 |             0 |                      0 |               1 |             0
++              MigrationStage |            0 |                  1 |             0 |                      0 |               0 |             0
++                   MiscStage |            0 |                  1 |             0 |                      0 |               0 |             0
++               MutationStage |            0 |                 32 |             0 |                      0 |               0 |             0
++   Native-Transport-Requests |            1 |                128 |             0 |                      0 |             130 |             0
++      PendingRangeCalculator |            0 |                  1 |             0 |                      0 |               1 |             0
++PerDiskMemtableFlushWriter_0 |            0 |                  2 |             0 |                      0 |               1 |             0
++                   ReadStage |            0 |                 32 |             0 |                      0 |              13 |             0
++                 Repair-Task |            0 |         2147483647 |             0 |                      0 |               0 |             0
++        RequestResponseStage |            0 |                  2 |             0 |                      0 |               0 |             0
++                     Sampler |            0 |                  1 |             0 |                      0 |               0 |             0
++    SecondaryIndexManagement |            0 |                  1 |             0 |                      0 |               0 |             0
++          ValidationExecutor |            0 |         2147483647 |             0 |                      0 |               0 |             0
++           ViewBuildExecutor |            0 |                  1 |             0 |                      0 |               0 |             0
++           ViewMutationStage |            0 |                 32 |             0 |                      0 |               0 |             0
++....
++
++(24 rows)
++
++=== Internode Inbound Messaging Virtual Table
++
++The `internode_inbound` virtual table is for the internode inbound
++messaging. Initially no internode inbound messaging may get listed. In
++addition to the address, port, datacenter and rack information includes
++corrupt frames recovered, corrupt frames unrecovered, error bytes, error
++count, expired bytes, expired count, processed bytes, processed count,
++received bytes, received count, scheduled bytes, scheduled count,
++throttled count, throttled nanos, using bytes, using reserve bytes. A
++query on the `internode_inbound` returns following details:
++
++....
++cqlsh:system_views> SELECT * FROM system_views.internode_inbound;
++address | port | dc | rack | corrupt_frames_recovered | corrupt_frames_unrecovered |
++error_bytes | error_count | expired_bytes | expired_count | processed_bytes |
++processed_count | received_bytes | received_count | scheduled_bytes | scheduled_count | throttled_count | throttled_nanos | using_bytes | using_reserve_bytes
++---------+------+----+------+--------------------------+----------------------------+-
++----------
++(0 rows)
++....
++
++=== SSTables Tasks Virtual Table
++
++The `sstable_tasks` could be used to get information about running
++tasks. It lists following columns:
++
++....
++cqlsh:system_views> SELECT * FROM sstable_tasks;
++keyspace_name | table_name | task_id                              | kind       | progress | total    | unit
++---------------+------------+--------------------------------------+------------+----------+----------+-------
++       basic |      wide2 | c3909740-cdf7-11e9-a8ed-0f03de2d9ae1 | compaction | 60418761 | 70882110 | bytes
++       basic |      wide2 | c7556770-cdf7-11e9-a8ed-0f03de2d9ae1 | compaction |  2995623 | 40314679 | bytes
++....
++
++As another example, to find how much time is remaining for SSTable
++tasks, use the following query:
++
++....
++SELECT total - progress AS remaining
++FROM system_views.sstable_tasks;
++....
++
++=== Other Virtual Tables
++
++Some examples of using other virtual tables are as follows.
++
++Find tables with most disk usage:
++
++....
++cqlsh> SELECT * FROM disk_usage WHERE mebibytes > 1 ALLOW FILTERING;
++
++keyspace_name | table_name | mebibytes
++---------------+------------+-----------
++   keyspace1 |  standard1 |       288
++  tlp_stress |   keyvalue |      3211
++....
++
++Find queries on table/s with greatest read latency:
++
++....
++cqlsh> SELECT * FROM  local_read_latency WHERE per_second > 1 ALLOW FILTERING;
++
++keyspace_name | table_name | p50th_ms | p99th_ms | count    | max_ms  | per_second
++---------------+------------+----------+----------+----------+---------+------------
++  tlp_stress |   keyvalue |    0.043 |    0.152 | 49785158 | 186.563 |  11418.356
++....
++
++
++== Example
++
++[arabic, start=1]
++. To list the keyspaces, enter ``cqlsh`` and run the CQL command ``DESCRIBE KEYSPACES``:
++
++[source, cql]
++----
++cqlsh> DESC KEYSPACES;
++system_schema  system          system_distributed  system_virtual_schema
++system_auth    system_traces   system_views
++----
++
++[arabic, start=2]
++. To view the virtual table schema, run the CQL commands ``USE system_virtual_schema`` and ``SELECT * FROM tables``:
++
++[source, cql]
++----
++cqlsh> USE system_virtual_schema;
++cqlsh> SELECT * FROM tables;
++----
++ 
++results in:
++
++[source, cql]
++----
++ keyspace_name         | table_name                | comment
++-----------------------+---------------------------+--------------------------------------
++          system_views |                    caches |                        system caches
++          system_views |                   clients |          currently connected clients
++          system_views |  coordinator_read_latency |
++          system_views |  coordinator_scan_latency |
++          system_views | coordinator_write_latency |
++          system_views |                disk_usage |
++          system_views |         internode_inbound |
++          system_views |        internode_outbound |
++          system_views |        local_read_latency |
++          system_views |        local_scan_latency |
++          system_views |       local_write_latency |
++          system_views |        max_partition_size |
++          system_views |             rows_per_read |
++          system_views |                  settings |                     current settings
++          system_views |             sstable_tasks |                current sstable tasks
++          system_views |         system_properties | Cassandra relevant system properties
++          system_views |              thread_pools |
++          system_views |       tombstones_per_read |
++ system_virtual_schema |                   columns |           virtual column definitions
++ system_virtual_schema |                 keyspaces |         virtual keyspace definitions
++ system_virtual_schema |                    tables |            virtual table definitions
++
++(21 rows)
++----
++
++[arabic, start=3]
++. To view the virtual tables, run the CQL commands ``USE system_view`` and ``DESCRIBE tables``:
++
++[source, cql]
++----
++cqlsh> USE system_view;;
++cqlsh> DESCRIBE tables;
++----
++
++results in:
++
++[source, cql]
++----
++sstable_tasks       clients                   coordinator_write_latency
++disk_usage          local_write_latency       tombstones_per_read
++thread_pools        internode_outbound        settings
++local_scan_latency  coordinator_scan_latency  system_properties
++internode_inbound   coordinator_read_latency  max_partition_size
++local_read_latency  rows_per_read             caches
++----
++
++[arabic, start=4]
++. To look at any table data, run the CQL command ``SELECT``:
++
++[source, cql]
++----
++cqlsh> USE system_view;;
++cqlsh> SELECT * FROM clients LIMIT 2;
++----
++ results in:
++
++[source, cql]
++----
++ address   | port  | connection_stage | driver_name            | driver_version | hostname  | protocol_version | request_count | ssl_cipher_suite | ssl_enabled | ssl_protocol | username
++-----------+-------+------------------+------------------------+----------------+-----------+------------------+---------------+------------------+-------------+--------------+-----------
++ 127.0.0.1 | 37308 |            ready | DataStax Python Driver |   3.21.0.post0 | localhost |                4 |            17 |             null |       False |         null | anonymous
++ 127.0.0.1 | 37310 |            ready | DataStax Python Driver |   3.21.0.post0 | localhost |                4 |             8 |             null |       False |         null | anonymous
++
++(2 rows)
++----
diff --cc doc/modules/cassandra/pages/troubleshooting/reading_logs.adoc
index 0000000,1736896..fa68d2a
mode 000000,100644..100644
--- a/doc/modules/cassandra/pages/troubleshooting/reading_logs.adoc
+++ b/doc/modules/cassandra/pages/troubleshooting/reading_logs.adoc
@@@ -1,0 -1,247 +1,247 @@@
+ = Cassandra Logs
+ 
+ Cassandra has rich support for logging and attempts to give operators
+ maximum insight into the database while at the same time limiting noise
+ to the logs.
+ 
+ == Common Log Files
+ 
+ Cassandra has three main logs, the `system.log`, `debug.log` and
+ `gc.log` which hold general logging messages, debugging logging
+ messages, and java garbage collection logs respectively.
+ 
 -These logs by default live in `$CASSANDRA_HOME/logs`, but most Linux
++These logs by default live in `${CASSANDRA_HOME}/logs`, but most Linux
+ distributions relocate logs to `/var/log/cassandra`. Operators can tune
+ this location as well as what levels are logged using the provided
+ `logback.xml` file.
+ 
+ === `system.log`
+ 
+ This log is the default Cassandra log and is a good place to start any
+ investigation. Some examples of activities logged to this log:
+ 
+ * Uncaught exceptions. These can be very useful for debugging errors.
+ * `GCInspector` messages indicating long garbage collector pauses. When
+ long pauses happen Cassandra will print how long and also what was the
+ state of the system (thread state) at the time of that pause. This can
+ help narrow down a capacity issue (either not enough heap or not enough
+ spare CPU).
+ * Information about nodes joining and leaving the cluster as well as
+ token metadata (data ownersip) changes. This is useful for debugging
+ network partitions, data movements, and more.
+ * Keyspace/Table creation, modification, deletion.
+ * `StartupChecks` that ensure optimal configuration of the operating
+ system to run Cassandra
+ * Information about some background operational tasks (e.g. Index
+ Redistribution).
+ 
+ As with any application, looking for `ERROR` or `WARN` lines can be a
+ great first step:
+ 
+ [source, bash]
+ ----
+ $ # Search for warnings or errors in the latest system.log
+ $ grep 'WARN\|ERROR' system.log | tail
+ ...
+ 
+ $ # Search for warnings or errors in all rotated system.log
+ $ zgrep 'WARN\|ERROR' system.log.* | less
+ ...
+ ----
+ 
+ === `debug.log`
+ 
+ This log contains additional debugging information that may be useful
+ when troubleshooting but may be much noiser than the normal
+ `system.log`. Some examples of activities logged to this log:
+ 
+ * Information about compactions, including when they start, which
+ sstables they contain, and when they finish.
+ * Information about memtable flushes to disk, including when they
+ happened, how large the flushes were, and which commitlog segments the
+ flush impacted.
+ 
+ This log can be _very_ noisy, so it is highly recommended to use `grep`
+ and other log analysis tools to dive deep. For example:
+ 
+ [source, bash]
+ ----
+ # Search for messages involving a CompactionTask with 5 lines of context
+ $ grep CompactionTask debug.log -C 5 
+ 
+ # Look at the distribution of flush tasks per keyspace
+ $ grep "Enqueuing flush" debug.log | cut -f 10 -d ' ' | sort | uniq -c
+     6 compaction_history:
+     1 test_keyspace:
+     2 local:
+     17 size_estimates:
+     17 sstable_activity:
+ ----
+ 
+ === `gc.log`
+ 
+ The gc log is a standard Java GC log. With the default `jvm.options`
+ settings you get a lot of valuable information in this log such as
+ application pause times, and why pauses happened. This may help narrow
+ down throughput or latency issues to a mistuned JVM. For example you can
+ view the last few pauses:
+ 
+ [source, bash]
+ ----
+ $ grep stopped gc.log.0.current | tail
+ 2018-08-29T00:19:39.522+0000: 3022663.591: Total time for which application threads were stopped: 0.0332813 seconds, Stopping threads took: 0.0008189 seconds
+ 2018-08-29T00:19:44.369+0000: 3022668.438: Total time for which application threads were stopped: 0.0312507 seconds, Stopping threads took: 0.0007025 seconds
+ 2018-08-29T00:19:49.796+0000: 3022673.865: Total time for which application threads were stopped: 0.0307071 seconds, Stopping threads took: 0.0006662 seconds
+ 2018-08-29T00:19:55.452+0000: 3022679.521: Total time for which application threads were stopped: 0.0309578 seconds, Stopping threads took: 0.0006832 seconds
+ 2018-08-29T00:20:00.127+0000: 3022684.197: Total time for which application threads were stopped: 0.0310082 seconds, Stopping threads took: 0.0007090 seconds
+ 2018-08-29T00:20:06.583+0000: 3022690.653: Total time for which application threads were stopped: 0.0317346 seconds, Stopping threads took: 0.0007106 seconds
+ 2018-08-29T00:20:10.079+0000: 3022694.148: Total time for which application threads were stopped: 0.0299036 seconds, Stopping threads took: 0.0006889 seconds
+ 2018-08-29T00:20:15.739+0000: 3022699.809: Total time for which application threads were stopped: 0.0078283 seconds, Stopping threads took: 0.0006012 seconds
+ 2018-08-29T00:20:15.770+0000: 3022699.839: Total time for which application threads were stopped: 0.0301285 seconds, Stopping threads took: 0.0003789 seconds
+ 2018-08-29T00:20:15.798+0000: 3022699.867: Total time for which application threads were stopped: 0.0279407 seconds, Stopping threads took: 0.0003627 seconds
+ ----
+ 
+ This shows a lot of valuable information including how long the
+ application was paused (meaning zero user queries were being serviced
+ during the e.g. 33ms JVM pause) as well as how long it took to enter the
+ safepoint. You can use this raw data to e.g. get the longest pauses:
+ 
+ [source, bash]
+ ----
+ $ grep stopped gc.log.0.current | cut -f 11 -d ' ' | sort -n  | tail | xargs -IX grep X gc.log.0.current | sort -k 1
+ 2018-08-28T17:13:40.520-0700: 1.193: Total time for which application threads were stopped: 0.0157914 seconds, Stopping threads took: 0.0000355 seconds
+ 2018-08-28T17:13:41.206-0700: 1.879: Total time for which application threads were stopped: 0.0249811 seconds, Stopping threads took: 0.0000318 seconds
+ 2018-08-28T17:13:41.638-0700: 2.311: Total time for which application threads were stopped: 0.0561130 seconds, Stopping threads took: 0.0000328 seconds
+ 2018-08-28T17:13:41.677-0700: 2.350: Total time for which application threads were stopped: 0.0362129 seconds, Stopping threads took: 0.0000597 seconds
+ 2018-08-28T17:13:41.781-0700: 2.454: Total time for which application threads were stopped: 0.0442846 seconds, Stopping threads took: 0.0000238 seconds
+ 2018-08-28T17:13:41.976-0700: 2.649: Total time for which application threads were stopped: 0.0377115 seconds, Stopping threads took: 0.0000250 seconds
+ 2018-08-28T17:13:42.172-0700: 2.845: Total time for which application threads were stopped: 0.0475415 seconds, Stopping threads took: 0.0001018 seconds
+ 2018-08-28T17:13:42.825-0700: 3.498: Total time for which application threads were stopped: 0.0379155 seconds, Stopping threads took: 0.0000571 seconds
+ 2018-08-28T17:13:43.574-0700: 4.247: Total time for which application threads were stopped: 0.0323812 seconds, Stopping threads took: 0.0000574 seconds
+ 2018-08-28T17:13:44.602-0700: 5.275: Total time for which application threads were stopped: 0.0238975 seconds, Stopping threads took: 0.0000788 seconds
+ ----
+ 
+ In this case any client waiting on a query would have experienced a
+ 56ms latency at 17:13:41.
+ 
+ Note that GC pauses are not _link:[only] garbage collection, although
+ generally speaking high pauses with fast safepoints indicate a lack of
+ JVM heap or mistuned JVM GC algorithm. High pauses with slow safepoints
+ typically indicate that the JVM is having trouble entering a safepoint
+ which usually indicates slow disk drives (Cassandra makes heavy use of
+ memory mapped reads which the JVM doesn't know could have disk latency,
+ so the JVM safepoint logic doesn't handle a blocking memory mapped read
+ particularly well).
+ 
+ Using these logs you can even get a pause distribution with something
+ like
+ https://github.com/bitly/data_hacks/blob/master/data_hacks/histogram.py[histogram.py]:
+ 
+ [source, bash]
+ ----
+ $ grep stopped gc.log.0.current | cut -f 11 -d ' ' | sort -n | histogram.py
+ # NumSamples = 410293; Min = 0.00; Max = 11.49
+ # Mean = 0.035346; Variance = 0.002216; SD = 0.047078; Median 0.036498
+ # each ∎ represents a count of 5470
+     0.0001 -     1.1496 [410255]: ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
+     1.1496 -     2.2991 [    15]:
+     2.2991 -     3.4486 [     5]:
+     3.4486 -     4.5981 [     1]:
+     4.5981 -     5.7475 [     5]:
+     5.7475 -     6.8970 [     9]:
+     6.8970 -     8.0465 [     1]:
+     8.0465 -     9.1960 [     0]:
+     9.1960 -    10.3455 [     0]:
+    10.3455 -    11.4949 [     2]:
+ ----
+ 
+ We can see in this case while we have very good average performance
+ something is causing multi second JVM pauses ... In this case it was
+ mostly safepoint pauses caused by slow disks:
+ 
+ [source, bash]
+ ----
+ $ grep stopped gc.log.0.current | cut -f 11 -d ' ' | sort -n | tail | xargs -IX grep X  gc.log.0.current| sort -k 1
+ 2018-07-27T04:52:27.413+0000: 187831.482: Total time for which application threads were stopped: 6.5037022 seconds, Stopping threads took: 0.0005212 seconds
+ 2018-07-30T23:38:18.354+0000: 514582.423: Total time for which application threads were stopped: 6.3262938 seconds, Stopping threads took: 0.0004882 seconds
+ 2018-08-01T02:37:48.380+0000: 611752.450: Total time for which application threads were stopped: 10.3879659 seconds, Stopping threads took: 0.0004475 seconds
+ 2018-08-06T22:04:14.990+0000: 1113739.059: Total time for which application threads were stopped: 6.0917409 seconds, Stopping threads took: 0.0005553 seconds
+ 2018-08-14T00:04:06.091+0000: 1725730.160: Total time for which application threads were stopped: 6.0141054 seconds, Stopping threads took: 0.0004976 seconds
+ 2018-08-17T06:23:06.755+0000: 2007670.824: Total time for which application threads were stopped: 6.0133694 seconds, Stopping threads took: 0.0006011 seconds
+ 2018-08-23T06:35:46.068+0000: 2526830.137: Total time for which application threads were stopped: 6.4767751 seconds, Stopping threads took: 6.4426849 seconds
+ 2018-08-23T06:36:29.018+0000: 2526873.087: Total time for which application threads were stopped: 11.4949489 seconds, Stopping threads took: 11.4638297 seconds
+ 2018-08-23T06:37:12.671+0000: 2526916.741: Total time for which application threads were stopped: 6.3867003 seconds, Stopping threads took: 6.3507166 seconds
+ 2018-08-23T06:37:47.156+0000: 2526951.225: Total time for which application threads were stopped: 7.9528200 seconds, Stopping threads took: 7.9197756 seconds
+ ----
+ 
+ Sometimes reading and understanding java GC logs is hard, but you can
+ take the raw GC files and visualize them using tools such as
+ https://github.com/chewiebug/GCViewer[GCViewer] which take the Cassandra
+ GC log as input and show you detailed visual information on your garbage
+ collection performance. This includes pause analysis as well as
+ throughput information. For a stable Cassandra JVM you probably want to
+ aim for pauses less than 200ms and GC throughput greater
+ than 99%.
+ 
+ Java GC pauses are one of the leading causes of tail latency in
+ Cassandra (along with drive latency) so sometimes this information can
+ be crucial while debugging tail latency issues.
+ 
+ == Getting More Information
+ 
+ If the default logging levels are insuficient, `nodetool` can set higher
+ or lower logging levels for various packages and classes using the
+ `nodetool setlogginglevel` command. Start by viewing the current levels:
+ 
+ [source, bash]
+ ----
+ $ nodetool getlogginglevels
+ 
+ Logger Name                                        Log Level
+ ROOT                                                    INFO
+ org.apache.cassandra                                   DEBUG
+ ----
+ 
+ Perhaps the `Gossiper` is acting up and we wish to enable it at `TRACE`
+ level for even more insight:
+ 
+ [source, bash]
+ ----
+ $ nodetool setlogginglevel org.apache.cassandra.gms.Gossiper TRACE
+ 
+ $ nodetool getlogginglevels
+ 
+ Logger Name                                        Log Level
+ ROOT                                                    INFO
+ org.apache.cassandra                                   DEBUG
+ org.apache.cassandra.gms.Gossiper                      TRACE
+ 
+ $ grep TRACE debug.log | tail -2
+ TRACE [GossipStage:1] 2018-07-04 17:07:47,879 Gossiper.java:1234 - Updating
+ heartbeat state version to 2344 from 2343 for 127.0.0.2:7000 ...
+ TRACE [GossipStage:1] 2018-07-04 17:07:47,879 Gossiper.java:923 - local
+ heartbeat version 2341 greater than 2340 for 127.0.0.1:7000
+ ----
+ 
+ Note that any changes made this way are reverted on next Cassandra
+ process restart. To make the changes permanent add the appropriate rule
+ to `logback.xml`.
+ 
+ [source,diff]
+ ----
+ diff --git a/conf/logback.xml b/conf/logback.xml
+ index b2c5b10..71b0a49 100644
+ --- a/conf/logback.xml
+ +++ b/conf/logback.xml
+ @@ -98,4 +98,5 @@ appender reference in the root level section below.
+    </root>
+ 
+    <logger name="org.apache.cassandra" level="DEBUG"/>
+ +  <logger name="org.apache.cassandra.gms.Gossiper" level="TRACE"/>
+  </configuration>
+ ----
+ 
+ 
+ Note that if you want more information than this tool provides, there
+ are other live capture options available such as
+ xref:cql/troubleshooting/use_tools.adoc#packet-capture[`packet-capture`].
diff --cc doc/modules/cassandra/partials/package_versions.adoc
index 0000000,f5c8968..12eab03
mode 000000,100644..100644
--- a/doc/modules/cassandra/partials/package_versions.adoc
+++ b/doc/modules/cassandra/partials/package_versions.adoc
@@@ -1,0 -1,5 +1,5 @@@
 -The latest major version is {311_version} and the
 -corresponding distribution name is `311x` (with an "x" as the suffix).
 -For older releases use `30x` for {30_version}, `22x` for {22_version} and
 -`21x` for {21_version}. 
 -For example, to add the repository for version {311_version} (`311x`):
++The latest major version is {40_version} and the
++corresponding distribution name is `40x` (with an "x" as the suffix).
++For older releases use `311x` for C* {3x_version} series, `30x` for {30_version}, `22x`
++for {22_version} and `21x` for {21_version}. For example, to add the repository for
++version {40_version} (`40x`):

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org