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