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

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

commit 0f9bb246cd1b2a32cad947f26b63106ba858748b
Merge: 725e4ba3eb 3e2e4c3ea1
Author: Bereng <berenguerbl...@gmail.com>
AuthorDate: Mon Apr 14 09:22:11 2025 +0200

    Merge branch 'cassandra-4.1' into cassandra-5.0
    
    * cassandra-4.1:
      CASSANDRA-19633 Replaced node is stuck in a loop calculating ranges

 .../config/CassandraRelevantProperties.java        |  7 ++
 .../org/apache/cassandra/dht/RangeStreamer.java    |  9 ++-
 .../org/apache/cassandra/dht/BootStrapperTest.java | 86 ++++++++++++++++++----
 3 files changed, 84 insertions(+), 18 deletions(-)

diff --cc src/java/org/apache/cassandra/config/CassandraRelevantProperties.java
index c25b41e5fa,79962e774c..e1e080a0a4
--- a/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java
+++ b/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java
@@@ -341,282 -203,159 +341,289 @@@ public enum CassandraRelevantPropertie
       * will set it automatically to {@link 
CassandraRelevantProperties#LOG_DIR} + "/audit".
       */
      LOG_DIR_AUDIT("cassandra.logdir.audit"),
 -
 -    CONSISTENT_DIRECTORY_LISTINGS("cassandra.consistent_directory_listings", 
"false"),
 -    CLOCK_GLOBAL("cassandra.clock", null),
 -    CLOCK_MONOTONIC_APPROX("cassandra.monotonic_clock.approx", null),
 -    CLOCK_MONOTONIC_PRECISE("cassandra.monotonic_clock.precise", null),
 -
 -    /*
 -     * Whether {@link org.apache.cassandra.db.ConsistencyLevel#NODE_LOCAL} 
should be allowed.
 -     */
 -    ENABLE_NODELOCAL_QUERIES("cassandra.enable_nodelocal_queries", "false"),
 -
 -    //cassandra properties (without the "cassandra." prefix)
 -
 -    /**
 -     * The cassandra-foreground option will tell CassandraDaemon whether
 -     * to close stdout/stderr, but it's up to us not to background.
 -     * yes/null
 -     */
 -    CASSANDRA_FOREGROUND ("cassandra-foreground"),
 -
 -    DEFAULT_PROVIDE_OVERLAPPING_TOMBSTONES 
("default.provide.overlapping.tombstones"),
 -    ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION 
("org.apache.cassandra.disable_mbean_registration"),
 -
 -    /** This property indicates whether disable_mbean_registration is true */
 -    
IS_DISABLED_MBEAN_REGISTRATION("org.apache.cassandra.disable_mbean_registration"),
 -
 -    /** snapshots ttl cleanup period in seconds */
 -    
SNAPSHOT_CLEANUP_PERIOD_SECONDS("cassandra.snapshot.ttl_cleanup_period_seconds",
 "60"),
 -
 -    /** snapshots ttl cleanup initial delay in seconds */
 -    
SNAPSHOT_CLEANUP_INITIAL_DELAY_SECONDS("cassandra.snapshot.ttl_cleanup_initial_delay_seconds",
 "5"),
 -
 -    /** minimum allowed TTL for snapshots */
 -    
SNAPSHOT_MIN_ALLOWED_TTL_SECONDS("cassandra.snapshot.min_allowed_ttl_seconds", 
"60"),
 -
 +    /** Loosen the definition of "empty" for gossip state, for use during 
host replacements if things go awry */
 +    LOOSE_DEF_OF_EMPTY_ENABLED(Config.PROPERTY_PREFIX + 
"gossiper.loose_empty_enabled"),
 +    MAX_CONCURRENT_RANGE_REQUESTS("cassandra.max_concurrent_range_requests"),
 +    MAX_HINT_BUFFERS("cassandra.MAX_HINT_BUFFERS", "3"),
 +    MAX_LOCAL_PAUSE_IN_MS("cassandra.max_local_pause_in_ms", "5000"),
      /** what class to use for mbean registeration */
      MBEAN_REGISTRATION_CLASS("org.apache.cassandra.mbean_registration_class"),
 -
 -    /** This property indicates if the code is running under the in-jvm dtest 
framework */
 -    DTEST_IS_IN_JVM_DTEST("org.apache.cassandra.dtest.is_in_jvm_dtest"),
 -
 -    
BATCH_COMMIT_LOG_SYNC_INTERVAL("cassandra.batch_commitlog_sync_interval_millis",
 "1000"),
 -
 -    SYSTEM_AUTH_DEFAULT_RF("cassandra.system_auth.default_rf", "1"),
 -    SYSTEM_TRACES_DEFAULT_RF("cassandra.system_traces.default_rf", "2"),
 -    SYSTEM_DISTRIBUTED_DEFAULT_RF("cassandra.system_distributed.default_rf", 
"3"),
 -
 -    MEMTABLE_OVERHEAD_SIZE("cassandra.memtable.row_overhead_size", "-1"),
      
MEMTABLE_OVERHEAD_COMPUTE_STEPS("cassandra.memtable_row_overhead_computation_step",
 "100000"),
 +    MEMTABLE_OVERHEAD_SIZE("cassandra.memtable.row_overhead_size", "-1"),
 +    MEMTABLE_SHARD_COUNT("cassandra.memtable.shard.count"),
 +    MEMTABLE_TRIE_SIZE_LIMIT("cassandra.trie_size_limit_mb"),
      MIGRATION_DELAY("cassandra.migration_delay_ms", "60000"),
 -    /** Defines how often schema definitions are pulled from the other nodes 
*/
 -    SCHEMA_PULL_INTERVAL_MS("cassandra.schema_pull_interval_ms", "60000"),
 -
 +    /** Defines the maximum number of unique timed out queries that will be 
reported in the logs. Use a negative number to remove any limit. */
 +    MONITORING_MAX_OPERATIONS("cassandra.monitoring_max_operations", "50"),
 +    /** Defines the interval for reporting any operations that have timed 
out. */
 +    MONITORING_REPORT_INTERVAL_MS("cassandra.monitoring_report_interval_ms", 
"5000"),
 +    
MV_ALLOW_FILTERING_NONKEY_COLUMNS_UNSAFE("cassandra.mv.allow_filtering_nonkey_columns_unsafe"),
 +    
MV_ENABLE_COORDINATOR_BATCHLOG("cassandra.mv_enable_coordinator_batchlog"),
 +    /** mx4jaddress */
 +    MX4JADDRESS("mx4jaddress"),
 +    /** mx4jport */
 +    MX4JPORT("mx4jport"),
 +    
NANOTIMETOMILLIS_TIMESTAMP_UPDATE_INTERVAL("cassandra.NANOTIMETOMILLIS_TIMESTAMP_UPDATE_INTERVAL",
 "10000"),
 +    NATIVE_EPOLL_ENABLED("cassandra.native.epoll.enabled", "true"),
 +    /** This is the port used with RPC address for the native protocol to 
communicate with clients. Now that thrift RPC is no longer in use there is no 
RPC port. */
 +    NATIVE_TRANSPORT_PORT("cassandra.native_transport_port"),
 +    NEVER_PURGE_TOMBSTONES("cassandra.never_purge_tombstones"),
 +    
NIO_DATA_OUTPUT_STREAM_PLUS_BUFFER_SIZE("cassandra.nio_data_output_stream_plus_buffer_size",
 convertToString(32 * 1024)),
 +    
NODETOOL_JMX_NOTIFICATION_POLL_INTERVAL_SECONDS("cassandra.nodetool.jmx_notification_poll_interval_seconds",
 convertToString(TimeUnit.SECONDS.convert(5, TimeUnit.MINUTES))),
 +    /** If set, {@link org.apache.cassandra.net.MessagingService} is shutdown 
abrtuptly without waiting for anything.
 +     * This is an optimization used in unit tests becuase we never restart a 
node there. The only node is stopoped
 +     * when the JVM terminates. Therefore, we can use such optimization and 
not wait unnecessarily. */
 +    
NON_GRACEFUL_SHUTDOWN("cassandra.test.messagingService.nonGracefulShutdown"),
 +    /** for specific tests */
 +    /** This property indicates whether disable_mbean_registration is true */
 +    
ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION("org.apache.cassandra.disable_mbean_registration"),
 +    /** Operating system architecture. */
 +    OS_ARCH("os.arch"),
 +    /** Operating system name. */
 +    OS_NAME("os.name"),
 +    OTCP_LARGE_MESSAGE_THRESHOLD("cassandra.otcp_large_message_threshold", 
convertToString(1024 * 64)),
 +    /** Enabled/disable TCP_NODELAY for intradc connections. Defaults is 
enabled. */
 +    OTC_INTRADC_TCP_NODELAY("cassandra.otc_intradc_tcp_nodelay", "true"),
 +    OVERRIDE_DECOMMISSION("cassandra.override_decommission"),
 +    
PARENT_REPAIR_STATUS_CACHE_SIZE("cassandra.parent_repair_status_cache_size", 
"100000"),
 +    
PARENT_REPAIR_STATUS_EXPIRY_SECONDS("cassandra.parent_repair_status_expiry_seconds",
 convertToString(TimeUnit.SECONDS.convert(1, TimeUnit.DAYS))),
 +    PARTITIONER("cassandra.partitioner"),
 +    
PAXOS_CLEANUP_SESSION_TIMEOUT_SECONDS("cassandra.paxos_cleanup_session_timeout_seconds",
 convertToString(TimeUnit.HOURS.toSeconds(2))),
 +    
PAXOS_DISABLE_COORDINATOR_LOCKING("cassandra.paxos.disable_coordinator_locking"),
 +    
PAXOS_LOG_TTL_LINEARIZABILITY_VIOLATIONS("cassandra.paxos.log_ttl_linearizability_violations",
 "true"),
 +    PAXOS_MODERN_RELEASE("cassandra.paxos.modern_release", "4.1"),
 +    
PAXOS_REPAIR_ALLOW_MULTIPLE_PENDING_UNSAFE("cassandra.paxos_repair_allow_multiple_pending_unsafe"),
 +    
PAXOS_REPAIR_ON_TOPOLOGY_CHANGE_RETRIES("cassandra.paxos_repair_on_topology_change_retries",
 "10"),
 +    
PAXOS_REPAIR_ON_TOPOLOGY_CHANGE_RETRY_DELAY_SECONDS("cassandra.paxos_repair_on_topology_change_retry_delay_seconds",
 "10"),
      
PAXOS_REPAIR_RETRY_TIMEOUT_IN_MS("cassandra.paxos_repair_retry_timeout_millis", 
"60000"),
 +    PAXOS_USE_SELF_EXECUTION("cassandra.paxos.use_self_execution", "true"),
 +    
PRINT_HEAP_HISTOGRAM_ON_OUT_OF_MEMORY_ERROR("cassandra.printHeapHistogramOnOutOfMemoryError"),
 +    
READS_THRESHOLDS_COORDINATOR_DEFENSIVE_CHECKS_ENABLED("cassandra.reads.thresholds.coordinator.defensive_checks_enabled"),
 +    RELEASE_VERSION("cassandra.releaseVersion"),
 +    
REPAIR_CLEANUP_INTERVAL_SECONDS("cassandra.repair_cleanup_interval_seconds", 
convertToString(Ints.checkedCast(TimeUnit.MINUTES.toSeconds(10)))),
 +    REPAIR_DELETE_TIMEOUT_SECONDS("cassandra.repair_delete_timeout_seconds", 
convertToString(Ints.checkedCast(TimeUnit.DAYS.toSeconds(1)))),
 +    REPAIR_FAIL_TIMEOUT_SECONDS("cassandra.repair_fail_timeout_seconds", 
convertToString(Ints.checkedCast(TimeUnit.DAYS.toSeconds(1)))),
 +    
REPAIR_MUTATION_REPAIR_ROWS_PER_BATCH("cassandra.repair.mutation_repair_rows_per_batch",
 "100"),
 +    
REPAIR_STATUS_CHECK_TIMEOUT_SECONDS("cassandra.repair_status_check_timeout_seconds",
 convertToString(Ints.checkedCast(TimeUnit.HOURS.toSeconds(1)))),
 +    /**
 +     * When doing a host replacement its possible that the gossip state is 
"empty" meaning that the endpoint is known
 +     * but the current state isn't known.  If the host replacement is needed 
to repair this state, this property must
 +     * be true.
 +     */
 +    REPLACEMENT_ALLOW_EMPTY("cassandra.allow_empty_replace_address", "true"),
 +    REPLACE_ADDRESS("cassandra.replace_address"),
 +    REPLACE_ADDRESS_FIRST_BOOT("cassandra.replace_address_first_boot"),
 +    REPLACE_NODE("cassandra.replace_node"),
 +    REPLACE_TOKEN("cassandra.replace_token"),
 +    /**
 +     * Number of replicas required to store batchlog for atomicity, only 
accepts values of 1 or 2.
 +     */
 +    
REQUIRED_BATCHLOG_REPLICA_COUNT("cassandra.batchlog.required_replica_count", 
"2"),
 +    /**
 +     * Whether we reset any found data from previously run bootstraps.
 +     */
 +    RESET_BOOTSTRAP_PROGRESS("cassandra.reset_bootstrap_progress"),
 +    RING_DELAY("cassandra.ring_delay_ms"),
  
 -    /** If we should allow having duplicate keys in the config file, default 
to true for legacy reasons */
 -    ALLOW_DUPLICATE_CONFIG_KEYS("cassandra.allow_duplicate_config_keys", 
"true"),
 -    /** If we should allow having both new (post CASSANDRA-15234) and old 
config keys for the same config item in the yaml */
 -    ALLOW_NEW_OLD_CONFIG_KEYS("cassandra.allow_new_old_config_keys", "false"),
 -
 -    // startup checks properties
 -    LIBJEMALLOC("cassandra.libjemalloc"),
 -    @Deprecated // should be removed in favor of enable flag of relevant 
startup check (checkDatacenter)
 -    IGNORE_DC("cassandra.ignore_dc"),
 -    @Deprecated // should be removed in favor of enable flag of relevant 
startup check (checkRack)
 -    IGNORE_RACK("cassandra.ignore_rack"),
 -    @Deprecated // should be removed in favor of enable flag of relevant 
startup check (FileSystemOwnershipCheck)
 -    FILE_SYSTEM_CHECK_ENABLE("cassandra.enable_fs_ownership_check"),
 -    @Deprecated // should be removed in favor of flags in relevant startup 
check (FileSystemOwnershipCheck)
 -    FILE_SYSTEM_CHECK_OWNERSHIP_FILENAME("cassandra.fs_ownership_filename", 
FileSystemOwnershipCheck.DEFAULT_FS_OWNERSHIP_FILENAME),
 -    @Deprecated // should be removed in favor of flags in relevant startup 
check (FileSystemOwnershipCheck)
 -    
FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN(FileSystemOwnershipCheck.FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN),
 -    // default heartbeating period is 1 minute
 -    
CHECK_DATA_RESURRECTION_HEARTBEAT_PERIOD("check_data_resurrection_heartbeat_period_milli",
 "60000"),
 -
 -    // defaults to false for 4.1 but plan to switch to true in a later release
 -    // the thinking is that environments may not work right off the bat so 
safer to add this feature disabled by default
 -    
CONFIG_ALLOW_SYSTEM_PROPERTIES("cassandra.config.allow_system_properties", 
"false"),
 +    // SAI specific properties
  
 -    // properties for debugging simulator ASM output
 -    TEST_SIMULATOR_PRINT_ASM("cassandra.test.simulator.print_asm", "none"),
 -    
TEST_SIMULATOR_PRINT_ASM_TYPES("cassandra.test.simulator.print_asm_types", ""),
 -    TEST_SIMULATOR_LIVENESS_CHECK("cassandra.test.simulator.livenesscheck", 
"true"),
 -    TEST_SIMULATOR_DEBUG("cassandra.test.simulator.debug", "false"),
 -    
TEST_SIMULATOR_DETERMINISM_CHECK("cassandra.test.simulator.determinismcheck", 
"none"),
 -    TEST_JVM_DTEST_DISABLE_SSL("cassandra.test.disable_ssl", "false"),
 +    /** Controls the maximum number of index query intersections that will 
take part in a query */
 +    SAI_INTERSECTION_CLAUSE_LIMIT("cassandra.sai.intersection_clause_limit", 
"2"),
 +    /** Latest version to be used for SAI index writing */
 +    SAI_LATEST_VERSION("cassandra.sai.latest_version", "aa"),
  
 -    // determinism properties for testing
 -    
DETERMINISM_SSTABLE_COMPRESSION_DEFAULT("cassandra.sstable_compression_default",
 "true"),
 -    
DETERMINISM_CONSISTENT_DIRECTORY_LISTINGS("cassandra.consistent_directory_listings",
 "false"),
 -    DETERMINISM_UNSAFE_UUID_NODE("cassandra.unsafe.deterministicuuidnode", 
"false"),
 -    
FAILURE_LOGGING_INTERVAL_SECONDS("cassandra.request_failure_log_interval_seconds",
 "60"),
 +    /** Minimum number of reachable leaves for a given node to be eligible 
for an auxiliary posting list */
 +    SAI_MINIMUM_POSTINGS_LEAVES("cassandra.sai.minimum_postings_leaves", 
"64"),
  
 -    // properties to disable certain behaviours for testing
 -    
DISABLE_GOSSIP_ENDPOINT_REMOVAL("cassandra.gossip.disable_endpoint_removal"),
 -    IGNORE_MISSING_NATIVE_FILE_HINTS("cassandra.require_native_file_hints", 
"false"),
 -    DISABLE_SSTABLE_ACTIVITY_TRACKING("cassandra.sstable_activity_tracking", 
"true"),
 -    TEST_IGNORE_SIGAR("cassandra.test.ignore_sigar", "false"),
 -    PAXOS_EXECUTE_ON_SELF("cassandra.paxos.use_self_execution", "true"),
 +    /**
 +     * Skip, or the sampling interval, for selecting a balanced tree level 
that is eligible for an auxiliary posting list.
 +     * Sampling starts from 0, but balanced tree root node is at level 1. For 
skip = 4, eligible levels are 4, 8, 12, etc. (no
 +     * level 0, because there is no node at level 0).
 +     */
 +    SAI_POSTINGS_SKIP("cassandra.sai.postings_skip", "3"),
  
 -    /** property for the rate of the scheduled task that monitors disk usage 
*/
 -    
DISK_USAGE_MONITOR_INTERVAL_MS("cassandra.disk_usage.monitor_interval_ms", 
Long.toString(TimeUnit.SECONDS.toMillis(30))),
 +    /**
 +     * Used to determine the block size and block mask for the clustering 
sorted terms.
 +     */
 +    
SAI_SORTED_TERMS_CLUSTERING_BLOCK_SHIFT("cassandra.sai.sorted_terms_clustering_block_shift",
 "4"),
  
 -    /** property for the interval on which the repeated client warnings and 
diagnostic events about disk usage are ignored */
 -    DISK_USAGE_NOTIFY_INTERVAL_MS("cassandra.disk_usage.notify_interval_ms", 
Long.toString(TimeUnit.MINUTES.toMillis(30))),
 +    /**
 +     * Used to determine the block size and block mask for the partition 
sorted terms.
 +     */
 +    
SAI_SORTED_TERMS_PARTITION_BLOCK_SHIFT("cassandra.sai.sorted_terms_partition_block_shift",
 "4"),
  
 -    // for specific tests
 -    
ORG_APACHE_CASSANDRA_CONF_CASSANDRA_RELEVANT_PROPERTIES_TEST("org.apache.cassandra.conf.CassandraRelevantPropertiesTest"),
 -    
ORG_APACHE_CASSANDRA_DB_VIRTUAL_SYSTEM_PROPERTIES_TABLE_TEST("org.apache.cassandra.db.virtual.SystemPropertiesTableTest"),
 +    
SAI_TEST_BALANCED_TREE_DEBUG_ENABLED("cassandra.sai.test.balanced_tree_debug_enabled",
 "false"),
 +    SAI_TEST_DISABLE_TIMEOUT("cassandra.sai.test.timeout_disabled", "false"),
  
 -    /** Used when running in Client mode and the system and schema keyspaces 
need to be initialized outside of their normal initialization path **/
 -    FORCE_LOAD_LOCAL_KEYSPACES("cassandra.schema.force_load_local_keyspaces"),
 +    /** Whether to allow the user to specify custom options to the hnsw index 
*/
 +    
SAI_VECTOR_ALLOW_CUSTOM_PARAMETERS("cassandra.sai.vector.allow_custom_parameters",
 "false"),
  
 -    /** When enabled, recursive directory deletion will be executed using a 
unix command `rm -rf` instead of traversing
 -     * and removing individual files. This is now used only tests, but 
eventually we will make it true by default.*/
 -    USE_NIX_RECURSIVE_DELETE("cassandra.use_nix_recursive_delete"),
 -
 -    /** If set, {@link org.apache.cassandra.net.MessagingService} is shutdown 
abrtuptly without waiting for anything.
 -     * This is an optimization used in unit tests becuase we never restart a 
node there. The only node is stopoped
 -     * when the JVM terminates. Therefore, we can use such optimization and 
not wait unnecessarily. */
 -    
NON_GRACEFUL_SHUTDOWN("cassandra.test.messagingService.nonGracefulShutdown"),
 -
 -    /** Flush changes of {@link org.apache.cassandra.schema.SchemaKeyspace} 
after each schema modification. In production,
 -     * we always do that. However, tests which do not restart nodes may 
disable this functionality in order to run
 -     * faster. Note that this is disabled for unit tests but if an individual 
test requires schema to be flushed, it
 -     * can be also done manually for that particular case: {@code 
flush(SchemaConstants.SCHEMA_KEYSPACE_NAME);}. */
 -    FLUSH_LOCAL_SCHEMA_CHANGES("cassandra.test.flush_local_schema_changes", 
"true"),
 +    /** Controls the maximum top-k limit for vector search */
 +    SAI_VECTOR_SEARCH_MAX_TOP_K("cassandra.sai.vector_search.max_top_k", 
"1000"),
  
      /**
 -     * Delay before checking if gossip is settled.
 +     * Controls the maximum number of PrimaryKeys that will be read into 
memory at one time when ordering/limiting
 +     * the results of an ANN query constrained by non-ANN predicates.
       */
 -    GOSSIP_SETTLE_MIN_WAIT_MS("cassandra.gossip_settle_min_wait_ms", "5000"),
 +    
SAI_VECTOR_SEARCH_ORDER_CHUNK_SIZE("cassandra.sai.vector_search.order_chunk_size",
 "100000"),
  
 -    /**
 -     * Interval delay between checking gossip is settled.
 -     */
 -    GOSSIP_SETTLE_POLL_INTERVAL_MS("cassandra.gossip_settle_interval_ms", 
"1000"),
 +    SCHEMA_PULL_INTERVAL_MS("cassandra.schema_pull_interval_ms", "60000"),
 +    
SCHEMA_UPDATE_HANDLER_FACTORY_CLASS("cassandra.schema.update_handler_factory.class"),
 +    SEARCH_CONCURRENCY_FACTOR("cassandra.search_concurrency_factor", "1"),
  
      /**
 -     * Number of polls without gossip state change to consider gossip as 
settled.
 +     * The maximum number of seeds returned by a seed provider before 
emmitting a warning.
 +     * A large seed list may impact effectiveness of the third gossip round.
 +     * The default used in SimpleSeedProvider is 20.
       */
 -    
GOSSIP_SETTLE_POLL_SUCCESSES_REQUIRED("cassandra.gossip_settle_poll_success_required",
 "3"),
 +    SEED_COUNT_WARN_THRESHOLD("cassandra.seed_count_warn_threshold"),
 +    
SERIALIZATION_EMPTY_TYPE_NONEMPTY_BEHAVIOR("cassandra.serialization.emptytype.nonempty_behavior"),
 +    SET_SEP_THREAD_NAME("cassandra.set_sep_thread_name", "true"),
 +    SHUTDOWN_ANNOUNCE_DELAY_IN_MS("cassandra.shutdown_announce_in_ms", 
"2000"),
 +    SIZE_RECORDER_INTERVAL("cassandra.size_recorder_interval", "300"),
+ 
+     /**
 -     * Number of replicas required to store batchlog for atomicity, only 
accepts values of 1 or 2.
++     * Do not try to calculate optimal streaming candidates. This can take a 
lot of time in some configs specially
++     * with vnodes.
+      */
 -    
REQUIRED_BATCHLOG_REPLICA_COUNT("cassandra.batchlog.required_replica_count", 
"2"),
++    
SKIP_OPTIMAL_STREAMING_CANDIDATES_CALCULATION("cassandra.skip_optimal_streaming_candidates_calculation",
 "false"),
+ 
 +    
SKIP_PAXOS_REPAIR_ON_TOPOLOGY_CHANGE("cassandra.skip_paxos_repair_on_topology_change"),
 +    /** If necessary for operational purposes, permit certain keyspaces to be 
ignored for paxos topology repairs. */
 +    
SKIP_PAXOS_REPAIR_ON_TOPOLOGY_CHANGE_KEYSPACES("cassandra.skip_paxos_repair_on_topology_change_keyspaces"),
 +    
SKIP_PAXOS_REPAIR_VERSION_VALIDATION("cassandra.skip_paxos_repair_version_validation"),
 +    SKIP_PAXOS_STATE_REBUILD("cassandra.skip_paxos_state_rebuild"),
 +    /** snapshots ttl cleanup initial delay in seconds */
 +    
SNAPSHOT_CLEANUP_INITIAL_DELAY_SECONDS("cassandra.snapshot.ttl_cleanup_initial_delay_seconds",
 "5"),
 +    /** snapshots ttl cleanup period in seconds */
 +    
SNAPSHOT_CLEANUP_PERIOD_SECONDS("cassandra.snapshot.ttl_cleanup_period_seconds",
 "60"),
 +    /** minimum allowed TTL for snapshots */
 +    
SNAPSHOT_MIN_ALLOWED_TTL_SECONDS("cassandra.snapshot.min_allowed_ttl_seconds", 
"60"),
 +    SSL_ENABLE("ssl.enable"),
 +    SSL_STORAGE_PORT("cassandra.ssl_storage_port"),
 +    SSTABLE_FORMAT_DEFAULT("cassandra.sstable.format.default"),
 +    START_GOSSIP("cassandra.start_gossip", "true"),
 +    START_NATIVE_TRANSPORT("cassandra.start_native_transport"),
 +    STORAGE_DIR("cassandra.storagedir"),
 +    STORAGE_HOOK("cassandra.storage_hook"),
 +    STORAGE_PORT("cassandra.storage_port"),
 +    
STREAMING_HISTOGRAM_ROUND_SECONDS("cassandra.streaminghistogram.roundseconds", 
"60"),
 +    
STREAMING_SESSION_PARALLELTRANSFERS("cassandra.streaming.session.parallelTransfers"),
 +    STREAM_HOOK("cassandra.stream_hook"),
 +    /** Platform word size sun.arch.data.model. Examples: "32", "64", 
"unknown"*/
 +    SUN_ARCH_DATA_MODEL("sun.arch.data.model"),
 +    SUN_JAVA_COMMAND("sun.java.command", ""),
      /**
 -     * Do not try to calculate optimal streaming candidates. This can take a 
lot of time in some configs specially
 -     * with vnodes.
 +     * Controls the JMX server threadpool keap-alive time.
 +     * Should only be set by in-jvm dtests.
       */
 -    
SKIP_OPTIMAL_STREAMING_CANDIDATES_CALCULATION("cassandra.skip_optimal_streaming_candidates_calculation",
 "false");
 +    
SUN_RMI_TRANSPORT_TCP_THREADKEEPALIVETIME("sun.rmi.transport.tcp.threadKeepAliveTime"),
 +    SUN_STDERR_ENCODING("sun.stderr.encoding"),
 +    SUN_STDOUT_ENCODING("sun.stdout.encoding"),
 +    SUPERUSER_SETUP_DELAY_MS("cassandra.superuser_setup_delay_ms", "10000"),
 +    SYSTEM_AUTH_DEFAULT_RF("cassandra.system_auth.default_rf", "1"),
 +    SYSTEM_DISTRIBUTED_DEFAULT_RF("cassandra.system_distributed.default_rf", 
"3"),
 +    SYSTEM_TRACES_DEFAULT_RF("cassandra.system_traces.default_rf", "2"),
 +    TEST_BBFAILHELPER_ENABLED("test.bbfailhelper.enabled"),
 +    TEST_BLOB_SHARED_SEED("cassandra.test.blob.shared.seed"),
 +    
TEST_BYTEMAN_TRANSFORMATIONS_DEBUG("cassandra.test.byteman.transformations.debug"),
 +    TEST_CASSANDRA_KEEPBRIEFBRIEF("cassandra.keepBriefBrief"),
 +    
TEST_CASSANDRA_RELEVANT_PROPERTIES("org.apache.cassandra.conf.CassandraRelevantPropertiesTest"),
 +    /** A property for various mechanisms for syncing files that makes it 
possible it intercept and skip syncing. */
 +    TEST_CASSANDRA_SKIP_SYNC("cassandra.skip_sync"),
 +    TEST_CASSANDRA_SUITENAME("suitename", "suitename_IS_UNDEFINED"),
 +    TEST_CASSANDRA_TESTTAG("cassandra.testtag", 
"cassandra.testtag_IS_UNDEFINED"),
 +    TEST_COMPRESSION("cassandra.test.compression"),
 +    TEST_COMPRESSION_ALGO("cassandra.test.compression.algo", "lz4"),
 +    TEST_DEBUG_REF_COUNT("cassandra.debugrefcount"),
 +    
TEST_DRIVER_CONNECTION_TIMEOUT_MS("cassandra.test.driver.connection_timeout_ms",
 "5000"),
 +    TEST_DRIVER_READ_TIMEOUT_MS("cassandra.test.driver.read_timeout_ms", 
"12000"),
 +    TEST_ENCRYPTION("cassandra.test.encryption", "false"),
 +    TEST_FAIL_MV_LOCKS_COUNT("cassandra.test.fail_mv_locks_count", "0"),
 +    TEST_FAIL_WRITES_KS("cassandra.test.fail_writes_ks", ""),
 +    /** Flush changes of {@link org.apache.cassandra.schema.SchemaKeyspace} 
after each schema modification. In production,
 +     * we always do that. However, tests which do not restart nodes may 
disable this functionality in order to run
 +     * faster. Note that this is disabled for unit tests but if an individual 
test requires schema to be flushed, it
 +     * can be also done manually for that particular case: {@code 
flush(SchemaConstants.SCHEMA_KEYSPACE_NAME);}. */
 +    
TEST_FLUSH_LOCAL_SCHEMA_CHANGES("cassandra.test.flush_local_schema_changes", 
"true"),
 +    TEST_HARRY_SWITCH_AFTER("cassandra.test.harry.progression.switch-after", 
"1"),
 +    TEST_IGNORE_SIGAR("cassandra.test.ignore_sigar"),
 +    
TEST_INTERVAL_TREE_EXPENSIVE_CHECKS("cassandra.test.interval_tree_expensive_checks"),
 +    TEST_INVALID_LEGACY_SSTABLE_ROOT("invalid-legacy-sstable-root"),
 +    TEST_JVM_DTEST_DISABLE_SSL("cassandra.test.disable_ssl"),
 +    TEST_LEGACY_SSTABLE_ROOT("legacy-sstable-root"),
 +    TEST_ORG_CAFFINITAS_OHC_SEGMENTCOUNT("org.caffinitas.ohc.segmentCount"),
 +    TEST_RANDOM_SEED("cassandra.test.random.seed"),
 +    TEST_READ_ITERATION_DELAY_MS("cassandra.test.read_iteration_delay_ms", 
"0"),
 +    TEST_REUSE_PREPARED("cassandra.test.reuse_prepared", "true"),
 +    TEST_ROW_CACHE_SIZE("cassandra.test.row_cache_size"),
 +    TEST_SERIALIZATION_WRITES("cassandra.test-serialization-writes"),
 +    TEST_SIMULATOR_DEBUG("cassandra.test.simulator.debug"),
 +    
TEST_SIMULATOR_DETERMINISM_CHECK("cassandra.test.simulator.determinismcheck", 
"none"),
 +    TEST_SIMULATOR_LIVENESS_CHECK("cassandra.test.simulator.livenesscheck", 
"true"),
 +    /** properties for debugging simulator ASM output */
 +    TEST_SIMULATOR_PRINT_ASM("cassandra.test.simulator.print_asm", "none"),
 +    
TEST_SIMULATOR_PRINT_ASM_CLASSES("cassandra.test.simulator.print_asm_classes", 
""),
 +    TEST_SIMULATOR_PRINT_ASM_OPTS("cassandra.test.simulator.print_asm_opts", 
""),
 +    
TEST_SIMULATOR_PRINT_ASM_TYPES("cassandra.test.simulator.print_asm_types", ""),
 +    
TEST_SKIP_CRYPTO_PROVIDER_INSTALLATION("cassandra.test.security.skip.provider.installation",
 "false"),
 +    
TEST_SSTABLE_FORMAT_DEVELOPMENT("cassandra.test.sstableformatdevelopment"),
 +    /**
 +     * {@link StorageCompatibilityMode} mode sets how the node will behave, 
sstable or messaging versions to use etc.
 +     * according to a yaml setting. But many tests don't load the config 
hence we need to force it otherwise they would
 +     * run always under the default. Config is null for junits that don't 
load the config. Get from env var that
 +     * CI/build.xml sets.
 +     *
 +     * This is a dev/CI only property. Do not use otherwise.
 +     */
 +    
TEST_STORAGE_COMPATIBILITY_MODE("cassandra.test.storage_compatibility_mode", 
StorageCompatibilityMode.CASSANDRA_4.toString()),
 +    TEST_STRICT_LCS_CHECKS("cassandra.test.strict_lcs_checks"),
 +    /** Turns some warnings into exceptions for testing. */
 +    TEST_STRICT_RUNTIME_CHECKS("cassandra.strict.runtime.checks"),
 +    /** Not to be used in production, this causes a Netty logging handler to 
be added to the pipeline, which will throttle a system under any normal load. */
 +    
TEST_UNSAFE_VERBOSE_DEBUG_CLIENT_PROTOCOL("cassandra.unsafe_verbose_debug_client_protocol"),
 +    TEST_USE_PREPARED("cassandra.test.use_prepared", "true"),
 +    
TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST("org.apache.cassandra.tools.UtilALLOW_TOOL_REINIT_FOR_TEST"),
 +    /** Activate write survey mode. The node not becoming an active ring 
member, and you must use JMX StorageService->joinRing() to finalize the ring 
joining. */
 +    TEST_WRITE_SURVEY("cassandra.write_survey"),
 +    TOLERATE_SSTABLE_SIZE("cassandra.tolerate_sstable_size"),
 +    TRIGGERS_DIR("cassandra.triggers_dir"),
 +    TRUNCATE_BALLOT_METADATA("cassandra.truncate_ballot_metadata"),
 +    TYPE_UDT_CONFLICT_BEHAVIOR("cassandra.type.udt.conflict_behavior"),
 +    // See org.apache.cassandra.db.compaction.unified.Controller for the 
definition of the UCS parameters
 +    UCS_BASE_SHARD_COUNT("unified_compaction.base_shard_count", "4"),
 +    UCS_MIN_SSTABLE_SIZE("unified_compaction.min_sstable_size", "100MiB"),
 +    
UCS_OVERLAP_INCLUSION_METHOD("unified_compaction.overlap_inclusion_method"),
 +    UCS_SCALING_PARAMETER("unified_compaction.scaling_parameters", "T4"),
 +    UCS_SSTABLE_GROWTH("unified_compaction.sstable_growth", "0.333"),
 +    UCS_SURVIVAL_FACTOR("unified_compaction.survival_factor", "1"),
 +    UCS_TARGET_SSTABLE_SIZE("unified_compaction.target_sstable_size", "1GiB"),
 +    
UDF_EXECUTOR_THREAD_KEEPALIVE_MS("cassandra.udf_executor_thread_keepalive_ms", 
"30000"),
 +    UNSAFE_SYSTEM("cassandra.unsafesystem"),
 +    /** User's home directory. */
 +    USER_HOME("user.home"),
 +    /** When enabled, recursive directory deletion will be executed using a 
unix command `rm -rf` instead of traversing
 +     * and removing individual files. This is now used only tests, but 
eventually we will make it true by default.*/
 +    USE_NIX_RECURSIVE_DELETE("cassandra.use_nix_recursive_delete"),
 +    /** Gossiper compute expiration timeout. Default value 3 days. */
 +    VERY_LONG_TIME_MS("cassandra.very_long_time_ms", "259200000"),
 +    
WAIT_FOR_TRACING_EVENTS_TIMEOUT_SECS("cassandra.wait_for_tracing_events_timeout_secs",
 "0");
 +
 +    static
 +    {
 +        CassandraRelevantProperties[] values = 
CassandraRelevantProperties.values();
 +        Set<String> visited = new HashSet<>(values.length);
 +        CassandraRelevantProperties prev = null;
 +        for (CassandraRelevantProperties next : values)
 +        {
 +            if (!visited.add(next.getKey()))
 +                throw new IllegalStateException("System properties have 
duplicate key: " + next.getKey());
 +            if (prev != null && next.name().compareTo(prev.name()) < 0)
 +                throw new IllegalStateException("Enum constants are not in 
alphabetical order: " + prev.name() + " should come before " + next.name());
 +            else
 +                prev = next;
 +        }
 +    }
  
      CassandraRelevantProperties(String key, String defaultVal)
      {


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

Reply via email to