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

smiklosovic pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 50960a2e7e Remove 4.0 upgrade paths and related 4.0 tests
50960a2e7e is described below

commit 50960a2e7e88b255298afc208d178b7b805048aa
Author: Stefan Miklosovic <[email protected]>
AuthorDate: Wed Apr 22 13:04:43 2026 +0200

    Remove 4.0 upgrade paths and related 4.0 tests
    
    patch by Stefan Miklosovic; reviewed by Michael Semb Wever for 
CASSANDRA-21324
---
 .build/run-tests.sh                                |   2 +-
 .circleci/config.yml                               |   2 +-
 .circleci/config.yml.FREE                          |   2 +-
 .circleci/config.yml.PAID                          |   2 +-
 .circleci/config_template.yml                      |   2 +-
 test/data/config/version=4.0-alpha1.yml            | 321 ---------------------
 .../cassandra/distributed/impl/InstanceConfig.java |   6 -
 .../distributed/upgrade/BatchUpgradeTest.java      |   2 +-
 .../upgrade/CompactStorageColumnDeleteTest.java    |   2 +-
 .../upgrade/CompactStorageHiddenColumnTest.java    |   2 +-
 ...CompactStorageImplicitNullInClusteringTest.java |   2 +-
 .../upgrade/CompactStoragePagingTest.java          |   2 +-
 .../CompactStoragePagingWithProtocolV40Test.java   |  33 ---
 .../CompactionHistorySystemTableUpgradeTest.java   |   2 -
 .../upgrade/ConfigCompatibilityTestGenerate.java   |   3 +-
 .../distributed/upgrade/MixedModeIndexV40Test.java |  33 ---
 .../upgrade/MixedModeMessageForwardTest.java       |   2 +-
 .../distributed/upgrade/MixedModePaxosTTLTest.java |  24 +-
 .../upgrade/MixedModePaxosTestBase.java            |  26 +-
 .../distributed/upgrade/MixedModeRepairTest.java   |   6 +-
 .../MixedModeTTLOverflowUpgradeTestBase.java       |   2 -
 .../upgrade/MixedModeWritetimeOrTTLTest.java       |   2 -
 .../upgrade/Pre40MessageFilterTest.java            |  63 ----
 .../upgrade/RepairRequestTimeoutUpgradeTest.java   |  53 ----
 .../distributed/upgrade/UpgradeTestBase.java       |   8 -
 .../cassandra/config/ConfigCompatibilityTest.java  |   9 -
 26 files changed, 28 insertions(+), 585 deletions(-)

diff --git a/.build/run-tests.sh b/.build/run-tests.sh
index 8ec8148cfc..d9ab624120 100755
--- a/.build/run-tests.sh
+++ b/.build/run-tests.sh
@@ -203,7 +203,7 @@ _build_all_dtest_jars() {
     [ "${java_version}" -eq 11 ] && export CASSANDRA_USE_JDK11=true
 
     pushd ${TMP_DIR}/cassandra-dtest-jars >/dev/null
-    for branch in cassandra-4.0 cassandra-4.1 cassandra-5.0 cassandra-6.0 
trunk ; do
+    for branch in cassandra-4.1 cassandra-5.0 cassandra-6.0 trunk ; do
         git clean -qxdff && git reset --hard HEAD  || echo "failed to 
reset/clean ${TMP_DIR}/cassandra-dtest-jars… continuing…"
         git checkout --quiet $branch
         dtest_jar_version=$(grep 'property\s*name=\"base.version\"' build.xml 
|sed -ne 's/.*value=\"\([^"]*\)\".*/\1/p')
diff --git a/.circleci/config.yml b/.circleci/config.yml
index eb7c6d1780..790404df81 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -5045,7 +5045,7 @@ jobs:
           cd ~/cassandra
           mkdir ~/dtest_jars
           git remote add apache https://github.com/apache/cassandra.git
-          for branch in cassandra-4.0 cassandra-4.1 cassandra-5.0 
cassandra-6.0 trunk; do
+          for branch in cassandra-4.1 cassandra-5.0 cassandra-6.0 trunk; do
             # check out the correct cassandra version:
             git remote set-branches --add apache '$branch'
             git fetch --depth 1 apache $branch
diff --git a/.circleci/config.yml.FREE b/.circleci/config.yml.FREE
index eb7c6d1780..790404df81 100644
--- a/.circleci/config.yml.FREE
+++ b/.circleci/config.yml.FREE
@@ -5045,7 +5045,7 @@ jobs:
           cd ~/cassandra
           mkdir ~/dtest_jars
           git remote add apache https://github.com/apache/cassandra.git
-          for branch in cassandra-4.0 cassandra-4.1 cassandra-5.0 
cassandra-6.0 trunk; do
+          for branch in cassandra-4.1 cassandra-5.0 cassandra-6.0 trunk; do
             # check out the correct cassandra version:
             git remote set-branches --add apache '$branch'
             git fetch --depth 1 apache $branch
diff --git a/.circleci/config.yml.PAID b/.circleci/config.yml.PAID
index 92a7eccfb6..a64135449b 100644
--- a/.circleci/config.yml.PAID
+++ b/.circleci/config.yml.PAID
@@ -5045,7 +5045,7 @@ jobs:
           cd ~/cassandra
           mkdir ~/dtest_jars
           git remote add apache https://github.com/apache/cassandra.git
-          for branch in cassandra-4.0 cassandra-4.1 cassandra-5.0 
cassandra-6.0 trunk; do
+          for branch in cassandra-4.1 cassandra-5.0 cassandra-6.0 trunk; do
             # check out the correct cassandra version:
             git remote set-branches --add apache '$branch'
             git fetch --depth 1 apache $branch
diff --git a/.circleci/config_template.yml b/.circleci/config_template.yml
index abae0e8bb0..c1f0bf0972 100644
--- a/.circleci/config_template.yml
+++ b/.circleci/config_template.yml
@@ -2824,7 +2824,7 @@ commands:
           cd ~/cassandra
           mkdir ~/dtest_jars
           git remote add apache https://github.com/apache/cassandra.git
-          for branch in cassandra-4.0 cassandra-4.1 cassandra-5.0 
cassandra-6.0 trunk; do
+          for branch in cassandra-4.1 cassandra-5.0 cassandra-6.0 trunk; do
             # check out the correct cassandra version:
             git remote set-branches --add apache '$branch'
             git fetch --depth 1 apache $branch
diff --git a/test/data/config/version=4.0-alpha1.yml 
b/test/data/config/version=4.0-alpha1.yml
deleted file mode 100644
index 872f1ec7df..0000000000
--- a/test/data/config/version=4.0-alpha1.yml
+++ /dev/null
@@ -1,321 +0,0 @@
-# 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.
-#
-#
----
-repaired_data_tracking_for_range_reads_enabled: "java.lang.Boolean"
-block_for_peers_timeout_in_secs: "java.lang.Integer"
-flush_compression: "org.apache.cassandra.config.Config.FlushCompression"
-audit_logging_options:
-  audit_logs_dir: "java.lang.String"
-  included_users: "java.lang.String"
-  logger:
-    class_name: "java.lang.String"
-    parameters: "java.util.Map"
-  excluded_categories: "java.lang.String"
-  roll_cycle: "java.lang.String"
-  enabled: "java.lang.Boolean"
-  included_categories: "java.lang.String"
-  max_archive_retries: "java.lang.Integer"
-  excluded_keyspaces: "java.lang.String"
-  archive_command: "java.lang.String"
-  included_keyspaces: "java.lang.String"
-  max_log_size: "java.lang.Long"
-  allow_nodetool_archive_command: "java.lang.Boolean"
-  block: "java.lang.Boolean"
-  excluded_users: "java.lang.String"
-  max_queue_weight: "java.lang.Integer"
-cdc_total_space_in_mb: "java.lang.Integer"
-internode_application_send_queue_reserve_global_capacity_in_bytes: 
"java.lang.Integer"
-row_cache_save_period: "java.lang.Integer"
-snapshot_links_per_second: "java.lang.Long"
-disk_optimization_estimate_percentile: "java.lang.Double"
-hinted_handoff_disabled_datacenters: "java.util.Set"
-cdc_enabled: "java.lang.Boolean"
-read_request_timeout_in_ms: "java.lang.Long"
-internode_application_receive_queue_reserve_global_capacity_in_bytes: 
"java.lang.Integer"
-credentials_validity_in_ms: "java.lang.Integer"
-memtable_heap_space_in_mb: "java.lang.Integer"
-commitlog_sync: "org.apache.cassandra.config.Config.CommitLogSync"
-user_defined_function_warn_timeout: "java.lang.Long"
-tracetype_repair_ttl: "java.lang.Integer"
-concurrent_materialized_view_writes: "java.lang.Integer"
-commitlog_total_space_in_mb: "java.lang.Integer"
-hints_directory: "java.lang.String"
-native_transport_max_concurrent_connections_per_ip: "java.lang.Long"
-internode_socket_send_buffer_size_in_bytes: "java.lang.Integer"
-rpc_interface_prefer_ipv6: "java.lang.Boolean"
-check_for_duplicate_rows_during_compaction: "java.lang.Boolean"
-internode_socket_receive_buffer_size_in_bytes: "java.lang.Integer"
-user_function_timeout_policy: 
"org.apache.cassandra.config.Config.UserFunctionTimeoutPolicy"
-counter_write_request_timeout_in_ms: "java.lang.Long"
-roles_update_interval_in_ms: "java.lang.Integer"
-memtable_allocation_type: 
"org.apache.cassandra.config.Config.MemtableAllocationType"
-trickle_fsync_interval_in_kb: "java.lang.Integer"
-enable_transient_replication: "java.lang.Boolean"
-key_cache_size_in_mb: "java.lang.Long"
-tombstone_warn_threshold: "java.lang.Integer"
-column_index_cache_size_in_kb: "java.lang.Integer"
-full_query_logging_options:
-  log_dir: "java.lang.String"
-  archive_command: "java.lang.String"
-  max_log_size: "java.lang.Long"
-  allow_nodetool_archive_command: "java.lang.Boolean"
-  block: "java.lang.Boolean"
-  roll_cycle: "java.lang.String"
-  max_queue_weight: "java.lang.Integer"
-  max_archive_retries: "java.lang.Integer"
-table_count_warn_threshold: "java.lang.Integer"
-write_request_timeout_in_ms: "java.lang.Long"
-internode_tcp_user_timeout_in_ms: "java.lang.Integer"
-auto_optimise_inc_repair_streams: "java.lang.Boolean"
-commitlog_sync_batch_window_in_ms: "java.lang.Double"
-disk_failure_policy: "org.apache.cassandra.config.Config.DiskFailurePolicy"
-tombstone_failure_threshold: "java.lang.Integer"
-validation_preview_purge_head_start_in_sec: "java.lang.Integer"
-max_mutation_size_in_kb: "java.lang.Integer"
-initial_token: "java.lang.String"
-batch_size_warn_threshold_in_kb: "java.lang.Integer"
-dynamic_snitch_badness_threshold: "java.lang.Double"
-index_summary_capacity_in_mb: "java.lang.Long"
-allocate_tokens_for_local_replication_factor: "java.lang.Integer"
-counter_cache_keys_to_save: "java.lang.Integer"
-disk_optimization_page_cross_chance: "java.lang.Double"
-listen_on_broadcast_address: "java.lang.Boolean"
-internode_application_receive_queue_reserve_endpoint_capacity_in_bytes: 
"java.lang.Integer"
-row_cache_class_name: "java.lang.String"
-gc_warn_threshold_in_ms: "java.lang.Integer"
-disk_optimization_strategy: 
"org.apache.cassandra.config.Config.DiskOptimizationStrategy"
-hinted_handoff_throttle_in_kb: "java.lang.Integer"
-otc_backlog_expiration_interval_ms: "java.lang.Integer"
-counter_cache_save_period: "java.lang.Integer"
-keyspace_count_warn_threshold: "java.lang.Integer"
-hints_flush_period_in_ms: "java.lang.Integer"
-role_manager: "java.lang.String"
-block_for_peers_in_remote_dcs: "java.lang.Boolean"
-repair_command_pool_size: "java.lang.Integer"
-column_index_size_in_kb: "java.lang.Integer"
-memtable_offheap_space_in_mb: "java.lang.Integer"
-data_file_directories: "java.util.List"
-native_transport_max_frame_size_in_mb: "java.lang.Integer"
-index_summary_resize_interval_in_minutes: "java.lang.Integer"
-enable_user_defined_functions: "java.lang.Boolean"
-max_hint_window_in_ms: "java.lang.Integer"
-seed_provider:
-  class_name: "java.lang.String"
-  parameters: "java.util.Map"
-check_for_duplicate_rows_during_reads: "java.lang.Boolean"
-key_cache_migrate_during_compaction: "java.lang.Boolean"
-network_authorizer: "java.lang.String"
-batchlog_replay_throttle_in_kb: "java.lang.Integer"
-enable_scripted_user_defined_functions: "java.lang.Boolean"
-internode_application_send_queue_reserve_endpoint_capacity_in_bytes: 
"java.lang.Integer"
-commitlog_compression:
-  class_name: "java.lang.String"
-  parameters: "java.util.Map"
-broadcast_address: "java.lang.String"
-credentials_update_interval_in_ms: "java.lang.Integer"
-snapshot_before_compaction: "java.lang.Boolean"
-back_pressure_strategy:
-  class_name: "java.lang.String"
-  parameters: "java.util.Map"
-prepared_statements_cache_size_mb: "java.lang.Long"
-native_transport_port_ssl: "java.lang.Integer"
-allocate_tokens_for_keyspace: "java.lang.String"
-diagnostic_events_enabled: "java.lang.Boolean"
-storage_port: "java.lang.Integer"
-counter_cache_size_in_mb: "java.lang.Long"
-repair_request_timeout_in_ms: "java.lang.Long"
-dynamic_snitch_reset_interval_in_ms: "java.lang.Integer"
-tracetype_query_ttl: "java.lang.Integer"
-autocompaction_on_startup_enabled: "java.lang.Boolean"
-commit_failure_policy: "org.apache.cassandra.config.Config.CommitFailurePolicy"
-concurrent_writes: "java.lang.Integer"
-range_request_timeout_in_ms: "java.lang.Long"
-dynamic_snitch_update_interval_in_ms: "java.lang.Integer"
-hinted_handoff_enabled: "java.lang.Boolean"
-internode_application_receive_queue_capacity_in_bytes: "java.lang.Integer"
-automatic_sstable_upgrade: "java.lang.Boolean"
-max_value_size_in_mb: "java.lang.Integer"
-memtable_flush_writers: "java.lang.Integer"
-otc_coalescing_strategy: "java.lang.String"
-snapshot_on_repaired_data_mismatch: "java.lang.Boolean"
-commitlog_max_compression_buffers_in_pool: "java.lang.Integer"
-internode_application_send_queue_capacity_in_bytes: "java.lang.Integer"
-roles_cache_max_entries: "java.lang.Integer"
-native_transport_max_negotiable_protocol_version: "java.lang.Integer"
-start_native_transport: "java.lang.Boolean"
-ssl_storage_port: "java.lang.Integer"
-cluster_name: "java.lang.String"
-incremental_backups: "java.lang.Boolean"
-key_cache_save_period: "java.lang.Integer"
-windows_timer_interval: "java.lang.Integer"
-rpc_interface: "java.lang.String"
-repair_session_space_in_mb: "java.lang.Integer"
-row_cache_keys_to_save: "java.lang.Integer"
-repair_command_pool_full_strategy: 
"org.apache.cassandra.config.Config.RepairCommandPoolFullStrategy"
-inter_dc_stream_throughput_outbound_megabits_per_sec: "java.lang.Integer"
-client_encryption_options:
-  optional: "java.lang.Boolean"
-  store_type: "java.lang.String"
-  cipher_suites: "java.util.List"
-  enabled: "java.lang.Boolean"
-  require_endpoint_verification: "java.lang.Boolean"
-  accepted_protocols: "java.util.List"
-  keystore_password: "java.lang.String"
-  protocol: "java.lang.String"
-  require_client_auth: "java.lang.Boolean"
-  truststore_password: "java.lang.String"
-  keystore: "java.lang.String"
-  truststore: "java.lang.String"
-  algorithm: "java.lang.String"
-concurrent_validations: "java.lang.Integer"
-ideal_consistency_level: "org.apache.cassandra.db.ConsistencyLevel"
-consecutive_message_errors_threshold: "java.lang.Integer"
-trickle_fsync: "java.lang.Boolean"
-reject_repair_compaction_threshold: "java.lang.Integer"
-max_streaming_retries: "java.lang.Integer"
-native_transport_flush_in_batches_legacy: "java.lang.Boolean"
-rpc_address: "java.lang.String"
-file_cache_enabled: "java.lang.Boolean"
-cdc_raw_directory: "java.lang.String"
-num_tokens: "java.lang.Integer"
-repaired_data_tracking_for_partition_reads_enabled: "java.lang.Boolean"
-enable_drop_compact_storage: "java.lang.Boolean"
-commitlog_directory: "java.lang.String"
-unlogged_batch_across_partitions_warn_threshold: "java.lang.Integer"
-auto_bootstrap: "java.lang.Boolean"
-authorizer: "java.lang.String"
-sstable_preemptive_open_interval_in_mb: "java.lang.Integer"
-broadcast_rpc_address: "java.lang.String"
-listen_interface_prefer_ipv6: "java.lang.Boolean"
-repair_session_max_tree_depth: "java.lang.Integer"
-auto_optimise_preview_repair_streams: "java.lang.Boolean"
-concurrent_compactors: "java.lang.Integer"
-buffer_pool_use_heap_if_exhausted: "java.lang.Boolean"
-local_system_data_file_directory: "java.lang.String"
-stream_entire_sstables: "java.lang.Boolean"
-corrupted_tombstone_strategy: 
"org.apache.cassandra.config.Config.CorruptedTombstoneStrategy"
-listen_address: "java.lang.String"
-rpc_keepalive: "java.lang.Boolean"
-allow_extra_insecure_udfs: "java.lang.Boolean"
-request_timeout_in_ms: "java.lang.Long"
-disk_access_mode: "org.apache.cassandra.config.Config.DiskAccessMode"
-concurrent_counter_writes: "java.lang.Integer"
-row_cache_size_in_mb: "java.lang.Long"
-cas_contention_timeout_in_ms: "java.lang.Long"
-min_free_space_per_drive_in_mb: "java.lang.Integer"
-cross_node_timeout: "java.lang.Boolean"
-dynamic_snitch: "java.lang.Boolean"
-permissions_validity_in_ms: "java.lang.Integer"
-phi_convict_threshold: "java.lang.Double"
-native_transport_max_threads: "java.lang.Integer"
-permissions_update_interval_in_ms: "java.lang.Integer"
-authenticator: "java.lang.String"
-allow_insecure_udfs: "java.lang.Boolean"
-cache_load_timeout_seconds: "java.lang.Integer"
-concurrent_replicates: "java.lang.Integer"
-commitlog_sync_period_in_ms: "java.lang.Integer"
-auto_optimise_full_repair_streams: "java.lang.Boolean"
-internode_max_message_size_in_bytes: "java.lang.Integer"
-native_transport_max_concurrent_requests_in_bytes: "java.lang.Long"
-compaction_large_partition_warning_threshold_mb: "java.lang.Integer"
-enable_user_defined_functions_threads: "java.lang.Boolean"
-native_transport_allow_older_protocols: "java.lang.Boolean"
-otc_coalescing_enough_coalesced_messages: "java.lang.Integer"
-slow_query_log_timeout_in_ms: "java.lang.Long"
-report_unconfirmed_repaired_data_mismatches: "java.lang.Boolean"
-use_offheap_merkle_trees: "java.lang.Boolean"
-concurrent_materialized_view_builders: "java.lang.Integer"
-server_encryption_options:
-  enable_legacy_ssl_storage_port: "java.lang.Boolean"
-  optional: "java.lang.Boolean"
-  store_type: "java.lang.String"
-  cipher_suites: "java.util.List"
-  enabled: "java.lang.Boolean"
-  require_endpoint_verification: "java.lang.Boolean"
-  accepted_protocols: "java.util.List"
-  keystore_password: "java.lang.String"
-  protocol: "java.lang.String"
-  require_client_auth: "java.lang.Boolean"
-  internode_encryption: 
"org.apache.cassandra.config.EncryptionOptions.ServerEncryptionOptions.InternodeEncryption"
-  truststore_password: "java.lang.String"
-  keystore: "java.lang.String"
-  truststore: "java.lang.String"
-  algorithm: "java.lang.String"
-max_hints_delivery_threads: "java.lang.Integer"
-native_transport_idle_timeout_in_ms: "java.lang.Long"
-saved_caches_directory: "java.lang.String"
-max_concurrent_automatic_sstable_upgrades: "java.lang.Integer"
-file_cache_round_up: "java.lang.Boolean"
-streaming_keep_alive_period_in_secs: "java.lang.Integer"
-enable_sasi_indexes: "java.lang.Boolean"
-gc_log_threshold_in_ms: "java.lang.Integer"
-snapshot_on_duplicate_row_detection: "java.lang.Boolean"
-commitlog_sync_group_window_in_ms: "java.lang.Double"
-internode_compression: 
"org.apache.cassandra.config.Config.InternodeCompression"
-otc_coalescing_window_us: "java.lang.Integer"
-credentials_cache_max_entries: "java.lang.Integer"
-periodic_commitlog_sync_lag_block_in_ms: "java.lang.Integer"
-enable_materialized_views: "java.lang.Boolean"
-roles_validity_in_ms: "java.lang.Integer"
-networking_cache_size_in_mb: "java.lang.Integer"
-native_transport_port: "java.lang.Integer"
-permissions_cache_max_entries: "java.lang.Integer"
-stream_throughput_outbound_megabits_per_sec: "java.lang.Integer"
-hints_compression:
-  class_name: "java.lang.String"
-  parameters: "java.util.Map"
-commitlog_periodic_queue_size: "java.lang.Integer"
-force_new_prepared_statement_behaviour: "java.lang.Boolean"
-back_pressure_enabled: "java.lang.Boolean"
-cdc_free_space_check_interval_ms: "java.lang.Integer"
-transparent_data_encryption_options:
-  cipher: "java.lang.String"
-  chunk_length_kb: "java.lang.Integer"
-  iv_length: "java.lang.Integer"
-  key_alias: "java.lang.String"
-  key_provider:
-    class_name: "java.lang.String"
-    parameters: "java.util.Map"
-  enabled: "java.lang.Boolean"
-initial_range_tombstone_list_allocation_size: "java.lang.Integer"
-partitioner: "java.lang.String"
-listen_interface: "java.lang.String"
-user_defined_function_fail_timeout: "java.lang.Long"
-file_cache_size_in_mb: "java.lang.Integer"
-inter_dc_tcp_nodelay: "java.lang.Boolean"
-internode_authenticator: "java.lang.String"
-key_cache_keys_to_save: "java.lang.Integer"
-commitlog_segment_size_in_mb: "java.lang.Integer"
-replica_filtering_protection:
-  cached_rows_fail_threshold: "java.lang.Integer"
-  cached_rows_warn_threshold: "java.lang.Integer"
-internode_tcp_connect_timeout_in_ms: "java.lang.Integer"
-native_transport_max_concurrent_requests_in_bytes_per_ip: "java.lang.Long"
-range_tombstone_list_growth_factor: "java.lang.Double"
-native_transport_max_concurrent_connections: "java.lang.Long"
-memtable_cleanup_threshold: "java.lang.Float"
-concurrent_reads: "java.lang.Integer"
-streaming_connections_per_host: "java.lang.Integer"
-truncate_request_timeout_in_ms: "java.lang.Long"
-auto_snapshot: "java.lang.Boolean"
-native_transport_receive_queue_capacity_in_bytes: "java.lang.Integer"
-internode_streaming_tcp_user_timeout_in_ms: "java.lang.Integer"
-batch_size_fail_threshold_in_kb: "java.lang.Integer"
-compaction_throughput_mb_per_sec: "java.lang.Integer"
-max_hints_file_size_in_mb: "java.lang.Integer"
-endpoint_snitch: "java.lang.String"
diff --git 
a/test/distributed/org/apache/cassandra/distributed/impl/InstanceConfig.java 
b/test/distributed/org/apache/cassandra/distributed/impl/InstanceConfig.java
index 5d88cc0102..01a594fa60 100644
--- a/test/distributed/org/apache/cassandra/distributed/impl/InstanceConfig.java
+++ b/test/distributed/org/apache/cassandra/distributed/impl/InstanceConfig.java
@@ -373,12 +373,6 @@ public class InstanceConfig implements IInstanceConfig
         config.remove("node_proximity");
         config.set("endpoint_snitch", 
"org.apache.cassandra.distributed.impl.DistributedTestSnitch");
 
-        // 4.0+ has seed_provider without port
-        if (version.compareTo(UpgradeTestBase.v40) >= 0)
-            return config;
-
-        config.set("seed_provider", new 
ParameterizedClass(SimpleSeedProvider.class.getName(),
-                                                           
Collections.singletonMap("seeds", "127.0.0.1")));
         return config;
     }
 
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/BatchUpgradeTest.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/BatchUpgradeTest.java
index c62b28b8ac..7976f3f133 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/BatchUpgradeTest.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/BatchUpgradeTest.java
@@ -35,7 +35,7 @@ public class BatchUpgradeTest extends UpgradeTestBase
         .nodes(2)
         .nodesToUpgrade(2)
         .withConfig(c -> c.with(Feature.GOSSIP))
-        .upgradesToCurrentFrom(v40).setup((cluster) -> {
+        .upgradesToCurrentFrom(v41).setup((cluster) -> {
             cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".users (" +
                                  "userid uuid PRIMARY KEY," +
                                  "firstname ascii," +
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageColumnDeleteTest.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageColumnDeleteTest.java
index 520d077082..50b9d3ae8f 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageColumnDeleteTest.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageColumnDeleteTest.java
@@ -35,7 +35,7 @@ public class CompactStorageColumnDeleteTest extends 
UpgradeTestBase
         .nodes(2)
         .nodesToUpgrade(2)
         .withConfig(c -> c.with(Feature.GOSSIP))
-        .upgradesToCurrentFrom(v40)
+        .upgradesToCurrentFrom(v41)
         .setup((cluster) -> {
             cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".tbl (pk int, 
ck int, v int, PRIMARY KEY (pk, ck)) WITH COMPACT STORAGE");
         })
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageHiddenColumnTest.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageHiddenColumnTest.java
index 91b2b8137b..6f23b4a419 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageHiddenColumnTest.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageHiddenColumnTest.java
@@ -35,7 +35,7 @@ public class CompactStorageHiddenColumnTest extends 
UpgradeTestBase
         .nodes(2)
         .nodesToUpgrade(2)
         .withConfig(c -> c.with(Feature.GOSSIP))
-        .upgradesToCurrentFrom(v40)
+        .upgradesToCurrentFrom(v41)
         .setup((cluster) -> {
             cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".tbl (pk int, 
ck int, PRIMARY KEY (pk, ck)) WITH COMPACT STORAGE");
         })
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageImplicitNullInClusteringTest.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageImplicitNullInClusteringTest.java
index 09f3976925..c4859b5b19 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageImplicitNullInClusteringTest.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStorageImplicitNullInClusteringTest.java
@@ -35,7 +35,7 @@ public class CompactStorageImplicitNullInClusteringTest 
extends UpgradeTestBase
         .nodes(2)
         .nodesToUpgrade(2)
         .withConfig(c -> c.with(Feature.GOSSIP))
-        .upgradesToCurrentFrom(v40)
+        .upgradesToCurrentFrom(v41)
         .setup((cluster) -> {
             cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".tbl (pk int, 
ck1 int, ck2 int, v int, PRIMARY KEY (pk, ck1, ck2)) WITH COMPACT STORAGE");
         })
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStoragePagingTest.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStoragePagingTest.java
index 9298631a8d..c64ae8a55e 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStoragePagingTest.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStoragePagingTest.java
@@ -35,7 +35,7 @@ public class CompactStoragePagingTest extends UpgradeTestBase
         .nodes(2)
         .nodesToUpgrade(2)
         .withConfig(c -> c.with(Feature.GOSSIP))
-        .upgradesToCurrentFrom(v40)
+        .upgradesToCurrentFrom(v41)
         .setup((cluster) -> {
             cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".tbl (pk int, 
ck int, v int, PRIMARY KEY (pk, ck)) WITH COMPACT STORAGE");
             for (int i = 1; i < 10; i++)
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStoragePagingWithProtocolV40Test.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStoragePagingWithProtocolV40Test.java
deleted file mode 100644
index d245d9fdb7..0000000000
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/CompactStoragePagingWithProtocolV40Test.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.cassandra.distributed.upgrade;
-
-import com.vdurmont.semver4j.Semver;
-
-/**
- * {@link CompactStoragePagingWithProtocolTester} for v40 -> CURRENT upgrade 
path.
- */
-public class CompactStoragePagingWithProtocolV40Test extends 
CompactStoragePagingWithProtocolTester
-{
-    @Override
-    protected Semver initialVersion()
-    {
-        return v40;
-    }
-}
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/CompactionHistorySystemTableUpgradeTest.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactionHistorySystemTableUpgradeTest.java
index 5f310279b3..2f626947b2 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/CompactionHistorySystemTableUpgradeTest.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/CompactionHistorySystemTableUpgradeTest.java
@@ -40,8 +40,6 @@ public class CompactionHistorySystemTableUpgradeTest extends 
UpgradeTestBase
         new TestCase()
         .nodes(1)
         .nodesToUpgrade(1)
-        // all upgrades from v40 to current, excluding v50 -> v51
-        .singleUpgradeToCurrentFrom(v40)
         .singleUpgradeToCurrentFrom(v41)
         .withConfig(c -> c.with(Feature.GOSSIP))
         .setup((cluster) -> {
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/ConfigCompatibilityTestGenerate.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/ConfigCompatibilityTestGenerate.java
index 23a3f21669..ed2ac4adf2 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/ConfigCompatibilityTestGenerate.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/ConfigCompatibilityTestGenerate.java
@@ -34,7 +34,6 @@ import org.apache.cassandra.distributed.shared.Versions;
 import static org.apache.cassandra.config.ConfigCompatibilityTest.TEST_DIR;
 import static org.apache.cassandra.config.ConfigCompatibilityTest.dump;
 import static org.apache.cassandra.config.ConfigCompatibilityTest.toTree;
-import static org.apache.cassandra.distributed.upgrade.UpgradeTestBase.v40;
 import static org.apache.cassandra.distributed.upgrade.UpgradeTestBase.v41;
 import static org.apache.cassandra.distributed.upgrade.UpgradeTestBase.v50;
 
@@ -47,7 +46,7 @@ public class ConfigCompatibilityTestGenerate
     {
         ICluster.setup();
         Versions versions = Versions.find();
-        for (Semver version : Arrays.asList(v40, v41, v50))
+        for (Semver version : Arrays.asList(v41, v50))
         {
             File path = new File(TEST_DIR, "version=" + version + ".yml");
             path.getParentFile().mkdirs();
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeIndexV40Test.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeIndexV40Test.java
deleted file mode 100644
index bd4488b928..0000000000
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeIndexV40Test.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.cassandra.distributed.upgrade;
-
-import org.junit.Test;
-
-/**
- * {@link MixedModeIndexTestBase} for upgrades from 4.0.
- */
-public class MixedModeIndexV40Test extends MixedModeIndexTestBase
-{
-    @Test
-    public void testIndex() throws Throwable
-    {
-        testIndex(v40);
-    }
-}
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeMessageForwardTest.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeMessageForwardTest.java
index 766bbef542..d1386eec34 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeMessageForwardTest.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeMessageForwardTest.java
@@ -104,7 +104,7 @@ public class MixedModeMessageForwardTest extends 
UpgradeTestBase
         .withConfig(c -> c.with(Feature.GOSSIP, Feature.NETWORK))
         .withBuilder(b -> b.withRacks(numDCs, 1, nodesPerDc))
         .nodes(numDCs * nodesPerDc)
-        .upgradesToCurrentFrom(v40)
+        .upgradesToCurrentFrom(v41)
         .setup(cluster -> {
             cluster.schemaChange("ALTER KEYSPACE " + KEYSPACE +
                 " WITH replication = {'class': 'NetworkTopologyStrategy', " + 
ntsArgs + " };");
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModePaxosTTLTest.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModePaxosTTLTest.java
index 63d2497ad8..f78d9b3824 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModePaxosTTLTest.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModePaxosTTLTest.java
@@ -33,22 +33,12 @@ public class MixedModePaxosTTLTest extends UpgradeTestBase
     /**
      * Tests the mixed mode paxos loop bug in CASSANDRA-20514
      *
-     * CEP-14 changed the ttl behavior of legacy paxos state to expire based 
off the ballot time of the operation being
-     * persisted, not the time a commit is persisted. This eliminated the race 
addressed by CASSANDRA-12043, and so the
-     * check it added to the most recent commit prepare logic was removed.
-     *
-     * When operating in mixed mode though, this can still be a problem. If a 
4.1 or higher node is coordinating a paxos
-     * operation with 2 or more replicas on 4.0 or lower, this race becomes a 
problem again. You need 3 things to make
-     * this an infinite loop
-     * 1. a 4.1 node coordinating a paxos operation with 2x 4.0 replicas
-     * 2. replica A) a 4.0 node returns a most recent commit for a ballot 
that's could have been ttld
-     * 3. replica B) a 4.0 node has ttl'd that mrc AND converted the ttld 
cells into tombstones
-     *
-     * The 4.1 coordinator receives the mrc from replica A, but since it no 
longer disregards missing most recent commits
-     * past the ttl window, it sends the "missing" commit to replica B. Since 
replica B now has a tombstone for that mrc,
-     * and tombstones win when reconciled with live cells, even ones with 
ttls, the commit is a noop and it continues
-     * to report nothing for its mrc value when the coordinator restarts the 
prepare phase. This loops until the query
-     * times out.
+     * Regression test for mixed-mode paxos with ttl'd legacy paxos state. 
CEP-14 made legacy paxos
+     * state expire off the ballot time rather than the commit-persist time, 
which eliminated the race
+     * addressed by CASSANDRA-12043 and let that check be removed. 
Historically, a post-CEP-14
+     * coordinator paired with pre-CEP-14 replicas could hit an infinite 
prepare loop when a tombstoned
+     * most-recent-commit on one replica shadowed the coordinator's resend. 
This test keeps the
+     * scenario covered for current upgrade paths.
      */
     @Test
     public void legacyExpiredStateTest() throws Throwable
@@ -61,7 +51,7 @@ public class MixedModePaxosTTLTest extends UpgradeTestBase
         .withConfig(c -> c.with(Feature.GOSSIP, 
Feature.NETWORK).set("cas_contention_timeout", "500ms"))
         .nodes(3)
         .nodesToUpgrade(1)
-        .upgradesToCurrentFrom(v40)
+        .upgradesToCurrentFrom(v41)
         .setup(cluster -> {
             cluster.schemaChange(format("CREATE KEYSPACE %s WITH 
REPLICATION={'class': 'SimpleStrategy', 'replication_factor': '2'}", keyspace));
             cluster.schemaChange(format("CREATE TABLE %s.%s (k int primary 
key, v int) " +
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModePaxosTestBase.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModePaxosTestBase.java
index e238e8c00c..827d3ac3c0 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModePaxosTestBase.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModePaxosTestBase.java
@@ -52,24 +52,12 @@ public abstract class MixedModePaxosTestBase extends 
UpgradeTestBase
     /**
      * Tests the mixed mode loop bug in CASSANDRA-20493
      * <p>
-     * Paxos uses a 'zero' ballot in place of null when it doesn't find a 
ballot in system.paxos. CEP-14 changed the lsb
-     * of the zero ballot uuid from the TimeUUID.MIN_CLOCK_SEQ_AND_NODE value 
of 0x8080808080808080 (-9187201950435737472)
-     * to 0. It also removed the check added in CASSANDRA-12043, since the way 
it read and filtered ttld paxos data had
-     * been improved.
-     * <p>
-     * In mixed mode with a 4.0 or lower replica and a 4.1 and higher paxos 
coordinator, and in the absence of existing
-     * paxos metadata for the key being queried, the prepare phase will 
interpret the mismatched ‘zero’ ballots as the
-     * 4.0 and lower nodes having missed the most recent commit and will 
attempt to update them using the 4.1 zero ballot
-     * and empty partition update.
-     * <p>
-     * In cases where this is the first paxos operation on a key, or the 
previously ttl'd paxos data on disk had been purged,
-     * this would just add a retry step as it updated the 4.0 and lower hosts 
with its zero ballot.
-     * <p>
-     * On nodes where there was ttl'd paxos data though, the ttl'd data on 
disk would shadow this update. This would
-     * happen because paxos commits are recorded to system.paxos using the 
ballot timestamp as the write timestamp, so
-     * the more recent write updating the commit with timestamp 0 would be 
shadowed by the now ttl’d write with a ‘real’
-     * timestamp. When the prepare phase restarted it would again get the old 
zero value and cause the prepare phase to
-     * get into an infinite loop.
+     * Regression test for mixed-mode paxos with TTL'd paxos data on disk. 
CEP-14 changed the lsb of the
+     * zero ballot uuid from TimeUUID.MIN_CLOCK_SEQ_AND_NODE 
(0x8080808080808080) to 0 and removed the
+     * CASSANDRA-12043 check; the historical concern was that pre-CEP-14 
replicas paired with newer
+     * coordinators could get stuck in an infinite prepare loop when ttl'd 
system.paxos data shadowed
+     * the coordinator's zero-ballot update. This test keeps the scenario 
covered for current upgrade
+     * paths.
      */
     private void ttldPaxosStateTest(boolean legacyAware, boolean upgradeAware) 
throws Throwable
     {
@@ -81,7 +69,7 @@ public abstract class MixedModePaxosTestBase extends 
UpgradeTestBase
         .withConfig(c -> c.with(Feature.GOSSIP, Feature.NETWORK))
         .nodes(2)
         .nodesToUpgrade(1)
-        .upgradesToCurrentFrom(v40)
+        .upgradesToCurrentFrom(v41)
         .setup(cluster -> {
             cluster.schemaChange(format("CREATE TABLE %s.%s (k int primary 
key, v int) " +
                                         "WITH gc_grace_seconds=%s", keyspace, 
table, gcGrace));
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeRepairTest.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeRepairTest.java
index a886d04764..4db35366a3 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeRepairTest.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeRepairTest.java
@@ -44,9 +44,7 @@ public class MixedModeRepairTest extends UpgradeTestBase
     public static final String SELECT = withKeyspace("SELECT * FROM %s.t WHERE 
k=?");
 
     /**
-     * Test that repairs fail during a major upgrade. If the repaired node is 
>= 4.0 thanks to CASSANDRA-13944 there
-     * will be an informative message. Otherwise, if the repaired node is 
below 4.0, there won't be such an informative
-     * message and the repair will take very long to timeout.
+     * Test that repairs fail during a major upgrade with an informative 
message (CASSANDRA-13944).
      */
     @Test
     public void testRepairDuringMajorUpgrade() throws Throwable
@@ -54,7 +52,7 @@ public class MixedModeRepairTest extends UpgradeTestBase
         new UpgradeTestBase.TestCase()
         .nodes(2)
         .nodesToUpgrade(UPGRADED_NODE)
-        .upgradesToCurrentFrom(v40)
+        .upgradesToCurrentFrom(v41)
         .withConfig(config -> config.with(NETWORK, 
GOSSIP).set("storage_compatibility_mode", "CASSANDRA_4"))
         .setup(cluster -> {
             cluster.schemaChange(CREATE_TABLE);
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeTTLOverflowUpgradeTestBase.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeTTLOverflowUpgradeTestBase.java
index 618f3ebb2e..e93a1e18d5 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeTTLOverflowUpgradeTestBase.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeTTLOverflowUpgradeTestBase.java
@@ -111,8 +111,6 @@ public abstract class MixedModeTTLOverflowUpgradeTestBase 
extends UpgradeTestBas
         new TestCase()
                 .nodes(2)
                 .nodesToUpgradeOrdered(1, 2)
-                // all upgrades from v40 to current, excluding v50 -> v51
-                .singleUpgradeToCurrentFrom(v40)
                 .singleUpgradeToCurrentFrom(v41)
                 .withConfig(c -> 
c.with(Feature.GOSSIP).set("storage_compatibility_mode", "CASSANDRA_4"))
                 .setup(cluster -> {
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeWritetimeOrTTLTest.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeWritetimeOrTTLTest.java
index 6674335bd5..a6d9e9ff4c 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeWritetimeOrTTLTest.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeWritetimeOrTTLTest.java
@@ -53,8 +53,6 @@ public class MixedModeWritetimeOrTTLTest extends 
UpgradeTestBase
         new TestCase()
         .nodes(2)
         .nodesToUpgradeOrdered(1, 2)
-        // all upgrades from v40 to current, excluding v50 -> v51
-        .singleUpgradeToCurrentFrom(v40)
         .singleUpgradeToCurrentFrom(v41)
         .withConfig(c -> c.with(Feature.GOSSIP))
         .setup(cluster -> {
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/Pre40MessageFilterTest.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/Pre40MessageFilterTest.java
deleted file mode 100644
index 4aba07b5fb..0000000000
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/Pre40MessageFilterTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.cassandra.distributed.upgrade;
-
-import java.util.function.Consumer;
-
-import org.junit.Test;
-
-import org.apache.cassandra.distributed.api.ConsistencyLevel;
-import org.apache.cassandra.distributed.api.Feature;
-import org.apache.cassandra.distributed.api.IInstanceConfig;
-
-public class Pre40MessageFilterTest extends UpgradeTestBase
-{
-    public void reserializePre40RequestPaxosTest(Consumer<IInstanceConfig> 
configConsumer) throws Throwable
-    {
-        new UpgradeTestBase.TestCase()
-        .nodes(2)
-        .withConfig(configConsumer)
-        .nodesToUpgrade(1)
-        .upgradesToCurrentFrom(v40)
-        .setup((cluster) -> {
-            cluster.filters().outbound().allVerbs().messagesMatching((f,t,m) 
-> false).drop();
-            cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".tbl (pk int, 
ck int, v int, PRIMARY KEY (pk, ck))");
-            cluster.coordinator(1).execute("INSERT INTO " + KEYSPACE + 
".tbl(pk,ck,v) VALUES (1, 1, 1) IF NOT EXISTS",
-                                           ConsistencyLevel.QUORUM,
-                                           1);
-        })
-        .runAfterNodeUpgrade((cluster, node) -> {
-            cluster.coordinator(node).execute("UPDATE " + KEYSPACE + ".tbl SET 
v = ? WHERE pk = ? AND ck = ?  IF v = ?",
-                                              ConsistencyLevel.QUORUM,
-                                              2, 1, 1, 1);
-        }).run();
-    }
-
-    @Test
-    public void reserializePre40RequestPaxosWithoutNetworkTest() throws 
Throwable
-    {
-        reserializePre40RequestPaxosTest(config -> 
config.with(Feature.GOSSIP));
-    }
-
-    @Test
-    public void reserializePre40RequestPaxosWithNetworkTest() throws Throwable
-    {
-        reserializePre40RequestPaxosTest(config -> 
config.with(Feature.NETWORK, Feature.GOSSIP));
-    }
-}
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/RepairRequestTimeoutUpgradeTest.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/RepairRequestTimeoutUpgradeTest.java
deleted file mode 100644
index 4929d8dea6..0000000000
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/RepairRequestTimeoutUpgradeTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.cassandra.distributed.upgrade;
-
-import org.junit.Test;
-
-import org.apache.cassandra.distributed.api.Feature;
-
-import static org.apache.cassandra.net.Verb.VALIDATION_REQ;
-
-public class RepairRequestTimeoutUpgradeTest extends UpgradeTestBase
-{
-    @Test
-    public void simpleUpgradeWithNetworkAndGossipTest() throws Throwable
-    {
-        new TestCase()
-        .nodes(2)
-        .nodesToUpgrade(1)
-        .withConfig((cfg) -> cfg.with(Feature.NETWORK, 
Feature.GOSSIP).set("repair_request_timeout_in_ms", 1000))
-        .upgrades(v40, v41)
-        .setup((cluster) -> {
-            cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".tbl (pk int, 
ck int, v int, PRIMARY KEY (pk, ck))");
-            for (int i = 0; i < 10; i++)
-                cluster.get(i % 2 + 1).executeInternal("INSERT INTO " + 
KEYSPACE + ".tbl (pk, ck, v) VALUES ("+i+", 1, 1)");
-            cluster.forEach(i -> i.flush(KEYSPACE));
-        })
-        .runAfterNodeUpgrade((cluster, node) -> {
-            cluster.filters().verbs(VALIDATION_REQ.id).drop();
-            cluster.get(2).nodetoolResult("repair", KEYSPACE, 
"-full").asserts().failure();
-            cluster.filters().reset();
-            for (int i = 10; i < 20; i++)
-                cluster.get(i % 2 + 1).executeInternal("INSERT INTO " + 
KEYSPACE + ".tbl (pk, ck, v) VALUES ("+i+", 1, 1)");
-            cluster.forEach(i -> i.flush(KEYSPACE));
-            cluster.get(1).nodetoolResult("repair", KEYSPACE, 
"-full").asserts().success();
-        }).run();
-    }
-}
diff --git 
a/test/distributed/org/apache/cassandra/distributed/upgrade/UpgradeTestBase.java
 
b/test/distributed/org/apache/cassandra/distributed/upgrade/UpgradeTestBase.java
index 4c958998e7..b9eefc39ca 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/upgrade/UpgradeTestBase.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/upgrade/UpgradeTestBase.java
@@ -95,7 +95,6 @@ public class UpgradeTestBase extends DistributedTestBase
         public void run(UpgradeableCluster cluster, int node) throws Throwable;
     }
 
-    public static final Semver v40 = new Semver("4.0-alpha1", 
SemverType.LOOSE);
     public static final Semver v41 = new Semver("4.1-alpha1", 
SemverType.LOOSE);
     public static final Semver v42 = new Semver("4.2-alpha1", 
SemverType.LOOSE);
     public static final Semver v50 = new Semver("5.0-alpha1", 
SemverType.LOOSE);
@@ -103,13 +102,6 @@ public class UpgradeTestBase extends DistributedTestBase
     public static final Semver v70 = new Semver("7.0-alpha1", 
SemverType.LOOSE);
 
     protected static final SimpleGraph<Semver> SUPPORTED_UPGRADE_PATHS = new 
SimpleGraph.Builder<Semver>()
-                                                                         // 40 
edges are here temporarily
-                                                                         // 
until we resolve CASSANDRA-21324
-                                                                         
.addEdge(v40, v41)
-                                                                         
.addEdge(v40, v50)
-                                                                         
.addEdge(v40, v60)
-                                                                         
.addEdge(v40, v70)
-                                                                         /////
                                                                          
.addEdge(v41, v50)
                                                                          
.addEdge(v41, v60)
                                                                          
.addEdge(v41, v70)
diff --git a/test/unit/org/apache/cassandra/config/ConfigCompatibilityTest.java 
b/test/unit/org/apache/cassandra/config/ConfigCompatibilityTest.java
index 5b0010eef8..a060765a87 100644
--- a/test/unit/org/apache/cassandra/config/ConfigCompatibilityTest.java
+++ b/test/unit/org/apache/cassandra/config/ConfigCompatibilityTest.java
@@ -143,15 +143,6 @@ public class ConfigCompatibilityTest
         diff(TEST_DIR + "/version=3.11.0.yml", ALLOW_LIST, EXPECTED_FOR_50);
     }
 
-    @Test
-    public void diff_4_0() throws IOException
-    {
-        diff(TEST_DIR + "/version=4.0-alpha1.yml", 
ImmutableSet.<String>builder()
-                                                               .addAll(WINDOWS)
-                                                               
.addAll(ALLOW_LIST)
-                                                               .build(), 
EXPECTED_FOR_50);
-    }
-
     @Test
     public void diff_4_1() throws IOException
     {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to