You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jl...@apache.org on 2023/05/11 05:41:02 UTC
[cassandra] branch trunk updated: Moved system properties and envs to CassandraRelevantProperties and CassandraRelevantEnv respectively
This is an automated email from the ASF dual-hosted git repository.
jlewandowski 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 f650908648 Moved system properties and envs to CassandraRelevantProperties and CassandraRelevantEnv respectively
f650908648 is described below
commit f6509086483983176f82a4b72912927693b6e573
Author: Maxim Muzafarov <ma...@gmail.com>
AuthorDate: Wed May 3 12:15:37 2023 +0200
Moved system properties and envs to CassandraRelevantProperties and CassandraRelevantEnv respectively
Patch by Maxim Muzafarov; reviewed by Stefan Miklosovic and Jacek Lewandowski for CASSANDRA-17797
---
CHANGES.txt | 1 +
checkstyle.xml | 18 +
checkstyle_test.xml | 20 +-
src/java/org/apache/cassandra/auth/AuthCache.java | 20 +-
.../org/apache/cassandra/auth/AuthKeyspace.java | 3 +-
.../cassandra/auth/CassandraRoleManager.java | 16 +-
.../apache/cassandra/batchlog/BatchlogManager.java | 3 +-
.../org/apache/cassandra/concurrent/SEPWorker.java | 3 +-
.../cassandra/config/CassandraRelevantEnv.java | 17 +-
.../config/CassandraRelevantProperties.java | 757 +++++++++++++--------
src/java/org/apache/cassandra/config/Config.java | 13 +-
.../cassandra/config/DatabaseDescriptor.java | 72 +-
.../cassandra/config/YamlConfigurationLoader.java | 9 +-
.../cql3/CustomPayloadMirroringQueryHandler.java | 3 +-
.../cql3/functions/UDFExecutorService.java | 3 +-
.../statements/schema/AlterKeyspaceStatement.java | 8 +-
.../statements/schema/CreateViewStatement.java | 3 +-
.../db/ExpirationDateOverflowHandling.java | 9 +-
src/java/org/apache/cassandra/db/Keyspace.java | 5 +-
src/java/org/apache/cassandra/db/ReadCommand.java | 2 +-
src/java/org/apache/cassandra/db/StorageHook.java | 4 +-
.../cassandra/db/commitlog/CommitLogReplayer.java | 15 +-
.../db/commitlog/CommitLogSegmentReader.java | 5 +-
.../db/compaction/AbstractCompactionStrategy.java | 2 +-
.../db/compaction/CompactionController.java | 22 +-
.../cassandra/db/compaction/CompactionLogger.java | 3 +-
.../db/compaction/LeveledCompactionStrategy.java | 5 +-
.../db/compaction/LeveledGenerations.java | 4 +-
.../TimeWindowCompactionStrategyOptions.java | 12 +-
.../db/guardrails/GuardrailsConfigProvider.java | 13 +-
.../org/apache/cassandra/db/marshal/EmptyType.java | 7 +-
.../org/apache/cassandra/db/marshal/UserType.java | 9 +-
.../db/memtable/AbstractShardedMemtable.java | 9 +-
.../cassandra/db/monitoring/MonitoringTask.java | 11 +-
.../cassandra/db/repair/PendingAntiCompaction.java | 5 +-
.../db/streaming/CassandraStreamReceiver.java | 4 +-
.../org/apache/cassandra/db/view/ViewManager.java | 4 +-
.../db/virtual/SystemPropertiesTable.java | 8 +-
.../org/apache/cassandra/gms/FailureDetector.java | 75 +-
src/java/org/apache/cassandra/gms/Gossiper.java | 72 +-
src/java/org/apache/cassandra/hints/Hint.java | 3 +-
.../apache/cassandra/hints/HintsBufferPool.java | 4 +-
.../cassandra/index/SecondaryIndexManager.java | 3 +-
.../org/apache/cassandra/io/sstable/SSTable.java | 2 +-
.../cassandra/io/sstable/SSTableHeaderFix.java | 8 +-
.../sstable/indexsummary/IndexSummaryBuilder.java | 5 +-
.../io/util/BufferedDataOutputStreamPlus.java | 5 +-
.../apache/cassandra/io/util/DataOutputBuffer.java | 7 +-
.../cassandra/io/util/DataOutputStreamPlus.java | 6 +-
.../org/apache/cassandra/io/util/PathUtils.java | 2 +-
.../cassandra/locator/DynamicEndpointSnitch.java | 4 +-
.../apache/cassandra/locator/SnitchProperties.java | 6 +-
.../DecayingEstimatedHistogramReservoir.java | 3 +-
.../cassandra/net/OutboundConnectionSettings.java | 4 +-
.../apache/cassandra/net/OutboundConnections.java | 5 +-
.../org/apache/cassandra/net/SocketFactory.java | 4 +-
.../cassandra/repair/consistent/LocalSessions.java | 16 +-
.../apache/cassandra/schema/CompactionParams.java | 9 +-
.../schema/DefaultSchemaUpdateHandler.java | 2 +-
.../cassandra/schema/MigrationCoordinator.java | 5 +-
.../apache/cassandra/schema/SchemaKeyspace.java | 10 +-
.../schema/SchemaUpdateHandlerFactoryProvider.java | 11 +-
.../security/AbstractSslContextFactory.java | 10 +-
.../org/apache/cassandra/security/SSLFactory.java | 5 +-
.../cassandra/service/ActiveRepairService.java | 23 +-
.../apache/cassandra/service/CassandraDaemon.java | 17 +-
.../org/apache/cassandra/service/ClientState.java | 6 +-
.../apache/cassandra/service/LoadBroadcaster.java | 4 +-
.../cassandra/service/NativeTransportService.java | 4 +-
.../apache/cassandra/service/StartupChecks.java | 7 +-
.../apache/cassandra/service/StorageService.java | 65 +-
.../org/apache/cassandra/service/paxos/Paxos.java | 6 +-
.../cassandra/service/paxos/PaxosCommit.java | 3 +-
.../cassandra/service/paxos/PaxosRepair.java | 3 +-
.../service/paxos/PaxosRequestCallback.java | 2 +-
.../apache/cassandra/service/paxos/PaxosState.java | 3 +-
.../service/paxos/cleanup/PaxosCleanupSession.java | 3 +-
.../paxos/uncommitted/PaxosStateTracker.java | 21 +-
.../paxos/uncommitted/PaxosUncommittedTracker.java | 9 +-
.../service/reads/range/RangeCommands.java | 4 +-
.../service/reads/repair/BlockingReadRepairs.java | 6 +-
.../reads/thresholds/CoordinatorWarnings.java | 4 +-
.../org/apache/cassandra/streaming/StreamHook.java | 4 +-
.../apache/cassandra/streaming/StreamSession.java | 3 +-
.../async/StreamingMultiplexedChannel.java | 6 +-
.../org/apache/cassandra/tools/HashPassword.java | 2 +-
src/java/org/apache/cassandra/tools/NodeProbe.java | 7 +-
.../apache/cassandra/tools/StandaloneScrubber.java | 3 +-
.../apache/cassandra/tools/StandaloneSplitter.java | 3 +-
.../apache/cassandra/tools/StandaloneUpgrader.java | 3 +-
.../apache/cassandra/tools/StandaloneVerifier.java | 3 +-
src/java/org/apache/cassandra/tools/Util.java | 1 -
.../apache/cassandra/tracing/TraceStateImpl.java | 4 +-
src/java/org/apache/cassandra/tracing/Tracing.java | 6 +-
.../org/apache/cassandra/transport/CBUtil.java | 5 +-
.../cassandra/transport/PipelineConfigurator.java | 3 +-
.../cassandra/utils/DiagnosticSnapshotService.java | 8 +-
.../org/apache/cassandra/utils/FBUtilities.java | 17 +-
.../org/apache/cassandra/utils/GuidGenerator.java | 2 +-
.../org/apache/cassandra/utils/JMXServerUtils.java | 15 +-
.../cassandra/utils/JVMStabilityInspector.java | 4 +-
.../org/apache/cassandra/utils/MBeanWrapper.java | 4 +-
.../org/apache/cassandra/utils/MonotonicClock.java | 8 +-
src/java/org/apache/cassandra/utils/SyncUtil.java | 9 +-
src/java/org/apache/cassandra/utils/TimeUUID.java | 6 +-
.../org/apache/cassandra/utils/binlog/BinLog.java | 3 +-
.../org/apache/cassandra/utils/btree/BTree.java | 3 +-
.../org/apache/cassandra/utils/concurrent/Ref.java | 3 +-
.../org/apache/cassandra/utils/LongBTreeTest.java | 3 +-
.../cassandra/distributed/action/GossipHelper.java | 14 +-
.../cassandra/distributed/fuzz/HarryHelper.java | 27 +-
.../distributed/impl/AbstractCluster.java | 2 +-
.../cassandra/distributed/impl/Instance.java | 15 +-
.../cassandra/distributed/impl/TracingUtil.java | 11 -
.../cassandra/distributed/shared/Byteman.java | 4 +-
.../cassandra/distributed/shared/ClusterUtils.java | 9 +-
.../distributed/shared/WithProperties.java | 71 +-
.../cassandra/distributed/test/AlterTest.java | 3 +-
.../test/BootstrapBinaryDisabledTest.java | 13 +-
.../distributed/test/CASContentionTest.java | 3 +-
.../apache/cassandra/distributed/test/CASTest.java | 3 +-
.../test/DataResurrectionCheckTest.java | 6 +-
.../test/FailingResponseDoesNotLogTest.java | 6 +-
.../distributed/test/FailingTruncationTest.java | 7 +-
.../cassandra/distributed/test/GossipTest.java | 3 +-
.../distributed/test/IPMembershipTest.java | 4 +-
.../distributed/test/MessageForwardingTest.java | 11 +-
.../distributed/test/MigrationCoordinatorTest.java | 16 +-
.../cassandra/distributed/test/MoveTest.java | 3 +-
.../distributed/test/NativeMixedVersionTest.java | 6 +-
.../distributed/test/NativeProtocolTest.java | 3 +-
.../distributed/test/PartitionDenylistTest.java | 9 +-
.../distributed/test/PaxosRepair2Test.java | 16 +-
.../distributed/test/PaxosRepairTest.java | 2 +-
.../cassandra/distributed/test/ReadRepairTest.java | 4 +-
.../distributed/test/RepairCoordinatorBase.java | 4 +-
.../cassandra/distributed/test/TestBaseImpl.java | 5 +-
.../distributed/test/TimeoutAbortTest.java | 3 +-
.../test/UpdateSystemAuthAfterDCExpansionTest.java | 4 +-
.../distributed/test/VirtualTableLogsTest.java | 9 +-
.../test/hostreplacement/FailedBootstrapTest.java | 3 +-
.../distributed/test/jmx/JMXGetterCheckTest.java | 4 +-
.../distributed/test/metric/TableMetricTest.java | 4 +-
.../distributed/test/ring/BootstrapTest.java | 13 +-
.../distributed/test/ring/CleanupFailureTest.java | 3 +-
.../distributed/test/ring/PendingWritesTest.java | 4 +-
.../LongLeveledCompactionStrategyCQLTest.java | 4 +-
.../cassandra/simulator/asm/InterceptAgent.java | 2 +
.../cassandra/simulator/asm/MethodLogger.java | 2 +
.../apache/cassandra/simulator/ActionSchedule.java | 3 +-
.../cassandra/simulator/SimulationRunner.java | 17 +-
.../cassandra/simulator/paxos/PaxosSimulation.java | 10 +-
.../cassandra/AbstractSerializationsTester.java | 7 +-
.../CassandraBriefJUnitResultFormatter.java | 7 +-
.../CassandraXMLJUnitResultFormatter.java | 9 +-
.../apache/cassandra/LogbackStatusListener.java | 12 +-
test/unit/org/apache/cassandra/SchemaLoader.java | 11 +-
.../cassandra/audit/AuditLoggerAuthTest.java | 3 +-
.../cassandra/audit/AuditLoggerCleanupTest.java | 4 +-
.../org/apache/cassandra/auth/AuthCacheTest.java | 6 +-
.../cassandra/auth/PasswordAuthenticatorTest.java | 12 +-
.../org/apache/cassandra/auth/jmx/JMXAuthTest.java | 12 +-
.../config/CassandraRelevantPropertiesTest.java | 94 ++-
.../cassandra/config/DatabaseDescriptorTest.java | 19 +-
.../LoadOldYAMLBackwardCompatibilityTest.java | 3 +-
.../config/OverrideConfigurationLoader.java | 4 +-
.../config/YamlConfigurationLoaderTest.java | 18 +-
test/unit/org/apache/cassandra/cql3/CQLTester.java | 112 ++-
.../unit/org/apache/cassandra/cql3/PagingTest.java | 3 +-
.../apache/cassandra/cql3/ViewFiltering1Test.java | 6 +-
.../cql3/validation/entities/UFSecurityTest.java | 4 +-
.../cql3/validation/operations/TTLTest.java | 6 +-
.../unit/org/apache/cassandra/db/RowCacheTest.java | 3 +-
.../db/commitlog/CommitLogFailurePolicyTest.java | 4 +-
.../cassandra/db/commitlog/CommitLogTest.java | 171 +++--
.../db/compaction/CompactionIteratorTest.java | 3 +-
.../cassandra/db/compaction/CompactionsTest.java | 2 +-
.../compaction/LeveledCompactionStrategyTest.java | 2 +-
.../cassandra/db/compaction/NeverPurgeTest.java | 3 +-
.../SizeTieredCompactionStrategyTest.java | 2 +-
.../cassandra/db/compaction/TTLExpiryTest.java | 2 +-
.../TimeWindowCompactionStrategyTest.java | 6 +-
.../apache/cassandra/db/rows/RowsMergingTest.java | 4 +-
.../db/transform/DuplicateRowCheckerTest.java | 3 +-
.../cassandra/db/virtual/LogMessagesTableTest.java | 10 +-
.../db/virtual/SystemPropertiesTableTest.java | 4 +-
.../apache/cassandra/gms/FailureDetectorTest.java | 3 +-
.../org/apache/cassandra/gms/GossiperTest.java | 3 +-
.../gms/PendingRangeCalculatorServiceTest.java | 3 +-
.../org/apache/cassandra/gms/ShadowRoundTest.java | 24 +-
.../apache/cassandra/hints/HintWriteTTLTest.java | 4 +-
.../apache/cassandra/index/sasi/SASIIndexTest.java | 3 +-
.../index/sasi/disk/PerSSTableIndexWriterTest.java | 4 +-
.../cassandra/index/sasi/plan/OperationTest.java | 4 +-
.../cassandra/io/sstable/LegacySSTableTest.java | 7 +-
.../org/apache/cassandra/io/sstable/ScrubTest.java | 10 +-
.../io/sstable/indexsummary/IndexSummaryTest.java | 7 +-
.../cassandra/locator/AlibabaCloudSnitchTest.java | 3 +-
.../cassandra/locator/CloudstackSnitchTest.java | 3 +-
.../apache/cassandra/locator/EC2SnitchTest.java | 3 +-
.../cassandra/locator/GoogleCloudSnitchTest.java | 3 +-
.../cassandra/locator/PropertyFileSnitchTest.java | 3 +-
.../cassandra/metrics/TrieMemtableMetricsTest.java | 4 +-
.../org/apache/cassandra/net/ConnectionTest.java | 10 +-
.../net/MessageSerializationPropertyTest.java | 9 +-
.../schema/RemoveWithoutDroppingTest.java | 3 +-
.../CustomSslContextFactoryConfigTest.java | 6 +-
.../CustomSslContextFactoryInvalidConfigTest.java | 6 +-
.../security/DefaultSslContextFactoryTest.java | 6 +-
.../security/FileBasedSslContextFactoryTest.java | 6 +-
.../PEMBasedSslContextFactoryConfigTest.java | 6 +-
...tFactoryConfigWithMismatchingPasswordsTest.java | 6 +-
...ontextFactoryConfigWithUnencryptedKeysTest.java | 10 +-
...PEMBasedSslContextFactoryInvalidConfigTest.java | 6 +-
.../security/PEMBasedSslContextFactoryTest.java | 5 +-
.../PEMJKSSslContextFactoryConfigTest.java | 6 +-
.../AbstractFilesystemOwnershipCheckTest.java | 8 +-
.../apache/cassandra/service/ClientStateTest.java | 5 +-
.../cassandra/service/StartupChecksTest.java | 14 +-
.../service/StorageServiceServerM3PTest.java | 4 +-
.../service/StorageServiceServerTest.java | 12 +-
...ropertiesBasedFileSystemOwnershipCheckTest.java | 4 +-
.../service/paxos/PaxosRepairHistoryTest.java | 3 +-
.../paxos/uncommitted/PaxosStateTrackerTest.java | 36 +-
.../service/reads/range/RangeCommandsTest.java | 5 +-
.../apache/cassandra/tools/OfflineToolUtils.java | 3 +-
.../cassandra/tools/StandaloneSplitterTest.java | 3 +-
.../tools/StandaloneSplitterWithCQLTesterTest.java | 3 +-
.../tools/StandaloneUpgraderOnSStablesTest.java | 5 +-
.../tools/StandaloneVerifierOnSSTablesTest.java | 8 +-
.../cassandra/tools/nodetool/ClientStatsTest.java | 3 +-
.../cassandra/tools/nodetool/ScrubToolTest.java | 3 +-
.../cassandra/transport/CQLUserAuditTest.java | 3 +-
.../org/apache/cassandra/utils/Generators.java | 4 +-
.../cassandra/utils/btree/BTreeRemovalTest.java | 3 +-
.../apache/cassandra/utils/btree/BTreeTest.java | 3 +-
236 files changed, 1768 insertions(+), 1217 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index 656508064d..abeb753658 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
5.0
+ * Moved system properties and envs to CassandraRelevantProperties and CassandraRelevantEnv respectively (CASSANDRA-17797)
* Add sstablepartitions offline tool to find large partitions in sstables (CASSANDRA-8720)
* Replace usages of json-simple dependency by Jackson (CASSANDRA-16855)
* When decommissioning should set Severity to limit traffic (CASSANDRA-18430)
diff --git a/checkstyle.xml b/checkstyle.xml
index 0f648d8bf4..fc77fdd4cd 100644
--- a/checkstyle.xml
+++ b/checkstyle.xml
@@ -149,6 +149,24 @@
<property name="message" value="Avoid Short() and use Short.valueOf()" />
</module>
+ <module name="SuppressionCommentFilter">
+ <property name="offCommentFormat" value="checkstyle: suppress below '([\w\|]+)'"/>
+ <property name="idFormat" value="$1"/>
+ </module>
+
+ <module name="SuppressWithNearbyCommentFilter">
+ <property name="commentFormat" value="checkstyle: suppress nearby '([\w\|]+)'"/>
+ <property name="idFormat" value="$1"/>
+ <property name="influenceFormat" value="0"/>
+ </module>
+
+ <module name="RegexpSinglelineJava">
+ <property name="id" value="blockSystemPropertyUsage"/>
+ <property name="format" value="(System\.getenv)|(System\.(getProperty|setProperty))|(Integer\.getInteger)|(Long\.getLong)|(Boolean\.getBoolean)"/>
+ <property name="ignoreComments" value="true"/>
+ <property name="message" value="Use the CassandraRelevantProperties or CassandraRelevantEnv instead." />
+ </module>
+
<module name="RedundantImport"/>
<module name="UnusedImports"/>
</module>
diff --git a/checkstyle_test.xml b/checkstyle_test.xml
index aeeb31fd1f..d487a16c4c 100644
--- a/checkstyle_test.xml
+++ b/checkstyle_test.xml
@@ -99,7 +99,25 @@
<property name="ignoreComments" value="true"/>
<property name="message" value="Avoid Short() and use Short.valueOf()" />
</module>
-
+
+ <module name="SuppressionCommentFilter">
+ <property name="offCommentFormat" value="checkstyle: suppress below '([\w\|]+)'"/>
+ <property name="idFormat" value="$1"/>
+ </module>
+
+ <module name="SuppressWithNearbyCommentFilter">
+ <property name="commentFormat" value="checkstyle: suppress nearby '([\w\|]+)'"/>
+ <property name="idFormat" value="$1"/>
+ <property name="influenceFormat" value="0"/>
+ </module>
+
+ <module name="RegexpSinglelineJava">
+ <property name="id" value="blockSystemPropertyUsage"/>
+ <property name="format" value="(System\.getenv)|(System\.(getProperty|setProperty))|(Integer\.getInteger)|(Long\.getLong)|(Boolean\.getBoolean)"/>
+ <property name="ignoreComments" value="true"/>
+ <property name="message" value="Use the CassandraRelevantProperties or CassandraRelevantEnv instead." />
+ </module>
+
<module name="RedundantImport"/>
<module name="UnusedImports"/>
</module>
diff --git a/src/java/org/apache/cassandra/auth/AuthCache.java b/src/java/org/apache/cassandra/auth/AuthCache.java
index 66a2a4fe5c..7d3a164cb4 100644
--- a/src/java/org/apache/cassandra/auth/AuthCache.java
+++ b/src/java/org/apache/cassandra/auth/AuthCache.java
@@ -48,6 +48,9 @@ import org.apache.cassandra.utils.MBeanWrapper;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
+import static org.apache.cassandra.config.CassandraRelevantProperties.AUTH_CACHE_WARMING_MAX_RETRIES;
+import static org.apache.cassandra.config.CassandraRelevantProperties.AUTH_CACHE_WARMING_RETRY_INTERVAL_MS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION;
public class AuthCache<K, V> implements AuthCacheMBean, Shutdownable
{
@@ -55,11 +58,6 @@ public class AuthCache<K, V> implements AuthCacheMBean, Shutdownable
public static final String MBEAN_NAME_BASE = "org.apache.cassandra.auth:type=";
- // We expect default values on cache retries and interval to be sufficient for everyone but have this escape hatch
- // just in case.
- static final String CACHE_LOAD_RETRIES_PROPERTY = "cassandra.auth_cache.warming.max_retries";
- static final String CACHE_LOAD_RETRY_INTERVAL_PROPERTY = "cassandra.auth_cache.warming.retry_interval_ms";
-
private volatile ScheduledFuture cacheRefresher = null;
// Keep a handle on created instances so their executors can be terminated cleanly
@@ -254,7 +252,7 @@ public class AuthCache<K, V> implements AuthCacheMBean, Shutdownable
*/
public synchronized void setValidity(int validityPeriod)
{
- if (Boolean.getBoolean("cassandra.disable_auth_caches_remote_configuration"))
+ if (DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION.getBoolean())
throw new UnsupportedOperationException("Remote configuration of auth caches is disabled");
setValidityDelegate.accept(validityPeriod);
@@ -272,7 +270,7 @@ public class AuthCache<K, V> implements AuthCacheMBean, Shutdownable
*/
public synchronized void setUpdateInterval(int updateInterval)
{
- if (Boolean.getBoolean("cassandra.disable_auth_caches_remote_configuration"))
+ if (DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION.getBoolean())
throw new UnsupportedOperationException("Remote configuration of auth caches is disabled");
setUpdateIntervalDelegate.accept(updateInterval);
@@ -290,7 +288,7 @@ public class AuthCache<K, V> implements AuthCacheMBean, Shutdownable
*/
public synchronized void setMaxEntries(int maxEntries)
{
- if (Boolean.getBoolean("cassandra.disable_auth_caches_remote_configuration"))
+ if (DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION.getBoolean())
throw new UnsupportedOperationException("Remote configuration of auth caches is disabled");
setMaxEntriesDelegate.accept(maxEntries);
@@ -309,7 +307,7 @@ public class AuthCache<K, V> implements AuthCacheMBean, Shutdownable
public synchronized void setActiveUpdate(boolean update)
{
- if (Boolean.getBoolean("cassandra.disable_auth_caches_remote_configuration"))
+ if (DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION.getBoolean())
throw new UnsupportedOperationException("Remote configuration of auth caches is disabled");
setActiveUpdate.accept(update);
@@ -409,8 +407,8 @@ public class AuthCache<K, V> implements AuthCacheMBean, Shutdownable
return;
}
- int retries = Integer.getInteger(CACHE_LOAD_RETRIES_PROPERTY, 10);
- long retryInterval = Long.getLong(CACHE_LOAD_RETRY_INTERVAL_PROPERTY, 1000);
+ int retries = AUTH_CACHE_WARMING_MAX_RETRIES.getInt(10);
+ long retryInterval = AUTH_CACHE_WARMING_RETRY_INTERVAL_MS.getLong(1000);
while (retries-- > 0)
{
diff --git a/src/java/org/apache/cassandra/auth/AuthKeyspace.java b/src/java/org/apache/cassandra/auth/AuthKeyspace.java
index 67fc9c1a06..f0a3da891c 100644
--- a/src/java/org/apache/cassandra/auth/AuthKeyspace.java
+++ b/src/java/org/apache/cassandra/auth/AuthKeyspace.java
@@ -30,6 +30,7 @@ import org.apache.cassandra.schema.KeyspaceParams;
import org.apache.cassandra.schema.Tables;
import static java.lang.String.format;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SUPERUSER_SETUP_DELAY_MS;
public final class AuthKeyspace
{
@@ -55,7 +56,7 @@ public final class AuthKeyspace
public static final String RESOURCE_ROLE_INDEX = "resource_role_permissons_index";
public static final String NETWORK_PERMISSIONS = "network_permissions";
- public static final long SUPERUSER_SETUP_DELAY = Long.getLong("cassandra.superuser_setup_delay_ms", 10000);
+ public static final long SUPERUSER_SETUP_DELAY = SUPERUSER_SETUP_DELAY_MS.getLong();
private static final TableMetadata Roles =
parse(ROLES,
diff --git a/src/java/org/apache/cassandra/auth/CassandraRoleManager.java b/src/java/org/apache/cassandra/auth/CassandraRoleManager.java
index 5f9548f6fa..37bda4eac4 100644
--- a/src/java/org/apache/cassandra/auth/CassandraRoleManager.java
+++ b/src/java/org/apache/cassandra/auth/CassandraRoleManager.java
@@ -34,7 +34,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.ScheduledExecutors;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.schema.SchemaConstants;
import org.apache.cassandra.cql3.*;
@@ -49,6 +48,7 @@ import org.apache.cassandra.transport.messages.ResultMessage;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.mindrot.jbcrypt.BCrypt;
+import static org.apache.cassandra.config.CassandraRelevantProperties.AUTH_BCRYPT_GENSALT_LOG2_ROUNDS;
import static org.apache.cassandra.service.QueryState.forInternalCalls;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
@@ -113,19 +113,15 @@ public class CassandraRoleManager implements IRoleManager
}
};
- // 2 ** GENSALT_LOG2_ROUNDS rounds of hashing will be performed.
- @VisibleForTesting
- public static final String GENSALT_LOG2_ROUNDS_PROPERTY = Config.PROPERTY_PREFIX + "auth_bcrypt_gensalt_log2_rounds";
private static final int GENSALT_LOG2_ROUNDS = getGensaltLogRounds();
static int getGensaltLogRounds()
{
- int rounds = Integer.getInteger(GENSALT_LOG2_ROUNDS_PROPERTY, 10);
- if (rounds < 4 || rounds > 30)
- throw new ConfigurationException(String.format("Bad value for system property -D%s." +
- "Please use a value between 4 and 30 inclusively",
- GENSALT_LOG2_ROUNDS_PROPERTY));
- return rounds;
+ int rounds = AUTH_BCRYPT_GENSALT_LOG2_ROUNDS.getInt(10);
+ if (rounds < 4 || rounds > 30)
+ throw new ConfigurationException(String.format("Bad value for system property %s." +
+ "Please use a value between 4 and 30 inclusively", AUTH_BCRYPT_GENSALT_LOG2_ROUNDS.getKey()));
+ return rounds;
}
private SelectStatement loadRoleStatement;
diff --git a/src/java/org/apache/cassandra/batchlog/BatchlogManager.java b/src/java/org/apache/cassandra/batchlog/BatchlogManager.java
index 6d102b01c0..b7b25cb7b2 100644
--- a/src/java/org/apache/cassandra/batchlog/BatchlogManager.java
+++ b/src/java/org/apache/cassandra/batchlog/BatchlogManager.java
@@ -77,6 +77,7 @@ import org.apache.cassandra.utils.MBeanWrapper;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
+import static org.apache.cassandra.config.CassandraRelevantProperties.BATCHLOG_REPLAY_TIMEOUT_IN_MS;
import static org.apache.cassandra.cql3.QueryProcessor.executeInternal;
import static org.apache.cassandra.cql3.QueryProcessor.executeInternalWithPaging;
import static org.apache.cassandra.net.Verb.MUTATION_REQ;
@@ -91,7 +92,7 @@ public class BatchlogManager implements BatchlogManagerMBean
private static final Logger logger = LoggerFactory.getLogger(BatchlogManager.class);
public static final BatchlogManager instance = new BatchlogManager();
- public static final long BATCHLOG_REPLAY_TIMEOUT = Long.getLong("cassandra.batchlog.replay_timeout_in_ms", DatabaseDescriptor.getWriteRpcTimeout(MILLISECONDS) * 2);
+ public static final long BATCHLOG_REPLAY_TIMEOUT = BATCHLOG_REPLAY_TIMEOUT_IN_MS.getLong(DatabaseDescriptor.getWriteRpcTimeout(MILLISECONDS) * 2);
private volatile long totalBatchesReplayed = 0; // no concurrency protection necessary as only written by replay thread.
private volatile TimeUUID lastReplayedUuid = TimeUUID.minAtUnixMillis(0);
diff --git a/src/java/org/apache/cassandra/concurrent/SEPWorker.java b/src/java/org/apache/cassandra/concurrent/SEPWorker.java
index fe16c950df..93c01fa7a3 100644
--- a/src/java/org/apache/cassandra/concurrent/SEPWorker.java
+++ b/src/java/org/apache/cassandra/concurrent/SEPWorker.java
@@ -30,12 +30,13 @@ import org.apache.cassandra.utils.JVMStabilityInspector;
import static org.apache.cassandra.concurrent.SEPExecutor.TakeTaskPermitResult.RETURNED_WORK_PERMIT;
import static org.apache.cassandra.concurrent.SEPExecutor.TakeTaskPermitResult.TOOK_PERMIT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SET_SEP_THREAD_NAME;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
final class SEPWorker extends AtomicReference<SEPWorker.Work> implements Runnable
{
private static final Logger logger = LoggerFactory.getLogger(SEPWorker.class);
- private static final boolean SET_THREAD_NAME = Boolean.parseBoolean(System.getProperty("cassandra.set_sep_thread_name", "true"));
+ private static final boolean SET_THREAD_NAME = SET_SEP_THREAD_NAME.getBoolean();
final Long workerId;
final Thread thread;
diff --git a/src/java/org/apache/cassandra/config/CassandraRelevantEnv.java b/src/java/org/apache/cassandra/config/CassandraRelevantEnv.java
index 4960374495..0fdcd6c819 100644
--- a/src/java/org/apache/cassandra/config/CassandraRelevantEnv.java
+++ b/src/java/org/apache/cassandra/config/CassandraRelevantEnv.java
@@ -18,13 +18,19 @@
package org.apache.cassandra.config;
+// checkstyle: suppress below 'blockSystemPropertyUsage'
+
public enum CassandraRelevantEnv
{
/**
* Searching in the JAVA_HOME is safer than searching into System.getProperty("java.home") as the Oracle
* JVM might use the JRE which do not contains jmap.
*/
- JAVA_HOME ("JAVA_HOME");
+ JAVA_HOME ("JAVA_HOME"),
+ CIRCLECI("CIRCLECI"),
+ CASSANDRA_SKIP_SYNC("CASSANDRA_SKIP_SYNC")
+
+ ;
CassandraRelevantEnv(String key)
{
@@ -38,6 +44,15 @@ public enum CassandraRelevantEnv
return System.getenv(key);
}
+ /**
+ * Gets the value of a system env as a boolean.
+ * @return System env boolean value if it exists, false otherwise.
+ */
+ public boolean getBoolean()
+ {
+ return Boolean.parseBoolean(System.getenv(key));
+ }
+
public String getKey() {
return key;
}
diff --git a/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java b/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java
index 73aa67b9a5..78e199292c 100644
--- a/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java
+++ b/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java
@@ -18,349 +18,493 @@
package org.apache.cassandra.config;
+import java.util.HashSet;
+import java.util.Set;
import java.util.concurrent.TimeUnit;
+import javax.annotation.Nullable;
+
+import com.google.common.primitives.Ints;
+
import org.apache.cassandra.db.virtual.LogMessagesTable;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.service.FileSystemOwnershipCheck;
+// checkstyle: suppress below 'blockSystemPropertyUsage'
+
/** A class that extracts system properties for the cassandra node it runs within. */
public enum CassandraRelevantProperties
{
- //base JVM properties
- JAVA_HOME("java.home"),
- CASSANDRA_PID_FILE ("cassandra-pidfile"),
-
+ ACQUIRE_RETRY_SECONDS("cassandra.acquire_retry_seconds", "60"),
+ ACQUIRE_SLEEP_MS("cassandra.acquire_sleep_ms", "1000"),
+ ALLOCATE_TOKENS_FOR_KEYSPACE("cassandra.allocate_tokens_for_keyspace"),
+ ALLOW_ALTER_RF_DURING_RANGE_MOVEMENT("cassandra.allow_alter_rf_during_range_movement"),
+ /** 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"),
+ ALLOW_UNLIMITED_CONCURRENT_VALIDATIONS("cassandra.allow_unlimited_concurrent_validations"),
+ ALLOW_UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION("cassandra.allow_unsafe_aggressive_sstable_expiration"),
+ ALLOW_UNSAFE_JOIN("cassandra.allow_unsafe_join"),
+ ALLOW_UNSAFE_REPLACE("cassandra.allow_unsafe_replace"),
+ ALLOW_UNSAFE_TRANSIENT_CHANGES("cassandra.allow_unsafe_transient_changes"),
+ APPROXIMATE_TIME_PRECISION_MS("cassandra.approximate_time_precision_ms", "2"),
+ /** 2 ** GENSALT_LOG2_ROUNDS rounds of hashing will be performed. */
+ AUTH_BCRYPT_GENSALT_LOG2_ROUNDS("cassandra.auth_bcrypt_gensalt_log2_rounds"),
+ /** We expect default values on cache retries and interval to be sufficient for everyone but have this escape hatch just in case. */
+ AUTH_CACHE_WARMING_MAX_RETRIES("cassandra.auth_cache.warming.max_retries"),
+ AUTH_CACHE_WARMING_RETRY_INTERVAL_MS("cassandra.auth_cache.warming.retry_interval_ms"),
+ AUTOCOMPACTION_ON_STARTUP_ENABLED("cassandra.autocompaction_on_startup_enabled", "true"),
+ AUTO_BOOTSTRAP("cassandra.auto_bootstrap"),
+ AUTO_REPAIR_FREQUENCY_SECONDS("cassandra.auto_repair_frequency_seconds", convertToString(TimeUnit.MINUTES.toSeconds(5))),
+ BATCHLOG_REPLAY_TIMEOUT_IN_MS("cassandra.batchlog.replay_timeout_in_ms"),
+ BATCH_COMMIT_LOG_SYNC_INTERVAL("cassandra.batch_commitlog_sync_interval_millis", "1000"),
/**
- * Indicates the temporary directory used by the Java Virtual Machine (JVM)
- * to create and store temporary files.
+ * When bootstraping how long to wait for schema versions to be seen.
*/
- JAVA_IO_TMPDIR ("java.io.tmpdir"),
-
+ BOOTSTRAP_SCHEMA_DELAY_MS("cassandra.schema_delay_ms"),
/**
- * Path from which to load native libraries.
- * Default is absolute path to lib directory.
+ * When bootstraping we wait for all schema versions found in gossip to be seen, and if not seen in time we fail
+ * the bootstrap; this property will avoid failing and allow bootstrap to continue if set to true.
*/
- JAVA_LIBRARY_PATH ("java.library.path"),
-
- JAVA_SECURITY_EGD ("java.security.egd"),
-
- /** Java Runtime Environment version */
- JAVA_VERSION ("java.version"),
-
- /** Java Virtual Machine implementation name */
- JAVA_VM_NAME ("java.vm.name"),
-
- /** Line separator ("\n" on UNIX). */
- LINE_SEPARATOR ("line.separator"),
-
- /** Java class path. */
- JAVA_CLASS_PATH ("java.class.path"),
-
- /** Operating system architecture. */
- OS_ARCH ("os.arch"),
-
- /** Operating system name. */
- OS_NAME ("os.name"),
-
- /** User's home directory. */
- USER_HOME ("user.home"),
-
- /** Platform word size sun.arch.data.model. Examples: "32", "64", "unknown"*/
- SUN_ARCH_DATA_MODEL ("sun.arch.data.model"),
-
- //JMX properties
+ BOOTSTRAP_SKIP_SCHEMA_CHECK("cassandra.skip_schema_check"),
+ BROADCAST_INTERVAL_MS("cassandra.broadcast_interval_ms", "60000"),
+ BTREE_BRANCH_SHIFT("cassandra.btree.branchshift", "5"),
+ BTREE_FAN_FACTOR("cassandra.btree.fanfactor"),
+ /** Represents the maximum size (in bytes) of a serialized mutation that can be cached **/
+ CACHEABLE_MUTATION_SIZE_LIMIT("cassandra.cacheable_mutation_size_limit_bytes", convertToString(1_000_000)),
+ CASSANDRA_ALLOW_SIMPLE_STRATEGY("cassandra.allow_simplestrategy"),
+ CASSANDRA_AVAILABLE_PROCESSORS("cassandra.available_processors"),
+ /** The classpath storage configuration file. */
+ CASSANDRA_CONFIG("cassandra.config", "cassandra.yaml"),
/**
- * The value of this property represents the host name string
- * that should be associated with remote stubs for locally created remote objects,
- * in order to allow clients to invoke methods on the remote object.
+ * The cassandra-foreground option will tell CassandraDaemon whether
+ * to close stdout/stderr, but it's up to us not to background.
+ * yes/null
*/
- JAVA_RMI_SERVER_HOSTNAME ("java.rmi.server.hostname"),
-
+ CASSANDRA_FOREGROUND("cassandra-foreground"),
+ CASSANDRA_JMX_AUTHORIZER("cassandra.jmx.authorizer"),
+ CASSANDRA_JMX_LOCAL_PORT("cassandra.jmx.local.port"),
+ CASSANDRA_JMX_REMOTE_LOGIN_CONFIG("cassandra.jmx.remote.login.config"),
+ /** Cassandra jmx remote and local port */
+ CASSANDRA_JMX_REMOTE_PORT("cassandra.jmx.remote.port"),
+ CASSANDRA_MAX_HINT_TTL("cassandra.maxHintTTL", convertToString(Integer.MAX_VALUE)),
+ CASSANDRA_MINIMUM_REPLICATION_FACTOR("cassandra.minimum_replication_factor"),
+ CASSANDRA_NETTY_USE_HEAP_ALLOCATOR("cassandra.netty_use_heap_allocator"),
+ CASSANDRA_PID_FILE("cassandra-pidfile"),
+ CASSANDRA_RACKDC_PROPERTIES("cassandra-rackdc.properties"),
+ CASSANDRA_SKIP_AUTOMATIC_UDT_FIX("cassandra.skipautomaticudtfix"),
+ CASSANDRA_STREAMING_DEBUG_STACKTRACE_LIMIT("cassandra.streaming.debug_stacktrace_limit", "2"),
+ CASSANDRA_UNSAFE_TIME_UUID_NODE("cassandra.unsafe.timeuuidnode"),
+ CASSANDRA_VERSION("cassandra.version"),
+ /** default heartbeating period is 1 minute */
+ CHECK_DATA_RESURRECTION_HEARTBEAT_PERIOD("check_data_resurrection_heartbeat_period_milli", "60000"),
+ CHRONICLE_ANNOUNCER_DISABLE("chronicle.announcer.disable"),
+ CLOCK_GLOBAL("cassandra.clock"),
+ CLOCK_MONOTONIC_APPROX("cassandra.monotonic_clock.approx"),
+ CLOCK_MONOTONIC_PRECISE("cassandra.monotonic_clock.precise"),
+ COMMITLOG_ALLOW_IGNORE_SYNC_CRC("cassandra.commitlog.allow_ignore_sync_crc"),
+ COMMITLOG_IGNORE_REPLAY_ERRORS("cassandra.commitlog.ignorereplayerrors"),
+ COMMITLOG_MAX_OUTSTANDING_REPLAY_BYTES("cassandra.commitlog_max_outstanding_replay_bytes", convertToString(1024 * 1024 * 64)),
+ COMMITLOG_MAX_OUTSTANDING_REPLAY_COUNT("cassandra.commitlog_max_outstanding_replay_count", "1024"),
+ COMMITLOG_STOP_ON_ERRORS("cassandra.commitlog.stop_on_errors"),
/**
- * If this value is true, object identifiers for remote objects exported by this VM will be generated by using
- * a cryptographically secure random number generator. The default value is false.
+ * Entities to replay mutations for upon commit log replay, property is meant to contain
+ * comma-separated entities which are either names of keyspaces or keyspaces and tables or their mix.
+ * Examples:
+ * just keyspaces
+ * -Dcassandra.replayList=ks1,ks2,ks3
+ * specific tables
+ * -Dcassandra.replayList=ks1.tb1,ks2.tb2
+ * mix of tables and keyspaces
+ * -Dcassandra.replayList=ks1.tb1,ks2
+ *
+ * If only keyspaces are specified, mutations for all tables in such keyspace will be replayed
+ * */
+ COMMIT_LOG_REPLAY_LIST("cassandra.replayList"),
+ /**
+ * This property indicates the location for the access file. If com.sun.management.jmxremote.authenticate is false,
+ * then this property and the password and access files, are ignored. Otherwise, the access file must exist and
+ * be in the valid format. If the access file is empty or nonexistent, then no access is allowed.
*/
- JAVA_RMI_SERVER_RANDOM_ID ("java.rmi.server.randomIDs"),
-
+ COM_SUN_MANAGEMENT_JMXREMOTE_ACCESS_FILE("com.sun.management.jmxremote.access.file"),
/**
* This property indicates whether password authentication for remote monitoring is
* enabled. By default it is disabled - com.sun.management.jmxremote.authenticate
*/
- COM_SUN_MANAGEMENT_JMXREMOTE_AUTHENTICATE ("com.sun.management.jmxremote.authenticate"),
-
+ COM_SUN_MANAGEMENT_JMXREMOTE_AUTHENTICATE("com.sun.management.jmxremote.authenticate"),
+ /** This property indicates the path to the password file - com.sun.management.jmxremote.password.file */
+ COM_SUN_MANAGEMENT_JMXREMOTE_PASSWORD_FILE("com.sun.management.jmxremote.password.file"),
+ /** Port number to enable JMX RMI connections - com.sun.management.jmxremote.port */
+ COM_SUN_MANAGEMENT_JMXREMOTE_PORT("com.sun.management.jmxremote.port"),
/**
* The port number to which the RMI connector will be bound - com.sun.management.jmxremote.rmi.port.
* An Integer object that represents the value of the second argument is returned
* if there is no port specified, if the port does not have the correct numeric format,
* or if the specified name is empty or null.
*/
- COM_SUN_MANAGEMENT_JMXREMOTE_RMI_PORT ("com.sun.management.jmxremote.rmi.port", "0"),
-
- /** Cassandra jmx remote and local port */
- CASSANDRA_JMX_REMOTE_PORT("cassandra.jmx.remote.port"),
- CASSANDRA_JMX_LOCAL_PORT("cassandra.jmx.local.port"),
-
+ COM_SUN_MANAGEMENT_JMXREMOTE_RMI_PORT("com.sun.management.jmxremote.rmi.port", "0"),
/** This property indicates whether SSL is enabled for monitoring remotely. Default is set to false. */
- COM_SUN_MANAGEMENT_JMXREMOTE_SSL ("com.sun.management.jmxremote.ssl"),
-
- /**
- * This property indicates whether SSL client authentication is enabled - com.sun.management.jmxremote.ssl.need.client.auth.
- * Default is set to false.
- */
- COM_SUN_MANAGEMENT_JMXREMOTE_SSL_NEED_CLIENT_AUTH ("com.sun.management.jmxremote.ssl.need.client.auth"),
-
- /**
- * This property indicates the location for the access file. If com.sun.management.jmxremote.authenticate is false,
- * then this property and the password and access files, are ignored. Otherwise, the access file must exist and
- * be in the valid format. If the access file is empty or nonexistent, then no access is allowed.
- */
- COM_SUN_MANAGEMENT_JMXREMOTE_ACCESS_FILE ("com.sun.management.jmxremote.access.file"),
-
- /** This property indicates the path to the password file - com.sun.management.jmxremote.password.file */
- COM_SUN_MANAGEMENT_JMXREMOTE_PASSWORD_FILE ("com.sun.management.jmxremote.password.file"),
-
- /** Port number to enable JMX RMI connections - com.sun.management.jmxremote.port */
- COM_SUN_MANAGEMENT_JMXREMOTE_PORT ("com.sun.management.jmxremote.port"),
-
- /**
- * A comma-delimited list of SSL/TLS protocol versions to enable.
- * Used in conjunction with com.sun.management.jmxremote.ssl - com.sun.management.jmxremote.ssl.enabled.protocols
- */
- COM_SUN_MANAGEMENT_JMXREMOTE_SSL_ENABLED_PROTOCOLS ("com.sun.management.jmxremote.ssl.enabled.protocols"),
-
+ COM_SUN_MANAGEMENT_JMXREMOTE_SSL("com.sun.management.jmxremote.ssl"),
/**
* A comma-delimited list of SSL/TLS cipher suites to enable.
* Used in conjunction with com.sun.management.jmxremote.ssl - com.sun.management.jmxremote.ssl.enabled.cipher.suites
*/
- COM_SUN_MANAGEMENT_JMXREMOTE_SSL_ENABLED_CIPHER_SUITES ("com.sun.management.jmxremote.ssl.enabled.cipher.suites"),
-
- /** mx4jaddress */
- MX4JADDRESS ("mx4jaddress"),
-
- /** mx4jport */
- MX4JPORT ("mx4jport"),
-
- RING_DELAY("cassandra.ring_delay_ms"),
-
+ COM_SUN_MANAGEMENT_JMXREMOTE_SSL_ENABLED_CIPHER_SUITES("com.sun.management.jmxremote.ssl.enabled.cipher.suites"),
/**
- * When bootstraping we wait for all schema versions found in gossip to be seen, and if not seen in time we fail
- * the bootstrap; this property will avoid failing and allow bootstrap to continue if set to true.
+ * A comma-delimited list of SSL/TLS protocol versions to enable.
+ * Used in conjunction with com.sun.management.jmxremote.ssl - com.sun.management.jmxremote.ssl.enabled.protocols
*/
- BOOTSTRAP_SKIP_SCHEMA_CHECK("cassandra.skip_schema_check"),
-
+ COM_SUN_MANAGEMENT_JMXREMOTE_SSL_ENABLED_PROTOCOLS("com.sun.management.jmxremote.ssl.enabled.protocols"),
/**
- * When bootstraping how long to wait for schema versions to be seen.
+ * This property indicates whether SSL client authentication is enabled - com.sun.management.jmxremote.ssl.need.client.auth.
+ * Default is set to false.
*/
- BOOTSTRAP_SCHEMA_DELAY_MS("cassandra.schema_delay_ms"),
-
+ COM_SUN_MANAGEMENT_JMXREMOTE_SSL_NEED_CLIENT_AUTH("com.sun.management.jmxremote.ssl.need.client.auth"),
+ /** 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"),
+ CONFIG_LOADER("cassandra.config.loader"),
+ CONSISTENT_DIRECTORY_LISTINGS("cassandra.consistent_directory_listings"),
+ CONSISTENT_RANGE_MOVEMENT("cassandra.consistent.rangemovement", "true"),
+ CONSISTENT_SIMULTANEOUS_MOVES_ALLOW("cassandra.consistent.simultaneousmoves.allow"),
+ CUSTOM_GUARDRAILS_CONFIG_PROVIDER_CLASS("cassandra.custom_guardrails_config_provider_class"),
+ CUSTOM_QUERY_HANDLER_CLASS("cassandra.custom_query_handler_class"),
+ CUSTOM_TRACING_CLASS("cassandra.custom_tracing_class"),
+ /** Controls the type of bufffer (heap/direct) used for shared scratch buffers */
+ DATA_OUTPUT_BUFFER_ALLOCATE_TYPE("cassandra.dob.allocate_type"),
+ DATA_OUTPUT_STREAM_PLUS_TEMP_BUFFER_SIZE("cassandra.data_output_stream_plus_temp_buffer_size", "8192"),
+ DECAYING_ESTIMATED_HISTOGRAM_RESERVOIR_STRIPE_COUNT("cassandra.dehr_stripe_count", "2"),
+ DEFAULT_PROVIDE_OVERLAPPING_TOMBSTONES("default.provide.overlapping.tombstones"),
+ /** determinism properties for testing */
+ DETERMINISM_SSTABLE_COMPRESSION_DEFAULT("cassandra.sstable_compression_default", "true"),
+ DETERMINISM_UNSAFE_UUID_NODE("cassandra.unsafe.deterministicuuidnode"),
+ DIAGNOSTIC_SNAPSHOT_INTERVAL_NANOS("cassandra.diagnostic_snapshot_interval_nanos", "60000000000"),
+ DISABLE_AUTH_CACHES_REMOTE_CONFIGURATION("cassandra.disable_auth_caches_remote_configuration"),
+ /** properties to disable certain behaviours for testing */
+ DISABLE_GOSSIP_ENDPOINT_REMOVAL("cassandra.gossip.disable_endpoint_removal"),
+ DISABLE_PAXOS_AUTO_REPAIRS("cassandra.disable_paxos_auto_repairs"),
+ DISABLE_PAXOS_STATE_FLUSH("cassandra.disable_paxos_state_flush"),
+ DISABLE_SSTABLE_ACTIVITY_TRACKING("cassandra.sstable_activity_tracking", "true"),
+ DISABLE_STCS_IN_L0("cassandra.disable_stcs_in_l0"),
+ DISABLE_TCACTIVE_OPENSSL("cassandra.disable_tcactive_openssl"),
+ /** property for the rate of the scheduled task that monitors disk usage */
+ DISK_USAGE_MONITOR_INTERVAL_MS("cassandra.disk_usage.monitor_interval_ms", convertToString(TimeUnit.SECONDS.toMillis(30))),
+ /** 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", convertToString(TimeUnit.MINUTES.toMillis(30))),
+ DOB_DOUBLING_THRESHOLD_MB("cassandra.DOB_DOUBLING_THRESHOLD_MB", "64"),
+ DOB_MAX_RECYCLE_BYTES("cassandra.dob_max_recycle_bytes", convertToString(1024 * 1024)),
/**
- * Whether we reset any found data from previously run bootstraps.
+ * When draining, how long to wait for mutating executors to shutdown.
*/
- RESET_BOOTSTRAP_PROGRESS("cassandra.reset_bootstrap_progress"),
-
+ DRAIN_EXECUTOR_TIMEOUT_MS("cassandra.drain_executor_timeout_ms", convertToString(TimeUnit.MINUTES.toMillis(5))),
+ DROP_OVERSIZED_READ_REPAIR_MUTATIONS("cassandra.drop_oversized_readrepair_mutations"),
+ DTEST_API_LOG_TOPOLOGY("cassandra.dtest.api.log.topology"),
+ ENABLE_DC_LOCAL_COMMIT("cassandra.enable_dc_local_commit", "true"),
/**
- * When draining, how long to wait for mutating executors to shutdown.
+ * Whether {@link org.apache.cassandra.db.ConsistencyLevel#NODE_LOCAL} should be allowed.
*/
- DRAIN_EXECUTOR_TIMEOUT_MS("cassandra.drain_executor_timeout_ms", String.valueOf(TimeUnit.MINUTES.toMillis(5))),
-
+ ENABLE_NODELOCAL_QUERIES("cassandra.enable_nodelocal_queries"),
+ EXPIRATION_DATE_OVERFLOW_POLICY("cassandra.expiration_date_overflow_policy"),
+ EXPIRATION_OVERFLOW_WARNING_INTERVAL_MINUTES("cassandra.expiration_overflow_warning_interval_minutes", "5"),
+ FAILURE_LOGGING_INTERVAL_SECONDS("cassandra.request_failure_log_interval_seconds", "60"),
+ FD_INITIAL_VALUE_MS("cassandra.fd_initial_value_ms"),
+ FD_MAX_INTERVAL_MS("cassandra.fd_max_interval_ms"),
+ FILE_CACHE_ENABLED("cassandra.file_cache_enabled"),
+ /** @deprecated should be removed in favor of enable flag of relevant startup check (FileSystemOwnershipCheck) */
+ @Deprecated
+ FILE_SYSTEM_CHECK_ENABLE("cassandra.enable_fs_ownership_check"),
+ /** @deprecated should be removed in favor of flags in relevant startup check (FileSystemOwnershipCheck) */
+ @Deprecated
+ 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) */
+ @Deprecated
+ FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN(FileSystemOwnershipCheck.FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN),
+ FORCE_DEFAULT_INDEXING_PAGE_SIZE("cassandra.force_default_indexing_page_size"),
+ /** 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"),
+ FORCE_PAXOS_STATE_REBUILD("cassandra.force_paxos_state_rebuild"),
+ GIT_SHA("cassandra.gitSHA"),
/**
* Gossip quarantine delay is used while evaluating membership changes and should only be changed with extreme care.
*/
GOSSIPER_QUARANTINE_DELAY("cassandra.gossip_quarantine_delay_ms"),
-
GOSSIPER_SKIP_WAITING_TO_SETTLE("cassandra.skip_wait_for_gossip_to_settle", "-1"),
-
- IGNORED_SCHEMA_CHECK_VERSIONS("cassandra.skip_schema_check_for_versions"),
-
+ GOSSIP_DISABLE_THREAD_VALIDATION("cassandra.gossip.disable_thread_validation"),
IGNORED_SCHEMA_CHECK_ENDPOINTS("cassandra.skip_schema_check_for_endpoints"),
-
- SHUTDOWN_ANNOUNCE_DELAY_IN_MS("cassandra.shutdown_announce_in_ms", "2000"),
-
+ IGNORED_SCHEMA_CHECK_VERSIONS("cassandra.skip_schema_check_for_versions"),
+ IGNORE_CORRUPTED_SCHEMA_TABLES("cassandra.ignore_corrupted_schema_tables"),
+ /** @deprecated should be removed in favor of enable flag of relevant startup check (checkDatacenter) */
+ @Deprecated
+ IGNORE_DC("cassandra.ignore_dc"),
+ IGNORE_DYNAMIC_SNITCH_SEVERITY("cassandra.ignore_dynamic_snitch_severity"),
+ IGNORE_MISSING_NATIVE_FILE_HINTS("cassandra.require_native_file_hints"),
+ /** @deprecated should be removed in favor of enable flag of relevant startup check (checkRack) */
+ @Deprecated
+ IGNORE_RACK("cassandra.ignore_rack"),
+ INDEX_SUMMARY_EXPECTED_KEY_SIZE("cassandra.index_summary_expected_key_size", "64"),
+ INITIAL_TOKEN("cassandra.initial_token"),
+ INTERNODE_EVENT_THREADS("cassandra.internode-event-threads"),
+ IO_NETTY_EVENTLOOP_THREADS("io.netty.eventLoopThreads"),
+ IO_NETTY_TRANSPORT_ESTIMATE_SIZE_ON_SUBMIT("io.netty.transport.estimateSizeOnSubmit"),
+ JAVAX_RMI_SSL_CLIENT_ENABLED_CIPHER_SUITES("javax.rmi.ssl.client.enabledCipherSuites"),
+ JAVAX_RMI_SSL_CLIENT_ENABLED_PROTOCOLS("javax.rmi.ssl.client.enabledProtocols"),
+ /** Java class path. */
+ JAVA_CLASS_PATH("java.class.path"),
+ JAVA_HOME("java.home"),
/**
- * 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.
+ * Indicates the temporary directory used by the Java Virtual Machine (JVM)
+ * to create and store temporary files.
*/
- REPLACEMENT_ALLOW_EMPTY("cassandra.allow_empty_replace_address", "true"),
-
+ JAVA_IO_TMPDIR("java.io.tmpdir"),
+ /**
+ * Path from which to load native libraries.
+ * Default is absolute path to lib directory.
+ */
+ JAVA_LIBRARY_PATH("java.library.path"),
+ /**
+ * The value of this property represents the host name string
+ * that should be associated with remote stubs for locally created remote objects,
+ * in order to allow clients to invoke methods on the remote object.
+ */
+ JAVA_RMI_SERVER_HOSTNAME("java.rmi.server.hostname"),
+ /**
+ * If this value is true, object identifiers for remote objects exported by this VM will be generated by using
+ * a cryptographically secure random number generator. The default value is false.
+ */
+ JAVA_RMI_SERVER_RANDOM_ID("java.rmi.server.randomIDs"),
+ JAVA_SECURITY_AUTH_LOGIN_CONFIG("java.security.auth.login.config"),
+ JAVA_SECURITY_EGD("java.security.egd"),
+ /** Java Runtime Environment version */
+ JAVA_VERSION("java.version"),
+ /** Java Virtual Machine implementation name */
+ JAVA_VM_NAME("java.vm.name"),
+ JOIN_RING("cassandra.join_ring", "true"),
+ /** startup checks properties */
+ LIBJEMALLOC("cassandra.libjemalloc"),
+ /** Line separator ("\n" on UNIX). */
+ LINE_SEPARATOR("line.separator"),
+ /** Load persistence ring state. Default value is {@code true}. */
+ LOAD_RING_STATE("cassandra.load_ring_state", "true"),
+ LOG4J2_DISABLE_JMX("log4j2.disableJmx"),
+ LOG4J2_DISABLE_JMX_LEGACY("log4j2.disable.jmx"),
+ LOG4J_SHUTDOWN_HOOK_ENABLED("log4j.shutdownHookEnabled"),
+ LOGBACK_CONFIGURATION_FILE("logback.configurationFile"),
+ /** Maximum number of rows in system_views.logs table */
+ LOGS_VIRTUAL_TABLE_MAX_ROWS("cassandra.virtual.logs.max.rows", convertToString(LogMessagesTable.LOGS_VIRTUAL_TABLE_DEFAULT_ROWS)),
/**
* Directory where Cassandra puts its logs, defaults to "." which is current directory.
*/
LOG_DIR("cassandra.logdir", "."),
-
/**
* Directory where Cassandra persists logs from audit logging. If this property is not set, the audit log framework
* 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"),
-
- 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"),
-
- /** Represents the maximum size (in bytes) of a serialized mutation that can be cached **/
- CACHEABLE_MUTATION_SIZE_LIMIT("cassandra.cacheable_mutation_size_limit_bytes", Long.toString(1_000_000)),
-
- 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"),
+ METRICS_REPORTER_CONFIG_FILE("cassandra.metricsReporterConfigFile"),
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"),
-
- /** 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"),
-
- // 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"),
-
- // 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"),
-
- // 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"),
-
- /** 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))),
-
- /** 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))),
-
- /** Controls the type of bufffer (heap/direct) used for shared scratch buffers */
- DATA_OUTPUT_BUFFER_ALLOCATE_TYPE("cassandra.dob.allocate_type"),
-
- // 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"),
-
- // 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"),
-
- // Maximum number of rows in system_views.logs table
- LOGS_VIRTUAL_TABLE_MAX_ROWS("cassandra.virtual.logs.max.rows", Integer.toString(LogMessagesTable.LOGS_VIRTUAL_TABLE_DEFAULT_ROWS)),
-
- /** 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"),
-
- // commit log relevant properties
+ 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"),
+ RELOCATED_SHADED_IO_NETTY_TRANSPORT_NONATIVE("relocated.shaded.io.netty.transport.noNative"),
+ 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)))),
/**
- * Entities to replay mutations for upon commit log replay, property is meant to contain
- * comma-separated entities which are either names of keyspaces or keyspaces and tables or their mix.
- * Examples:
- * just keyspaces
- * -Dcassandra.replayList=ks1,ks2,ks3
- * specific tables
- * -Dcassandra.replayList=ks1.tb1,ks2.tb2
- * mix of tables and keyspaces
- * -Dcassandra.replayList=ks1.tb1,ks2
- *
- * If only keyspaces are specified, mutations for all tables in such keyspace will be replayed
- * */
- COMMIT_LOG_REPLAY_LIST("cassandra.replayList", null),
-
+ * 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"),
+ /**
+ * Whether we reset any found data from previously run bootstraps.
+ */
+ RESET_BOOTSTRAP_PROGRESS("cassandra.reset_bootstrap_progress"),
+ RING_DELAY("cassandra.ring_delay_ms"),
+ /** Defines how often schema definitions are pulled from the other nodes */
+ 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"),
/**
* 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.
*/
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"),
+ 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"),
-
-
- /** 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"),
-
+ 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", ""),
+ 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_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);}. */
- FLUSH_LOCAL_SCHEMA_CHANGES("cassandra.test.flush_local_schema_changes", "true"),
+ TEST_FLUSH_LOCAL_SCHEMA_CHANGES("cassandra.test.flush_local_schema_changes", "true"),
+ TEST_IGNORE_SIGAR("cassandra.test.ignore_sigar"),
+ 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_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_SSTABLE_FORMAT_DEVELOPMENT("cassandra.test.sstableformatdevelopment"),
+ 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"),
+ 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");
- TOMBSTONE_HISTOGRAM_TTL_ROUND_SECONDS("cassandra.streaminghistogram.roundseconds", "60"),
- ;
+ 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)
{
@@ -436,13 +580,32 @@ public enum CassandraRelevantProperties
return converter.convert(value);
}
+ public static String convertToString(@Nullable Object value)
+ {
+ if (value == null)
+ return null;
+ if (value instanceof String)
+ return (String) value;
+ if (value instanceof Boolean)
+ return Boolean.toString((Boolean) value);
+ if (value instanceof Long)
+ return Long.toString((Long) value);
+ if (value instanceof Integer)
+ return Integer.toString((Integer) value);
+ if (value instanceof Double)
+ return Double.toString((Double) value);
+ if (value instanceof Float)
+ return Float.toString((Float) value);
+ throw new IllegalArgumentException("Unknown type " + value.getClass());
+ }
+
/**
* Sets the value into system properties.
* @param value to set
*/
- public void setString(String value)
+ public String setString(String value)
{
- System.setProperty(key, value);
+ return System.setProperty(key, value);
}
/**
@@ -472,10 +635,12 @@ public enum CassandraRelevantProperties
/**
* Sets the value into system properties.
* @param value to set
+ * @return Previous value if it exists.
*/
- public void setBoolean(boolean value)
+ public Boolean setBoolean(boolean value)
{
- System.setProperty(key, Boolean.toString(value));
+ String prev = System.setProperty(key, convertToString(value));
+ return prev == null ? null : BOOLEAN_CONVERTER.convert(prev);
}
/**
@@ -488,28 +653,43 @@ public enum CassandraRelevantProperties
/**
* Gets the value of a system property as a int.
- * @return system property int value if it exists, defaultValue otherwise.
+ * @return System property value if it exists, defaultValue otherwise. Throws an exception if no default value is set.
*/
public int getInt()
{
String value = System.getProperty(key);
-
+ if (value == null && defaultVal == null)
+ throw new ConfigurationException("Missing property value or default value is not set: " + key);
return INTEGER_CONVERTER.convert(value == null ? defaultVal : value);
}
/**
- * Gets the value of a system property as a int.
- * @return system property int value if it exists, defaultValue otherwise.
+ * Gets the value of a system property as a long.
+ * @return System property value if it exists, defaultValue otherwise. Throws an exception if no default value is set.
*/
public long getLong()
{
String value = System.getProperty(key);
-
+ if (value == null && defaultVal == null)
+ throw new ConfigurationException("Missing property value or default value is not set: " + key);
return LONG_CONVERTER.convert(value == null ? defaultVal : value);
}
/**
- * Gets the value of a system property as a int.
+ * Gets the value of a system property as a long.
+ * @return system property long value if it exists, defaultValue otherwise.
+ */
+ public long getLong(long overrideDefaultValue)
+ {
+ String value = System.getProperty(key);
+ if (value == null)
+ return overrideDefaultValue;
+
+ return LONG_CONVERTER.convert(value);
+ }
+
+ /**
+ * Gets the value of a system property as an int.
* @return system property int value if it exists, overrideDefaultValue otherwise.
*/
public int getInt(int overrideDefaultValue)
@@ -524,19 +704,23 @@ public enum CassandraRelevantProperties
/**
* Sets the value into system properties.
* @param value to set
+ * @return Previous value or null if it did not have one.
*/
- public void setInt(int value)
+ public Integer setInt(int value)
{
- System.setProperty(key, Integer.toString(value));
+ String prev = System.setProperty(key, convertToString(value));
+ return prev == null ? null : INTEGER_CONVERTER.convert(prev);
}
/**
* Sets the value into system properties.
* @param value to set
+ * @return Previous value or null if it did not have one.
*/
- public void setLong(long value)
+ public Long setLong(long value)
{
- System.setProperty(key, Long.toString(value));
+ String prev = System.setProperty(key, convertToString(value));
+ return prev == null ? null : LONG_CONVERTER.convert(prev);
}
/**
@@ -546,7 +730,8 @@ public enum CassandraRelevantProperties
* @param <T> type
* @return enum value
*/
- public <T extends Enum<T>> T getEnum(T defaultValue) {
+ public <T extends Enum<T>> T getEnum(T defaultValue)
+ {
return getEnum(true, defaultValue);
}
@@ -558,7 +743,8 @@ public enum CassandraRelevantProperties
* @param <T> type
* @return enum value
*/
- public <T extends Enum<T>> T getEnum(boolean toUppercase, T defaultValue) {
+ public <T extends Enum<T>> T getEnum(boolean toUppercase, T defaultValue)
+ {
String value = System.getProperty(key);
if (value == null)
return defaultValue;
@@ -584,7 +770,8 @@ public enum CassandraRelevantProperties
* Sets the value into system properties.
* @param value to set
*/
- public void setEnum(Enum<?> value) {
+ public void setEnum(Enum<?> value)
+ {
System.setProperty(key, value.name());
}
@@ -619,7 +806,7 @@ public enum CassandraRelevantProperties
catch (NumberFormatException e)
{
throw new ConfigurationException(String.format("Invalid value for system property: " +
- "expected integer value but got '%s'", value));
+ "expected long value but got '%s'", value));
}
};
diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java
index 3dac595041..e07ab98631 100644
--- a/src/java/org/apache/cassandra/config/Config.java
+++ b/src/java/org/apache/cassandra/config/Config.java
@@ -44,6 +44,11 @@ import org.apache.cassandra.fql.FullQueryLoggerOptions;
import org.apache.cassandra.io.sstable.format.big.BigFormat;
import org.apache.cassandra.service.StartupChecks.StartupCheckType;
+import static org.apache.cassandra.config.CassandraRelevantProperties.AUTOCOMPACTION_ON_STARTUP_ENABLED;
+import static org.apache.cassandra.config.CassandraRelevantProperties.FILE_CACHE_ENABLED;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SKIP_PAXOS_REPAIR_ON_TOPOLOGY_CHANGE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SKIP_PAXOS_REPAIR_ON_TOPOLOGY_CHANGE_KEYSPACES;
+
/**
* A class that contains configuration properties for the cassandra node it runs within.
*
@@ -487,7 +492,7 @@ public class Config
@Replaces(oldName = "file_cache_size_in_mb", converter = Converters.MEBIBYTES_DATA_STORAGE_INT, deprecated = true)
public DataStorageSpec.IntMebibytesBound file_cache_size;
- public boolean file_cache_enabled = Boolean.getBoolean("cassandra.file_cache_enabled");
+ public boolean file_cache_enabled = FILE_CACHE_ENABLED.getBoolean();
/**
* Because of the current {@link org.apache.cassandra.utils.memory.BufferPool} slab sizes of 64 KiB, we
@@ -803,7 +808,7 @@ public class Config
public volatile boolean check_for_duplicate_rows_during_reads = true;
public volatile boolean check_for_duplicate_rows_during_compaction = true;
- public boolean autocompaction_on_startup_enabled = Boolean.parseBoolean(System.getProperty("cassandra.autocompaction_on_startup_enabled", "true"));
+ public boolean autocompaction_on_startup_enabled = AUTOCOMPACTION_ON_STARTUP_ENABLED.getBoolean();
// see CASSANDRA-3200 / CASSANDRA-16274
public volatile boolean auto_optimise_inc_repair_streams = false;
@@ -989,7 +994,7 @@ public class Config
* rare operation circumstances e.g. where for some reason the repair is impossible to perform (e.g. too few replicas)
* and an unsafe topology change must be made
*/
- public volatile boolean skip_paxos_repair_on_topology_change = Boolean.getBoolean("cassandra.skip_paxos_repair_on_topology_change");
+ public volatile boolean skip_paxos_repair_on_topology_change = SKIP_PAXOS_REPAIR_ON_TOPOLOGY_CHANGE.getBoolean();
/**
* A safety margin when purging paxos state information that has been safely replicated to a quorum.
@@ -1050,7 +1055,7 @@ public class Config
/**
* If necessary for operational purposes, permit certain keyspaces to be ignored for paxos topology repairs
*/
- public volatile Set<String> skip_paxos_repair_on_topology_change_keyspaces = splitCommaDelimited(System.getProperty("cassandra.skip_paxos_repair_on_topology_change_keyspaces"));
+ public volatile Set<String> skip_paxos_repair_on_topology_change_keyspaces = splitCommaDelimited(SKIP_PAXOS_REPAIR_ON_TOPOLOGY_CHANGE_KEYSPACES.getString());
/**
* See {@link org.apache.cassandra.service.paxos.ContentionStrategy}
diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index 5dd79a5679..f6f59d0f40 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -101,9 +101,29 @@ import org.apache.cassandra.service.CacheService.CacheType;
import org.apache.cassandra.service.paxos.Paxos;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOCATE_TOKENS_FOR_KEYSPACE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_UNLIMITED_CONCURRENT_VALIDATIONS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.AUTO_BOOTSTRAP;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CONFIG_LOADER;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_STCS_IN_L0;
+import static org.apache.cassandra.config.CassandraRelevantProperties.INITIAL_TOKEN;
+import static org.apache.cassandra.config.CassandraRelevantProperties.IO_NETTY_TRANSPORT_ESTIMATE_SIZE_ON_SUBMIT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.NATIVE_TRANSPORT_PORT;
import static org.apache.cassandra.config.CassandraRelevantProperties.OS_ARCH;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PARTITIONER;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPLACE_ADDRESS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPLACE_ADDRESS_FIRST_BOOT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPLACE_NODE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPLACE_TOKEN;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SEARCH_CONCURRENCY_FACTOR;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SSL_STORAGE_PORT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.STORAGE_DIR;
+import static org.apache.cassandra.config.CassandraRelevantProperties.STORAGE_PORT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_STRICT_RUNTIME_CHECKS;
import static org.apache.cassandra.config.CassandraRelevantProperties.SUN_ARCH_DATA_MODEL;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_FAIL_MV_LOCKS_COUNT;
import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_JVM_DTEST_DISABLE_SSL;
+import static org.apache.cassandra.config.CassandraRelevantProperties.UNSAFE_SYSTEM;
import static org.apache.cassandra.config.DataRateSpec.DataRateUnit.BYTES_PER_SECOND;
import static org.apache.cassandra.config.DataRateSpec.DataRateUnit.MEBIBYTES_PER_SECOND;
import static org.apache.cassandra.config.DataStorageSpec.DataStorageUnit.MEBIBYTES;
@@ -117,7 +137,7 @@ public class DatabaseDescriptor
{
// This static block covers most usages
FBUtilities.preventIllegalAccessWarnings();
- System.setProperty("io.netty.transport.estimateSizeOnSubmit", "false");
+ IO_NETTY_TRANSPORT_ESTIMATE_SIZE_ON_SUBMIT.setBoolean(false);
}
private static final Logger logger = LoggerFactory.getLogger(DatabaseDescriptor.class);
@@ -175,16 +195,16 @@ public class DatabaseDescriptor
private static boolean toolInitialized;
private static boolean daemonInitialized;
- private static final int searchConcurrencyFactor = Integer.parseInt(System.getProperty(Config.PROPERTY_PREFIX + "search_concurrency_factor", "1"));
+ private static final int searchConcurrencyFactor = SEARCH_CONCURRENCY_FACTOR.getInt();
private static DurationSpec.IntSecondsBound autoSnapshoTtl;
- private static volatile boolean disableSTCSInL0 = Boolean.getBoolean(Config.PROPERTY_PREFIX + "disable_stcs_in_l0");
- private static final boolean unsafeSystem = Boolean.getBoolean(Config.PROPERTY_PREFIX + "unsafesystem");
+ private static volatile boolean disableSTCSInL0 = DISABLE_STCS_IN_L0.getBoolean();
+ private static final boolean unsafeSystem = UNSAFE_SYSTEM.getBoolean();
// turns some warnings into exceptions for testing
- private static final boolean strictRuntimeChecks = Boolean.getBoolean("cassandra.strict.runtime.checks");
+ private static final boolean strictRuntimeChecks = TEST_STRICT_RUNTIME_CHECKS.getBoolean();
- public static volatile boolean allowUnlimitedConcurrentValidations = Boolean.getBoolean("cassandra.allow_unlimited_concurrent_validations");
+ public static volatile boolean allowUnlimitedConcurrentValidations = ALLOW_UNLIMITED_CONCURRENT_VALIDATIONS.getBoolean();
/** The configuration for guardrails. */
private static GuardrailsOptions guardrails;
@@ -344,7 +364,7 @@ public class DatabaseDescriptor
if (Config.getOverrideLoadConfig() != null)
return Config.getOverrideLoadConfig().get();
- String loaderClass = System.getProperty(Config.PROPERTY_PREFIX + "config.loader");
+ String loaderClass = CONFIG_LOADER.getString();
ConfigurationLoader loader = loaderClass == null
? new YamlConfigurationLoader()
: FBUtilities.construct(loaderClass, "configuration loading");
@@ -509,7 +529,7 @@ public class DatabaseDescriptor
throw new ConfigurationException("concurrent_reads must be at least 2, but was " + conf.concurrent_reads, false);
}
- if (conf.concurrent_writes < 2 && System.getProperty("cassandra.test.fail_mv_locks_count", "").isEmpty())
+ if (conf.concurrent_writes < 2 && TEST_FAIL_MV_LOCKS_COUNT.getString("").isEmpty())
{
throw new ConfigurationException("concurrent_writes must be at least 2, but was " + conf.concurrent_writes, false);
}
@@ -981,7 +1001,7 @@ public class DatabaseDescriptor
else if (config.concurrent_validations > config.concurrent_compactors && !allowUnlimitedConcurrentValidations)
{
throw new ConfigurationException("To set concurrent_validations > concurrent_compactors, " +
- "set the system property cassandra.allow_unlimited_concurrent_validations=true");
+ "set the system property -D" + ALLOW_UNLIMITED_CONCURRENT_VALIDATIONS.getKey() + "=true");
}
}
@@ -1042,9 +1062,9 @@ public class DatabaseDescriptor
private static String storagedir(String errMsgType)
{
- String storagedir = System.getProperty(Config.PROPERTY_PREFIX + "storagedir", null);
+ String storagedir = STORAGE_DIR.getString();
if (storagedir == null)
- throw new ConfigurationException(errMsgType + " is missing and -Dcassandra.storagedir is not set", false);
+ throw new ConfigurationException(errMsgType + " is missing and " + STORAGE_DIR.getKey() + " system property is not set", false);
return storagedir;
}
@@ -1339,7 +1359,7 @@ public class DatabaseDescriptor
String name = conf.partitioner;
try
{
- name = System.getProperty(Config.PROPERTY_PREFIX + "partitioner", conf.partitioner);
+ name = PARTITIONER.getString(conf.partitioner);
partitioner = FBUtilities.newPartitioner(name);
}
catch (Exception e)
@@ -1805,12 +1825,12 @@ public class DatabaseDescriptor
public static Collection<String> getInitialTokens()
{
- return tokensFromString(System.getProperty(Config.PROPERTY_PREFIX + "initial_token", conf.initial_token));
+ return tokensFromString(INITIAL_TOKEN.getString(conf.initial_token));
}
public static String getAllocateTokensForKeyspace()
{
- return System.getProperty(Config.PROPERTY_PREFIX + "allocate_tokens_for_keyspace", conf.allocate_tokens_for_keyspace);
+ return ALLOCATE_TOKENS_FOR_KEYSPACE.getString(conf.allocate_tokens_for_keyspace);
}
public static Integer getAllocateTokensForLocalRf()
@@ -1836,10 +1856,14 @@ public class DatabaseDescriptor
{
try
{
- if (System.getProperty(Config.PROPERTY_PREFIX + "replace_address", null) != null)
- return InetAddressAndPort.getByName(System.getProperty(Config.PROPERTY_PREFIX + "replace_address", null));
- else if (System.getProperty(Config.PROPERTY_PREFIX + "replace_address_first_boot", null) != null)
- return InetAddressAndPort.getByName(System.getProperty(Config.PROPERTY_PREFIX + "replace_address_first_boot", null));
+ String replaceAddress = REPLACE_ADDRESS.getString();
+ if (replaceAddress != null)
+ return InetAddressAndPort.getByName(replaceAddress);
+
+ String replaceAddressFirsstBoot = REPLACE_ADDRESS_FIRST_BOOT.getString();
+ if (replaceAddressFirsstBoot != null)
+ return InetAddressAndPort.getByName(replaceAddressFirsstBoot);
+
return null;
}
catch (UnknownHostException e)
@@ -1850,14 +1874,14 @@ public class DatabaseDescriptor
public static Collection<String> getReplaceTokens()
{
- return tokensFromString(System.getProperty(Config.PROPERTY_PREFIX + "replace_token", null));
+ return tokensFromString(REPLACE_TOKEN.getString());
}
public static UUID getReplaceNode()
{
try
{
- return UUID.fromString(System.getProperty(Config.PROPERTY_PREFIX + "replace_node", null));
+ return UUID.fromString(REPLACE_NODE.getString());
} catch (NullPointerException e)
{
return null;
@@ -1871,12 +1895,12 @@ public class DatabaseDescriptor
public static int getStoragePort()
{
- return Integer.parseInt(System.getProperty(Config.PROPERTY_PREFIX + "storage_port", Integer.toString(conf.storage_port)));
+ return STORAGE_PORT.getInt(conf.storage_port);
}
public static int getSSLStoragePort()
{
- return Integer.parseInt(System.getProperty(Config.PROPERTY_PREFIX + "ssl_storage_port", Integer.toString(conf.ssl_storage_port)));
+ return SSL_STORAGE_PORT.getInt(conf.ssl_storage_port);
}
public static long nativeTransportIdleTimeout()
@@ -2683,7 +2707,7 @@ public class DatabaseDescriptor
*/
public static int getNativeTransportPort()
{
- return Integer.parseInt(System.getProperty(Config.PROPERTY_PREFIX + "native_transport_port", Integer.toString(conf.native_transport_port)));
+ return NATIVE_TRANSPORT_PORT.getInt(conf.native_transport_port);
}
@VisibleForTesting
@@ -3086,7 +3110,7 @@ public class DatabaseDescriptor
public static boolean isAutoBootstrap()
{
- return Boolean.parseBoolean(System.getProperty(Config.PROPERTY_PREFIX + "auto_bootstrap", Boolean.toString(conf.auto_bootstrap)));
+ return AUTO_BOOTSTRAP.getBoolean(conf.auto_bootstrap);
}
public static void setHintedHandoffEnabled(boolean hintedHandoffEnabled)
diff --git a/src/java/org/apache/cassandra/config/YamlConfigurationLoader.java b/src/java/org/apache/cassandra/config/YamlConfigurationLoader.java
index 528accdb74..cf5e52f5dc 100644
--- a/src/java/org/apache/cassandra/config/YamlConfigurationLoader.java
+++ b/src/java/org/apache/cassandra/config/YamlConfigurationLoader.java
@@ -29,7 +29,6 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-
import javax.annotation.Nullable;
import com.google.common.annotations.VisibleForTesting;
@@ -46,8 +45,8 @@ import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.TypeDescription;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.composer.Composer;
-import org.yaml.snakeyaml.constructor.SafeConstructor;
import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor;
+import org.yaml.snakeyaml.constructor.SafeConstructor;
import org.yaml.snakeyaml.error.YAMLException;
import org.yaml.snakeyaml.introspector.MissingProperty;
import org.yaml.snakeyaml.introspector.Property;
@@ -56,13 +55,13 @@ import org.yaml.snakeyaml.nodes.Node;
import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_DUPLICATE_CONFIG_KEYS;
import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_NEW_OLD_CONFIG_KEYS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
import static org.apache.cassandra.config.Replacements.getNameReplacements;
public class YamlConfigurationLoader implements ConfigurationLoader
{
private static final Logger logger = LoggerFactory.getLogger(YamlConfigurationLoader.class);
- private final static String DEFAULT_CONFIGURATION = "cassandra.yaml";
/**
* This is related to {@link Config#PROPERTY_PREFIX} but is different to make sure Config properties updated via
* system properties do not conflict with other system properties; the name "settings" matches system_views.settings.
@@ -74,9 +73,7 @@ public class YamlConfigurationLoader implements ConfigurationLoader
*/
private static URL getStorageConfigURL() throws ConfigurationException
{
- String configUrl = System.getProperty("cassandra.config");
- if (configUrl == null)
- configUrl = DEFAULT_CONFIGURATION;
+ String configUrl = CASSANDRA_CONFIG.getString();
URL url;
try
diff --git a/src/java/org/apache/cassandra/cql3/CustomPayloadMirroringQueryHandler.java b/src/java/org/apache/cassandra/cql3/CustomPayloadMirroringQueryHandler.java
index 13aa7f5149..af765d02c5 100644
--- a/src/java/org/apache/cassandra/cql3/CustomPayloadMirroringQueryHandler.java
+++ b/src/java/org/apache/cassandra/cql3/CustomPayloadMirroringQueryHandler.java
@@ -20,6 +20,7 @@ package org.apache.cassandra.cql3;
import java.nio.ByteBuffer;
import java.util.Map;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.cql3.statements.BatchStatement;
import org.apache.cassandra.service.ClientState;
import org.apache.cassandra.service.QueryState;
@@ -29,7 +30,7 @@ import org.apache.cassandra.utils.MD5Digest;
/**
* Custom QueryHandler that sends custom request payloads back with the result.
* Used to facilitate testing.
- * Enabled with system property cassandra.custom_query_handler_class.
+ * Enabled with system property {@link CassandraRelevantProperties#CUSTOM_QUERY_HANDLER_CLASS}.
*/
public class CustomPayloadMirroringQueryHandler implements QueryHandler
{
diff --git a/src/java/org/apache/cassandra/cql3/functions/UDFExecutorService.java b/src/java/org/apache/cassandra/cql3/functions/UDFExecutorService.java
index 3b7631faab..19705451b7 100644
--- a/src/java/org/apache/cassandra/cql3/functions/UDFExecutorService.java
+++ b/src/java/org/apache/cassandra/cql3/functions/UDFExecutorService.java
@@ -22,6 +22,7 @@ import org.apache.cassandra.concurrent.NamedThreadFactory;
import org.apache.cassandra.concurrent.ThreadPoolExecutorBase;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.UDF_EXECUTOR_THREAD_KEEPALIVE_MS;
import static org.apache.cassandra.utils.FBUtilities.getAvailableProcessors;
import static org.apache.cassandra.utils.concurrent.BlockingQueues.newBlockingQueue;
@@ -33,7 +34,7 @@ import static org.apache.cassandra.utils.concurrent.BlockingQueues.newBlockingQu
*/
final class UDFExecutorService extends ThreadPoolExecutorBase
{
- private static final int KEEPALIVE = Integer.getInteger("cassandra.udf_executor_thread_keepalive_ms", 30000);
+ private static final int KEEPALIVE = UDF_EXECUTOR_THREAD_KEEPALIVE_MS.getInt();
public UDFExecutorService(NamedThreadFactory threadFactory, String jmxPath)
{
diff --git a/src/java/org/apache/cassandra/cql3/statements/schema/AlterKeyspaceStatement.java b/src/java/org/apache/cassandra/cql3/statements/schema/AlterKeyspaceStatement.java
index dec0655e74..b8a27af3ba 100644
--- a/src/java/org/apache/cassandra/cql3/statements/schema/AlterKeyspaceStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/schema/AlterKeyspaceStatement.java
@@ -26,7 +26,6 @@ import java.util.stream.Stream;
import org.apache.cassandra.audit.AuditLogContext;
import org.apache.cassandra.audit.AuditLogEntryType;
import org.apache.cassandra.auth.Permission;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.cql3.CQLStatement;
import org.apache.cassandra.db.ColumnFamilyStore;
@@ -48,10 +47,13 @@ import org.apache.cassandra.transport.Event.SchemaChange;
import org.apache.cassandra.transport.Event.SchemaChange.Change;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_ALTER_RF_DURING_RANGE_MOVEMENT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_UNSAFE_TRANSIENT_CHANGES;
+
public final class AlterKeyspaceStatement extends AlterSchemaStatement
{
- private static final boolean allow_alter_rf_during_range_movement = Boolean.getBoolean(Config.PROPERTY_PREFIX + "allow_alter_rf_during_range_movement");
- private static final boolean allow_unsafe_transient_changes = Boolean.getBoolean(Config.PROPERTY_PREFIX + "allow_unsafe_transient_changes");
+ private static final boolean allow_alter_rf_during_range_movement = ALLOW_ALTER_RF_DURING_RANGE_MOVEMENT.getBoolean();
+ private static final boolean allow_unsafe_transient_changes = ALLOW_UNSAFE_TRANSIENT_CHANGES.getBoolean();
private final HashSet<String> clientWarnings = new HashSet<>();
private final KeyspaceAttributes attrs;
diff --git a/src/java/org/apache/cassandra/cql3/statements/schema/CreateViewStatement.java b/src/java/org/apache/cassandra/cql3/statements/schema/CreateViewStatement.java
index 7a2586a95e..ed7a9a1190 100644
--- a/src/java/org/apache/cassandra/cql3/statements/schema/CreateViewStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/schema/CreateViewStatement.java
@@ -50,6 +50,7 @@ import static java.lang.String.join;
import static com.google.common.collect.Iterables.concat;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
+import static org.apache.cassandra.config.CassandraRelevantProperties.MV_ALLOW_FILTERING_NONKEY_COLUMNS_UNSAFE;
public final class CreateViewStatement extends AlterSchemaStatement
{
@@ -294,7 +295,7 @@ public final class CreateViewStatement extends AlterSchemaStatement
// See CASSANDRA-13798
Set<ColumnMetadata> restrictedNonPrimaryKeyColumns = restrictions.nonPKRestrictedColumns(false);
- if (!restrictedNonPrimaryKeyColumns.isEmpty() && !Boolean.getBoolean("cassandra.mv.allow_filtering_nonkey_columns_unsafe"))
+ if (!restrictedNonPrimaryKeyColumns.isEmpty() && !MV_ALLOW_FILTERING_NONKEY_COLUMNS_UNSAFE.getBoolean())
{
throw ire("Non-primary key columns can only be restricted with 'IS NOT NULL' (got: %s restricted illegally)",
join(",", transform(restrictedNonPrimaryKeyColumns, ColumnMetadata::toString)));
diff --git a/src/java/org/apache/cassandra/db/ExpirationDateOverflowHandling.java b/src/java/org/apache/cassandra/db/ExpirationDateOverflowHandling.java
index 7f81b5c413..f9207cea4b 100644
--- a/src/java/org/apache/cassandra/db/ExpirationDateOverflowHandling.java
+++ b/src/java/org/apache/cassandra/db/ExpirationDateOverflowHandling.java
@@ -25,6 +25,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.helpers.MessageFormatter;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.db.rows.BufferCell;
import org.apache.cassandra.db.rows.Cell;
import org.apache.cassandra.exceptions.InvalidRequestException;
@@ -32,13 +33,14 @@ import org.apache.cassandra.schema.TableMetadata;
import org.apache.cassandra.service.ClientWarn;
import org.apache.cassandra.utils.NoSpamLogger;
+import static org.apache.cassandra.config.CassandraRelevantProperties.EXPIRATION_DATE_OVERFLOW_POLICY;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
public class ExpirationDateOverflowHandling
{
private static final Logger logger = LoggerFactory.getLogger(ExpirationDateOverflowHandling.class);
- private static final int EXPIRATION_OVERFLOW_WARNING_INTERVAL_MINUTES = Integer.getInteger("cassandra.expiration_overflow_warning_interval_minutes", 5);
+ private static final int EXPIRATION_OVERFLOW_WARNING_INTERVAL_MINUTES = CassandraRelevantProperties.EXPIRATION_OVERFLOW_WARNING_INTERVAL_MINUTES.getInt();
public enum ExpirationDateOverflowPolicy
{
@@ -49,14 +51,13 @@ public class ExpirationDateOverflowHandling
public static ExpirationDateOverflowPolicy policy;
static {
- String policyAsString = System.getProperty("cassandra.expiration_date_overflow_policy", ExpirationDateOverflowPolicy.REJECT.name());
try
{
- policy = ExpirationDateOverflowPolicy.valueOf(policyAsString.toUpperCase());
+ policy = EXPIRATION_DATE_OVERFLOW_POLICY.getEnum(ExpirationDateOverflowPolicy.REJECT);
}
catch (RuntimeException e)
{
- logger.warn("Invalid expiration date overflow policy: {}. Using default: {}", policyAsString, ExpirationDateOverflowPolicy.REJECT.name());
+ logger.warn("Invalid expiration date overflow policy. Using default: {}", ExpirationDateOverflowPolicy.REJECT.name());
policy = ExpirationDateOverflowPolicy.REJECT;
}
}
diff --git a/src/java/org/apache/cassandra/db/Keyspace.java b/src/java/org/apache/cassandra/db/Keyspace.java
index 9dc4d4c189..22721bdcf1 100644
--- a/src/java/org/apache/cassandra/db/Keyspace.java
+++ b/src/java/org/apache/cassandra/db/Keyspace.java
@@ -40,6 +40,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.Stage;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.DurationSpec;
import org.apache.cassandra.db.lifecycle.SSTableSet;
@@ -87,9 +88,9 @@ public class Keyspace
{
private static final Logger logger = LoggerFactory.getLogger(Keyspace.class);
- private static final String TEST_FAIL_WRITES_KS = System.getProperty("cassandra.test.fail_writes_ks", "");
+ private static final String TEST_FAIL_WRITES_KS = CassandraRelevantProperties.TEST_FAIL_WRITES_KS.getString();
private static final boolean TEST_FAIL_WRITES = !TEST_FAIL_WRITES_KS.isEmpty();
- private static int TEST_FAIL_MV_LOCKS_COUNT = Integer.getInteger("cassandra.test.fail_mv_locks_count", 0);
+ private static int TEST_FAIL_MV_LOCKS_COUNT = CassandraRelevantProperties.TEST_FAIL_MV_LOCKS_COUNT.getInt();
public final KeyspaceMetrics metric;
diff --git a/src/java/org/apache/cassandra/db/ReadCommand.java b/src/java/org/apache/cassandra/db/ReadCommand.java
index 0978b8ef05..9cfcb3a3d3 100644
--- a/src/java/org/apache/cassandra/db/ReadCommand.java
+++ b/src/java/org/apache/cassandra/db/ReadCommand.java
@@ -85,7 +85,7 @@ import static org.apache.cassandra.db.partitions.UnfilteredPartitionIterators.Me
*/
public abstract class ReadCommand extends AbstractReadQuery
{
- private static final int TEST_ITERATION_DELAY_MILLIS = Integer.parseInt(System.getProperty("cassandra.test.read_iteration_delay_ms", "0"));
+ private static final int TEST_ITERATION_DELAY_MILLIS = CassandraRelevantProperties.TEST_READ_ITERATION_DELAY_MS.getInt();
protected static final Logger logger = LoggerFactory.getLogger(ReadCommand.class);
public static final IVersionedSerializer<ReadCommand> serializer = new Serializer();
diff --git a/src/java/org/apache/cassandra/db/StorageHook.java b/src/java/org/apache/cassandra/db/StorageHook.java
index 7014ae4d8b..f5fdec6a56 100644
--- a/src/java/org/apache/cassandra/db/StorageHook.java
+++ b/src/java/org/apache/cassandra/db/StorageHook.java
@@ -28,6 +28,8 @@ import org.apache.cassandra.io.sstable.format.SSTableReader;
import org.apache.cassandra.schema.TableId;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.STORAGE_HOOK;
+
public interface StorageHook
{
public static final StorageHook instance = createHook();
@@ -50,7 +52,7 @@ public interface StorageHook
static StorageHook createHook()
{
- String className = System.getProperty("cassandra.storage_hook");
+ String className = STORAGE_HOOK.getString();
if (className != null)
{
return FBUtilities.construct(className, StorageHook.class.getSimpleName());
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
index b9421e357f..a50273caaa 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
@@ -38,7 +38,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.Stage;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.Keyspace;
@@ -56,17 +55,19 @@ import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.WrappedRunnable;
import static java.lang.String.format;
+import static org.apache.cassandra.config.CassandraRelevantProperties.COMMITLOG_IGNORE_REPLAY_ERRORS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.COMMITLOG_MAX_OUTSTANDING_REPLAY_BYTES;
+import static org.apache.cassandra.config.CassandraRelevantProperties.COMMITLOG_MAX_OUTSTANDING_REPLAY_COUNT;
import static org.apache.cassandra.config.CassandraRelevantProperties.COMMIT_LOG_REPLAY_LIST;
public class CommitLogReplayer implements CommitLogReadHandler
{
@VisibleForTesting
- public static long MAX_OUTSTANDING_REPLAY_BYTES = Long.getLong("cassandra.commitlog_max_outstanding_replay_bytes", 1024 * 1024 * 64);
+ public static long MAX_OUTSTANDING_REPLAY_BYTES = COMMITLOG_MAX_OUTSTANDING_REPLAY_BYTES.getLong();
@VisibleForTesting
public static MutationInitiator mutationInitiator = new MutationInitiator();
- static final String IGNORE_REPLAY_ERRORS_PROPERTY = Config.PROPERTY_PREFIX + "commitlog.ignorereplayerrors";
private static final Logger logger = LoggerFactory.getLogger(CommitLogReplayer.class);
- private static final int MAX_OUTSTANDING_REPLAY_COUNT = Integer.getInteger(Config.PROPERTY_PREFIX + "commitlog_max_outstanding_replay_count", 1024);
+ private static final int MAX_OUTSTANDING_REPLAY_COUNT = COMMITLOG_MAX_OUTSTANDING_REPLAY_COUNT.getInt();
private final Set<Keyspace> keyspacesReplayed;
private final Queue<Future<Integer>> futures;
@@ -525,13 +526,13 @@ public class CommitLogReplayer implements CommitLogReadHandler
{
if (exception.permissible)
logger.error("Ignoring commit log replay error likely due to incomplete flush to disk", exception);
- else if (Boolean.getBoolean(IGNORE_REPLAY_ERRORS_PROPERTY))
+ else if (COMMITLOG_IGNORE_REPLAY_ERRORS.getBoolean())
logger.error("Ignoring commit log replay error", exception);
else if (!CommitLog.handleCommitError("Failed commit log replay", exception))
{
logger.error("Replay stopped. If you wish to override this error and continue starting the node ignoring " +
- "commit log replay problems, specify -D" + IGNORE_REPLAY_ERRORS_PROPERTY + "=true " +
- "on the command line");
+ "commit log replay problems, specify -D{}=true on the command line",
+ COMMITLOG_IGNORE_REPLAY_ERRORS.getKey());
throw new CommitLogReplayException(exception.getMessage(), exception);
}
return false;
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLogSegmentReader.java b/src/java/org/apache/cassandra/db/commitlog/CommitLogSegmentReader.java
index 33e70c10ae..964fe49754 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogSegmentReader.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogSegmentReader.java
@@ -29,7 +29,6 @@ import com.google.common.collect.AbstractIterator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.db.commitlog.EncryptedFileSegmentInputStream.ChunkProvider;
import org.apache.cassandra.db.commitlog.CommitLogReadHandler.*;
import org.apache.cassandra.io.FSReadError;
@@ -42,6 +41,7 @@ import org.apache.cassandra.security.EncryptionUtils;
import org.apache.cassandra.security.EncryptionContext;
import org.apache.cassandra.utils.ByteBufferUtil;
+import static org.apache.cassandra.config.CassandraRelevantProperties.COMMITLOG_ALLOW_IGNORE_SYNC_CRC;
import static org.apache.cassandra.db.commitlog.CommitLogSegment.SYNC_MARKER_SIZE;
import static org.apache.cassandra.utils.FBUtilities.updateChecksumInt;
@@ -50,8 +50,7 @@ import static org.apache.cassandra.utils.FBUtilities.updateChecksumInt;
*/
public class CommitLogSegmentReader implements Iterable<CommitLogSegmentReader.SyncSegment>
{
- public static final String ALLOW_IGNORE_SYNC_CRC = Config.PROPERTY_PREFIX + "commitlog.allow_ignore_sync_crc";
- private static volatile boolean allowSkipSyncMarkerCrc = Boolean.getBoolean(ALLOW_IGNORE_SYNC_CRC);
+ private static volatile boolean allowSkipSyncMarkerCrc = COMMITLOG_ALLOW_IGNORE_SYNC_CRC.getBoolean();
private static final Logger logger = LoggerFactory.getLogger(CommitLogSegmentReader.class);
diff --git a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
index 5fbece5210..2eb119dad3 100644
--- a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
@@ -399,7 +399,7 @@ public abstract class AbstractCompactionStrategy
*/
protected boolean worthDroppingTombstones(SSTableReader sstable, int gcBefore)
{
- if (disableTombstoneCompactions || CompactionController.NEVER_PURGE_TOMBSTONES || cfs.getNeverPurgeTombstones())
+ if (disableTombstoneCompactions || CompactionController.NEVER_PURGE_TOMBSTONES_PROPERTY_VALUE || cfs.getNeverPurgeTombstones())
return false;
// since we use estimations to calculate, there is a chance that compaction will not drop tombstones actually.
// if that happens we will end up in infinite compaction loop, so first we check enough if enough time has
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionController.java b/src/java/org/apache/cassandra/db/compaction/CompactionController.java
index e289e71b6d..3038222849 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionController.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionController.java
@@ -33,7 +33,6 @@ import com.google.common.util.concurrent.RateLimiter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.db.AbstractCompactionController;
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.DecoratedKey;
@@ -47,6 +46,7 @@ import org.apache.cassandra.schema.CompactionParams.TombstoneOption;
import org.apache.cassandra.utils.OverlapIterator;
import org.apache.cassandra.utils.concurrent.Refs;
+import static org.apache.cassandra.config.CassandraRelevantProperties.NEVER_PURGE_TOMBSTONES;
import static org.apache.cassandra.db.lifecycle.SSTableIntervalTree.buildIntervals;
/**
@@ -55,8 +55,7 @@ import static org.apache.cassandra.db.lifecycle.SSTableIntervalTree.buildInterva
public class CompactionController extends AbstractCompactionController
{
private static final Logger logger = LoggerFactory.getLogger(CompactionController.class);
- private static final String NEVER_PURGE_TOMBSTONES_PROPERTY = Config.PROPERTY_PREFIX + "never_purge_tombstones";
- static final boolean NEVER_PURGE_TOMBSTONES = Boolean.getBoolean(NEVER_PURGE_TOMBSTONES_PROPERTY);
+ static final boolean NEVER_PURGE_TOMBSTONES_PROPERTY_VALUE = NEVER_PURGE_TOMBSTONES.getBoolean();
private final boolean compactingRepaired;
// note that overlapIterator and overlappingSSTables will be null if NEVER_PURGE_TOMBSTONES is set - this is a
@@ -90,16 +89,15 @@ public class CompactionController extends AbstractCompactionController
? compacting.stream().mapToLong(SSTableReader::getMinTimestamp).min().getAsLong()
: 0;
refreshOverlaps();
- if (NEVER_PURGE_TOMBSTONES)
- logger.warn("You are running with -Dcassandra.never_purge_tombstones=true, this is dangerous!");
+ if (NEVER_PURGE_TOMBSTONES_PROPERTY_VALUE)
+ logger.warn("You are running with -D{}=true, this is dangerous!", NEVER_PURGE_TOMBSTONES.getKey());
}
public void maybeRefreshOverlaps()
{
- if (NEVER_PURGE_TOMBSTONES)
+ if (NEVER_PURGE_TOMBSTONES_PROPERTY_VALUE)
{
- logger.debug("not refreshing overlaps - running with -D{}=true",
- NEVER_PURGE_TOMBSTONES_PROPERTY);
+ logger.debug("not refreshing overlaps - running with -D{}=true", NEVER_PURGE_TOMBSTONES.getKey());
return;
}
@@ -121,7 +119,7 @@ public class CompactionController extends AbstractCompactionController
private void refreshOverlaps()
{
- if (NEVER_PURGE_TOMBSTONES || cfs.getNeverPurgeTombstones())
+ if (NEVER_PURGE_TOMBSTONES_PROPERTY_VALUE || cfs.getNeverPurgeTombstones())
return;
if (this.overlappingSSTables != null)
@@ -164,7 +162,7 @@ public class CompactionController extends AbstractCompactionController
{
logger.trace("Checking droppable sstables in {}", cfStore);
- if (NEVER_PURGE_TOMBSTONES || compacting == null || cfStore.getNeverPurgeTombstones() || overlapping == null)
+ if (NEVER_PURGE_TOMBSTONES_PROPERTY_VALUE || compacting == null || cfStore.getNeverPurgeTombstones() || overlapping == null)
return Collections.emptySet();
if (cfStore.getCompactionStrategyManager().onlyPurgeRepairedTombstones() && !Iterables.all(compacting, SSTableReader::isRepaired))
@@ -250,7 +248,7 @@ public class CompactionController extends AbstractCompactionController
@Override
public LongPredicate getPurgeEvaluator(DecoratedKey key)
{
- if (NEVER_PURGE_TOMBSTONES || !compactingRepaired() || cfs.getNeverPurgeTombstones() || overlapIterator == null)
+ if (NEVER_PURGE_TOMBSTONES_PROPERTY_VALUE || !compactingRepaired() || cfs.getNeverPurgeTombstones() || overlapIterator == null)
return time -> false;
overlapIterator.update(key);
@@ -311,7 +309,7 @@ public class CompactionController extends AbstractCompactionController
// caller must close iterators
public Iterable<UnfilteredRowIterator> shadowSources(DecoratedKey key, boolean tombstoneOnly)
{
- if (!provideTombstoneSources() || !compactingRepaired() || NEVER_PURGE_TOMBSTONES || cfs.getNeverPurgeTombstones())
+ if (!provideTombstoneSources() || !compactingRepaired() || NEVER_PURGE_TOMBSTONES_PROPERTY_VALUE || cfs.getNeverPurgeTombstones())
return null;
overlapIterator.update(key);
return Iterables.filter(Iterables.transform(overlapIterator.overlaps(),
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionLogger.java b/src/java/org/apache/cassandra/db/compaction/CompactionLogger.java
index 9bf063b726..8d02da9d4a 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionLogger.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionLogger.java
@@ -49,6 +49,7 @@ import org.apache.cassandra.utils.ExecutorUtils;
import org.apache.cassandra.utils.NoSpamLogger;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
+import static org.apache.cassandra.config.CassandraRelevantProperties.LOG_DIR;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
public class CompactionLogger
@@ -300,7 +301,7 @@ public class CompactionLogger
private static class CompactionLogSerializer implements Writer
{
- private static final String logDirectory = System.getProperty("cassandra.logdir", ".");
+ private static final String logDirectory = LOG_DIR.getString();
private final ExecutorPlus loggerService = executorFactory().sequential("CompactionLogger");
// This is only accessed on the logger service thread, so it does not need to be thread safe
private final Set<Object> rolled = new HashSet<>();
diff --git a/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
index e4b2cff296..bbdd13cb07 100644
--- a/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
@@ -33,7 +33,6 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import org.apache.cassandra.io.sstable.metadata.StatsMetadata;
import org.apache.cassandra.schema.CompactionParams;
import org.apache.cassandra.schema.TableMetadata;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.lifecycle.LifecycleTransaction;
import org.apache.cassandra.db.rows.UnfilteredRowIterator;
@@ -43,11 +42,13 @@ import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.io.sstable.ISSTableScanner;
import org.apache.cassandra.io.sstable.format.SSTableReader;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TOLERATE_SSTABLE_SIZE;
+
public class LeveledCompactionStrategy extends AbstractCompactionStrategy
{
private static final Logger logger = LoggerFactory.getLogger(LeveledCompactionStrategy.class);
private static final String SSTABLE_SIZE_OPTION = "sstable_size_in_mb";
- private static final boolean tolerateSstableSize = Boolean.getBoolean(Config.PROPERTY_PREFIX + "tolerate_sstable_size");
+ private static final boolean tolerateSstableSize = TOLERATE_SSTABLE_SIZE.getBoolean();
private static final String LEVEL_FANOUT_SIZE_OPTION = "fanout_size";
private static final String SINGLE_SSTABLE_UPLEVEL_OPTION = "single_sstable_uplevel";
public static final int DEFAULT_LEVEL_FANOUT_SIZE = 10;
diff --git a/src/java/org/apache/cassandra/db/compaction/LeveledGenerations.java b/src/java/org/apache/cassandra/db/compaction/LeveledGenerations.java
index 36b56003d5..08cda89c85 100644
--- a/src/java/org/apache/cassandra/db/compaction/LeveledGenerations.java
+++ b/src/java/org/apache/cassandra/db/compaction/LeveledGenerations.java
@@ -37,11 +37,11 @@ import com.google.common.collect.PeekingIterator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.io.sstable.SSTableIdFactory;
import org.apache.cassandra.io.sstable.format.SSTableReader;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_STRICT_LCS_CHECKS;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
/**
@@ -52,7 +52,7 @@ import static org.apache.cassandra.utils.Clock.Global.nanoTime;
class LeveledGenerations
{
private static final Logger logger = LoggerFactory.getLogger(LeveledGenerations.class);
- private final boolean strictLCSChecksTest = Boolean.getBoolean(Config.PROPERTY_PREFIX + "test.strict_lcs_checks");
+ private final boolean strictLCSChecksTest = TEST_STRICT_LCS_CHECKS.getBoolean();
// It includes L0, i.e. we support [L0 - L8] levels
static final int MAX_LEVEL_COUNT = 9;
diff --git a/src/java/org/apache/cassandra/db/compaction/TimeWindowCompactionStrategyOptions.java b/src/java/org/apache/cassandra/db/compaction/TimeWindowCompactionStrategyOptions.java
index cdb89528c7..b9312a02f1 100644
--- a/src/java/org/apache/cassandra/db/compaction/TimeWindowCompactionStrategyOptions.java
+++ b/src/java/org/apache/cassandra/db/compaction/TimeWindowCompactionStrategyOptions.java
@@ -26,9 +26,10 @@ import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.exceptions.ConfigurationException;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION;
+
public final class TimeWindowCompactionStrategyOptions
{
private static final Logger logger = LoggerFactory.getLogger(TimeWindowCompactionStrategyOptions.class);
@@ -45,7 +46,7 @@ public final class TimeWindowCompactionStrategyOptions
public static final String EXPIRED_SSTABLE_CHECK_FREQUENCY_SECONDS_KEY = "expired_sstable_check_frequency_seconds";
public static final String UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_KEY = "unsafe_aggressive_sstable_expiration";
- static final String UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_PROPERTY = Config.PROPERTY_PREFIX + "allow_unsafe_aggressive_sstable_expiration";
+ static final boolean UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_ENABLED = ALLOW_UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION.getBoolean();
protected final int sstableWindowSize;
protected final TimeUnit sstableWindowUnit;
@@ -75,7 +76,7 @@ public final class TimeWindowCompactionStrategyOptions
expiredSSTableCheckFrequency = TimeUnit.MILLISECONDS.convert(optionValue == null ? DEFAULT_EXPIRED_SSTABLE_CHECK_FREQUENCY_SECONDS : Long.parseLong(optionValue), TimeUnit.SECONDS);
optionValue = options.get(UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_KEY);
- ignoreOverlaps = optionValue == null ? DEFAULT_UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION : (Boolean.getBoolean(UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_PROPERTY) && Boolean.parseBoolean(optionValue));
+ ignoreOverlaps = optionValue == null ? DEFAULT_UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION : (UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_ENABLED && Boolean.parseBoolean(optionValue));
stcsOptions = new SizeTieredCompactionStrategyOptions(options);
}
@@ -153,8 +154,9 @@ public final class TimeWindowCompactionStrategyOptions
if (!(optionValue.equalsIgnoreCase("true") || optionValue.equalsIgnoreCase("false")))
throw new ConfigurationException(String.format("%s is not 'true' or 'false' (%s)", UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_KEY, optionValue));
- if(optionValue.equalsIgnoreCase("true") && !Boolean.getBoolean(UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_PROPERTY))
- throw new ConfigurationException(String.format("%s is requested but not allowed, restart cassandra with -D%s=true to allow it", UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_KEY, UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_PROPERTY));
+ if (optionValue.equalsIgnoreCase("true") && !UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_ENABLED)
+ throw new ConfigurationException(String.format("%s is requested but not allowed, restart cassandra with -D%s=true to allow it",
+ UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_KEY, ALLOW_UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION.getKey()));
}
uncheckedOptions.remove(COMPACTION_WINDOW_SIZE_KEY);
diff --git a/src/java/org/apache/cassandra/db/guardrails/GuardrailsConfigProvider.java b/src/java/org/apache/cassandra/db/guardrails/GuardrailsConfigProvider.java
index 6128764b18..280467e8c8 100644
--- a/src/java/org/apache/cassandra/db/guardrails/GuardrailsConfigProvider.java
+++ b/src/java/org/apache/cassandra/db/guardrails/GuardrailsConfigProvider.java
@@ -24,6 +24,8 @@ import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.service.ClientState;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CUSTOM_GUARDRAILS_CONFIG_PROVIDER_CLASS;
+
/**
* Provider of {@link GuardrailsConfig}s for a {@link ClientState}.
* <p>
@@ -37,11 +39,14 @@ import org.apache.cassandra.utils.FBUtilities;
*/
public interface GuardrailsConfigProvider
{
- public static final String CUSTOM_IMPLEMENTATION_PROPERTY = "cassandra.custom_guardrails_config_provider_class";
+ /**
+ * @deprecated CUSTOM_GUARDRAILS_CONFIG_PROVIDER_CLASS.getKey() must be used instead.
+ */
+ @Deprecated
+ public static final String CUSTOM_IMPLEMENTATION_PROPERTY = CUSTOM_GUARDRAILS_CONFIG_PROVIDER_CLASS.getKey();
- static final GuardrailsConfigProvider instance = System.getProperty(CUSTOM_IMPLEMENTATION_PROPERTY) == null
- ? new Default()
- : build(System.getProperty(CUSTOM_IMPLEMENTATION_PROPERTY));
+ GuardrailsConfigProvider instance = CUSTOM_GUARDRAILS_CONFIG_PROVIDER_CLASS.getString() == null ?
+ new Default() : build(CUSTOM_GUARDRAILS_CONFIG_PROVIDER_CLASS.getString());
/**
* Returns the {@link GuardrailsConfig} to be used for the specified {@link ClientState}.
diff --git a/src/java/org/apache/cassandra/db/marshal/EmptyType.java b/src/java/org/apache/cassandra/db/marshal/EmptyType.java
index 8064f22977..33c45240a3 100644
--- a/src/java/org/apache/cassandra/db/marshal/EmptyType.java
+++ b/src/java/org/apache/cassandra/db/marshal/EmptyType.java
@@ -37,6 +37,8 @@ import org.apache.cassandra.utils.bytecomparable.ByteComparable;
import org.apache.cassandra.utils.bytecomparable.ByteSource;
import org.apache.cassandra.utils.NoSpamLogger;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SERIALIZATION_EMPTY_TYPE_NONEMPTY_BEHAVIOR;
+
/**
* A type that only accept empty data.
* It is only useful as a value validation type, not as a comparator since column names can't be empty.
@@ -46,13 +48,12 @@ public class EmptyType extends AbstractType<Void>
private enum NonEmptyWriteBehavior { FAIL, LOG_DATA_LOSS, SILENT_DATA_LOSS }
private static final Logger logger = LoggerFactory.getLogger(EmptyType.class);
- private static final String KEY_EMPTYTYPE_NONEMPTY_BEHAVIOR = "cassandra.serialization.emptytype.nonempty_behavior";
private static final NoSpamLogger NON_EMPTY_WRITE_LOGGER = NoSpamLogger.getLogger(logger, 1, TimeUnit.MINUTES);
private static final NonEmptyWriteBehavior NON_EMPTY_WRITE_BEHAVIOR = parseNonEmptyWriteBehavior();
private static NonEmptyWriteBehavior parseNonEmptyWriteBehavior()
{
- String value = System.getProperty(KEY_EMPTYTYPE_NONEMPTY_BEHAVIOR);
+ String value = SERIALIZATION_EMPTY_TYPE_NONEMPTY_BEHAVIOR.getString();
if (value == null)
return NonEmptyWriteBehavior.FAIL;
try
@@ -61,7 +62,7 @@ public class EmptyType extends AbstractType<Void>
}
catch (Exception e)
{
- logger.warn("Unable to parse property " + KEY_EMPTYTYPE_NONEMPTY_BEHAVIOR + ", falling back to FAIL", e);
+ logger.warn("Unable to parse property " + SERIALIZATION_EMPTY_TYPE_NONEMPTY_BEHAVIOR.getKey() + ", falling back to FAIL", e);
return NonEmptyWriteBehavior.FAIL;
}
}
diff --git a/src/java/org/apache/cassandra/db/marshal/UserType.java b/src/java/org/apache/cassandra/db/marshal/UserType.java
index d380f60b60..8f57dbb83d 100644
--- a/src/java/org/apache/cassandra/db/marshal/UserType.java
+++ b/src/java/org/apache/cassandra/db/marshal/UserType.java
@@ -41,6 +41,7 @@ import org.apache.cassandra.utils.Pair;
import static com.google.common.collect.Iterables.any;
import static com.google.common.collect.Iterables.transform;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TYPE_UDT_CONFLICT_BEHAVIOR;
import static org.apache.cassandra.cql3.ColumnIdentifier.maybeQuote;
/**
@@ -523,18 +524,16 @@ public class UserType extends TupleType implements SchemaElement
{
throw new AssertionError(String.format("Duplicate names found in UDT %s.%s for column %s; " +
- "to resolve set -D" + UDT_CONFLICT_BEHAVIOR + "=LOG on startup and remove the type",
- maybeQuote(keyspace), maybeQuote(name), maybeQuote(fieldName)));
+ "to resolve set -D%s=LOG on startup and remove the type",
+ maybeQuote(keyspace), maybeQuote(name), maybeQuote(fieldName), TYPE_UDT_CONFLICT_BEHAVIOR.getKey()));
}
};
- private static final String UDT_CONFLICT_BEHAVIOR = "cassandra.type.udt.conflict_behavior";
-
abstract void onConflict(String keyspace, String name, String fieldName);
static ConflictBehavior get()
{
- String value = System.getProperty(UDT_CONFLICT_BEHAVIOR, REJECT.name());
+ String value = TYPE_UDT_CONFLICT_BEHAVIOR.getString(REJECT.name());
return ConflictBehavior.valueOf(value);
}
}
diff --git a/src/java/org/apache/cassandra/db/memtable/AbstractShardedMemtable.java b/src/java/org/apache/cassandra/db/memtable/AbstractShardedMemtable.java
index f4948f089f..081570188b 100644
--- a/src/java/org/apache/cassandra/db/memtable/AbstractShardedMemtable.java
+++ b/src/java/org/apache/cassandra/db/memtable/AbstractShardedMemtable.java
@@ -20,8 +20,6 @@ package org.apache.cassandra.db.memtable;
import java.util.concurrent.atomic.AtomicReference;
-import com.google.common.annotations.VisibleForTesting;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -31,14 +29,13 @@ import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.MBeanWrapper;
import org.github.jamm.Unmetered;
+import static org.apache.cassandra.config.CassandraRelevantProperties.MEMTABLE_SHARD_COUNT;
+
public abstract class AbstractShardedMemtable extends AbstractAllocatorMemtable
{
private static final Logger logger = LoggerFactory.getLogger(AbstractShardedMemtable.class);
public static final String SHARDS_OPTION = "shards";
- @VisibleForTesting
- public static final String DEFAULT_SHARD_COUNT_PROPERTY = "cassandra.memtable.shard.count";
-
public static final String SHARDED_MEMTABLE_CONFIG_OBJECT_NAME = "org.apache.cassandra.db:type=ShardedMemtableConfig";
static
{
@@ -46,7 +43,7 @@ public abstract class AbstractShardedMemtable extends AbstractAllocatorMemtable
}
// default shard count, used when a specific number of shards is not specified in the options
- private static volatile int defaultShardCount = Integer.getInteger(DEFAULT_SHARD_COUNT_PROPERTY, FBUtilities.getAvailableProcessors());
+ private static volatile int defaultShardCount = MEMTABLE_SHARD_COUNT.getInt(FBUtilities.getAvailableProcessors());
// The boundaries for the keyspace as they were calculated when the memtable is created.
// The boundaries will be NONE for system keyspaces or if StorageService is not yet initialized.
diff --git a/src/java/org/apache/cassandra/db/monitoring/MonitoringTask.java b/src/java/org/apache/cassandra/db/monitoring/MonitoringTask.java
index d681e4b415..243569910b 100644
--- a/src/java/org/apache/cassandra/db/monitoring/MonitoringTask.java
+++ b/src/java/org/apache/cassandra/db/monitoring/MonitoringTask.java
@@ -33,11 +33,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.ScheduledExecutors;
-import org.apache.cassandra.config.Config;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.utils.NoSpamLogger;
-import static java.lang.System.getProperty;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.MONITORING_MAX_OPERATIONS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.MONITORING_REPORT_INTERVAL_MS;
import static org.apache.cassandra.utils.MonotonicClock.Global.approxTime;
import static org.apache.cassandra.utils.concurrent.BlockingQueues.newBlockingQueue;
@@ -48,20 +49,20 @@ import static org.apache.cassandra.utils.concurrent.BlockingQueues.newBlockingQu
*/
class MonitoringTask
{
- private static final String LINE_SEPARATOR = getProperty("line.separator");
+ private static final String LINE_SEPARATOR = CassandraRelevantProperties.LINE_SEPARATOR.getString();
private static final Logger logger = LoggerFactory.getLogger(MonitoringTask.class);
private static final NoSpamLogger noSpamLogger = NoSpamLogger.getLogger(logger, 5L, TimeUnit.MINUTES);
/**
* Defines the interval for reporting any operations that have timed out.
*/
- private static final int REPORT_INTERVAL_MS = Math.max(0, Integer.parseInt(System.getProperty(Config.PROPERTY_PREFIX + "monitoring_report_interval_ms", "5000")));
+ private static final int REPORT_INTERVAL_MS = Math.max(0, MONITORING_REPORT_INTERVAL_MS.getInt());
/**
* Defines the maximum number of unique timed out queries that will be reported in the logs.
* Use a negative number to remove any limit.
*/
- private static final int MAX_OPERATIONS = Integer.parseInt(System.getProperty(Config.PROPERTY_PREFIX + "monitoring_max_operations", "50"));
+ private static final int MAX_OPERATIONS = MONITORING_MAX_OPERATIONS.getInt();
@VisibleForTesting
static MonitoringTask instance = make(REPORT_INTERVAL_MS, MAX_OPERATIONS);
diff --git a/src/java/org/apache/cassandra/db/repair/PendingAntiCompaction.java b/src/java/org/apache/cassandra/db/repair/PendingAntiCompaction.java
index a993bac5ee..55138e8277 100644
--- a/src/java/org/apache/cassandra/db/repair/PendingAntiCompaction.java
+++ b/src/java/org/apache/cassandra/db/repair/PendingAntiCompaction.java
@@ -35,6 +35,7 @@ import com.google.common.collect.Iterables;
import com.google.common.util.concurrent.Uninterruptibles;
import org.apache.cassandra.concurrent.FutureTask;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.utils.TimeUUID;
import org.apache.cassandra.utils.concurrent.Future;
import org.apache.cassandra.utils.concurrent.FutureCombiner;
@@ -67,8 +68,8 @@ import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
public class PendingAntiCompaction
{
private static final Logger logger = LoggerFactory.getLogger(PendingAntiCompaction.class);
- private static final int ACQUIRE_SLEEP_MS = Integer.getInteger("cassandra.acquire_sleep_ms", 1000);
- private static final int ACQUIRE_RETRY_SECONDS = Integer.getInteger("cassandra.acquire_retry_seconds", 60);
+ private static final int ACQUIRE_SLEEP_MS = CassandraRelevantProperties.ACQUIRE_SLEEP_MS.getInt();
+ private static final int ACQUIRE_RETRY_SECONDS = CassandraRelevantProperties.ACQUIRE_RETRY_SECONDS.getInt();
public static class AcquireResult
{
diff --git a/src/java/org/apache/cassandra/db/streaming/CassandraStreamReceiver.java b/src/java/org/apache/cassandra/db/streaming/CassandraStreamReceiver.java
index b5963978c0..518d537095 100644
--- a/src/java/org/apache/cassandra/db/streaming/CassandraStreamReceiver.java
+++ b/src/java/org/apache/cassandra/db/streaming/CassandraStreamReceiver.java
@@ -53,11 +53,13 @@ import org.apache.cassandra.utils.CloseableIterator;
import org.apache.cassandra.utils.Throwables;
import org.apache.cassandra.utils.concurrent.Refs;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPAIR_MUTATION_REPAIR_ROWS_PER_BATCH;
+
public class CassandraStreamReceiver implements StreamReceiver
{
private static final Logger logger = LoggerFactory.getLogger(CassandraStreamReceiver.class);
- private static final int MAX_ROWS_PER_BATCH = Integer.getInteger("cassandra.repair.mutation_repair_rows_per_batch", 100);
+ private static final int MAX_ROWS_PER_BATCH = REPAIR_MUTATION_REPAIR_ROWS_PER_BATCH.getInt();
private final ColumnFamilyStore cfs;
private final StreamSession session;
diff --git a/src/java/org/apache/cassandra/db/view/ViewManager.java b/src/java/org/apache/cassandra/db/view/ViewManager.java
index 111f96aa9e..106a15fdd9 100644
--- a/src/java/org/apache/cassandra/db/view/ViewManager.java
+++ b/src/java/org/apache/cassandra/db/view/ViewManager.java
@@ -36,6 +36,8 @@ import org.apache.cassandra.schema.SystemDistributedKeyspace;
import org.apache.cassandra.schema.Views;
import org.apache.cassandra.service.StorageService;
+import static org.apache.cassandra.config.CassandraRelevantProperties.MV_ENABLE_COORDINATOR_BATCHLOG;
+
/**
* Manages {@link View}'s for a single {@link ColumnFamilyStore}. All of the views for that table are created when this
* manager is initialized.
@@ -57,7 +59,7 @@ public class ViewManager
private static final Striped<Lock> LOCKS = Striped.lazyWeakLock(DatabaseDescriptor.getConcurrentViewWriters() * 1024);
- private static final boolean enableCoordinatorBatchlog = Boolean.getBoolean("cassandra.mv_enable_coordinator_batchlog");
+ private static final boolean enableCoordinatorBatchlog = MV_ENABLE_COORDINATOR_BATCHLOG.getBoolean();
private final ConcurrentMap<String, View> viewsByName = new ConcurrentHashMap<>();
private final ConcurrentMap<TableId, TableViews> viewsByBaseTable = new ConcurrentHashMap<>();
diff --git a/src/java/org/apache/cassandra/db/virtual/SystemPropertiesTable.java b/src/java/org/apache/cassandra/db/virtual/SystemPropertiesTable.java
index d08d61468d..f1d0d7c43d 100644
--- a/src/java/org/apache/cassandra/db/virtual/SystemPropertiesTable.java
+++ b/src/java/org/apache/cassandra/db/virtual/SystemPropertiesTable.java
@@ -47,15 +47,15 @@ final class SystemPropertiesTable extends AbstractVirtualTable
{
SimpleDataSet result = new SimpleDataSet(metadata());
- System.getenv().keySet()
+ System.getenv().keySet() // checkstyle: suppress nearby 'blockSystemPropertyUsage'
.stream()
.filter(SystemPropertiesTable::isCassandraRelevant)
- .forEach(name -> addRow(result, name, System.getenv(name)));
+ .forEach(name -> addRow(result, name, System.getenv(name))); // checkstyle: suppress nearby 'blockSystemPropertyUsage'
System.getProperties().stringPropertyNames()
.stream()
.filter(SystemPropertiesTable::isCassandraRelevant)
- .forEach(name -> addRow(result, name, System.getProperty(name)));
+ .forEach(name -> addRow(result, name, System.getProperty(name))); // checkstyle: suppress nearby 'blockSystemPropertyUsage'
return result;
}
@@ -66,7 +66,7 @@ final class SystemPropertiesTable extends AbstractVirtualTable
SimpleDataSet result = new SimpleDataSet(metadata());
String name = UTF8Type.instance.compose(partitionKey.getKey());
if (isCassandraRelevant(name))
- addRow(result, name, System.getProperty(name, System.getenv(name)));
+ addRow(result, name, System.getProperty(name, System.getenv(name))); // checkstyle: suppress nearby 'blockSystemPropertyUsage'
return result;
}
diff --git a/src/java/org/apache/cassandra/gms/FailureDetector.java b/src/java/org/apache/cassandra/gms/FailureDetector.java
index 5177154df9..9cf7ad0392 100644
--- a/src/java/org/apache/cassandra/gms/FailureDetector.java
+++ b/src/java/org/apache/cassandra/gms/FailureDetector.java
@@ -17,29 +17,46 @@
*/
package org.apache.cassandra.gms;
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.UnknownHostException;
import java.nio.file.Files;
-import java.nio.file.StandardOpenOption;
import java.nio.file.Path;
-import java.io.*;
-import java.net.UnknownHostException;
-import java.util.*;
+import java.nio.file.StandardOpenOption;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.TimeUnit;
import java.util.function.Predicate;
-import javax.management.openmbean.*;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularDataSupport;
+import javax.management.openmbean.TabularType;
-import org.apache.cassandra.locator.Replica;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.io.FSWriteError;
import org.apache.cassandra.locator.InetAddressAndPort;
+import org.apache.cassandra.locator.Replica;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.MBeanWrapper;
+import static org.apache.cassandra.config.CassandraRelevantProperties.FD_INITIAL_VALUE_MS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.FD_MAX_INTERVAL_MS;
import static org.apache.cassandra.config.CassandraRelevantProperties.LINE_SEPARATOR;
+import static org.apache.cassandra.config.CassandraRelevantProperties.MAX_LOCAL_PAUSE_IN_MS;
import static org.apache.cassandra.config.DatabaseDescriptor.newFailureDetector;
import static org.apache.cassandra.utils.MonotonicClock.Global.preciseTime;
@@ -55,21 +72,19 @@ public class FailureDetector implements IFailureDetector, FailureDetectorMBean
private static final int SAMPLE_SIZE = 1000;
protected static final long INITIAL_VALUE_NANOS = TimeUnit.NANOSECONDS.convert(getInitialValue(), TimeUnit.MILLISECONDS);
private static final int DEBUG_PERCENTAGE = 80; // if the phi is larger than this percentage of the max, log a debug message
- private static final long DEFAULT_MAX_PAUSE = 5000L * 1000000L; // 5 seconds
private static final long MAX_LOCAL_PAUSE_IN_NANOS = getMaxLocalPause();
private long lastInterpret = preciseTime.now();
private long lastPause = 0L;
private static long getMaxLocalPause()
{
- if (System.getProperty("cassandra.max_local_pause_in_ms") != null)
- {
- long pause = Long.parseLong(System.getProperty("cassandra.max_local_pause_in_ms"));
- logger.warn("Overriding max local pause time to {}ms", pause);
- return pause * 1000000L;
- }
- else
- return DEFAULT_MAX_PAUSE;
+ long pause = MAX_LOCAL_PAUSE_IN_MS.getLong();
+
+ if (!String.valueOf(pause).equals(MAX_LOCAL_PAUSE_IN_MS.getDefaultValue()))
+ logger.warn("Overriding {} max local pause time from {}ms to {}ms",
+ MAX_LOCAL_PAUSE_IN_MS.getKey(), MAX_LOCAL_PAUSE_IN_MS.getDefaultValue(), pause);
+
+ return pause * 1000000L;
}
public static final IFailureDetector instance = newFailureDetector();
@@ -93,16 +108,12 @@ public class FailureDetector implements IFailureDetector, FailureDetectorMBean
private static long getInitialValue()
{
- String newvalue = System.getProperty("cassandra.fd_initial_value_ms");
- if (newvalue == null)
- {
- return Gossiper.intervalInMillis * 2;
- }
- else
- {
- logger.info("Overriding FD INITIAL_VALUE to {}ms", newvalue);
- return Integer.parseInt(newvalue);
- }
+ long newValue = FD_INITIAL_VALUE_MS.getLong(Gossiper.intervalInMillis * 2L);
+
+ if (newValue != Gossiper.intervalInMillis * 2)
+ logger.info("Overriding {} from {}ms to {}ms", FD_INITIAL_VALUE_MS.getKey(), Gossiper.intervalInMillis * 2, newValue);
+
+ return newValue;
}
public String getAllEndpointStates()
@@ -476,16 +487,10 @@ class ArrivalWindow
private static long getMaxInterval()
{
- String newvalue = System.getProperty("cassandra.fd_max_interval_ms");
- if (newvalue == null)
- {
- return FailureDetector.INITIAL_VALUE_NANOS;
- }
- else
- {
- logger.info("Overriding FD MAX_INTERVAL to {}ms", newvalue);
- return TimeUnit.NANOSECONDS.convert(Integer.parseInt(newvalue), TimeUnit.MILLISECONDS);
- }
+ long newValue = FD_MAX_INTERVAL_MS.getLong(FailureDetector.INITIAL_VALUE_NANOS);
+ if (newValue != FailureDetector.INITIAL_VALUE_NANOS)
+ logger.info("Overriding {} from {}ms to {}ms", FD_MAX_INTERVAL_MS.getKey(), FailureDetector.INITIAL_VALUE_NANOS, newValue);
+ return TimeUnit.NANOSECONDS.convert(newValue, TimeUnit.MILLISECONDS);
}
synchronized void add(long value, InetAddressAndPort ep)
diff --git a/src/java/org/apache/cassandra/gms/Gossiper.java b/src/java/org/apache/cassandra/gms/Gossiper.java
index 0f13f6ae48..75f2e3c1df 100644
--- a/src/java/org/apache/cassandra/gms/Gossiper.java
+++ b/src/java/org/apache/cassandra/gms/Gossiper.java
@@ -18,8 +18,21 @@
package org.apache.cassandra.gms;
import java.net.UnknownHostException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
+import java.util.Random;
+import java.util.Set;
+import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentSkipListSet;
@@ -32,60 +45,60 @@ import java.util.concurrent.locks.ReentrantLock;
import java.util.function.BooleanSupplier;
import java.util.function.Supplier;
import java.util.stream.Collectors;
-
import javax.annotation.Nullable;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import com.google.common.util.concurrent.Uninterruptibles;
-
-import org.apache.cassandra.concurrent.*;
-import org.apache.cassandra.concurrent.FutureTask;
-import org.apache.cassandra.locator.InetAddressAndPort;
-import org.apache.cassandra.net.NoPayload;
-import org.apache.cassandra.net.Verb;
-import org.apache.cassandra.utils.CassandraVersion;
-import org.apache.cassandra.utils.ExecutorUtils;
-import org.apache.cassandra.utils.ExpiringMemoizingSupplier;
-import org.apache.cassandra.utils.MBeanWrapper;
-import org.apache.cassandra.utils.NoSpamLogger;
-import org.apache.cassandra.utils.Pair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.cassandra.concurrent.FutureTask;
+import org.apache.cassandra.concurrent.ScheduledExecutorPlus;
import org.apache.cassandra.concurrent.Stage;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.SystemKeyspace;
import org.apache.cassandra.dht.Token;
-import org.apache.cassandra.net.RequestCallback;
+import org.apache.cassandra.locator.InetAddressAndPort;
import org.apache.cassandra.net.Message;
import org.apache.cassandra.net.MessagingService;
+import org.apache.cassandra.net.NoPayload;
+import org.apache.cassandra.net.RequestCallback;
+import org.apache.cassandra.net.Verb;
import org.apache.cassandra.service.StorageService;
+import org.apache.cassandra.utils.CassandraVersion;
+import org.apache.cassandra.utils.ExecutorUtils;
+import org.apache.cassandra.utils.ExpiringMemoizingSupplier;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.JVMStabilityInspector;
+import org.apache.cassandra.utils.MBeanWrapper;
+import org.apache.cassandra.utils.NoSpamLogger;
+import org.apache.cassandra.utils.Pair;
import org.apache.cassandra.utils.RecomputingSupplier;
-import org.apache.cassandra.utils.concurrent.UncheckedInterruptedException;
import org.apache.cassandra.utils.concurrent.NotScheduledFuture;
+import org.apache.cassandra.utils.concurrent.UncheckedInterruptedException;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_GOSSIP_ENDPOINT_REMOVAL;
import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIPER_QUARANTINE_DELAY;
import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIPER_SKIP_WAITING_TO_SETTLE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIP_DISABLE_THREAD_VALIDATION;
import static org.apache.cassandra.config.CassandraRelevantProperties.SHUTDOWN_ANNOUNCE_DELAY_IN_MS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.VERY_LONG_TIME_MS;
import static org.apache.cassandra.config.DatabaseDescriptor.getClusterName;
import static org.apache.cassandra.config.DatabaseDescriptor.getPartitionerName;
+import static org.apache.cassandra.gms.VersionedValue.BOOTSTRAPPING_STATUS;
import static org.apache.cassandra.net.NoPayload.noPayload;
import static org.apache.cassandra.net.Verb.ECHO_REQ;
import static org.apache.cassandra.net.Verb.GOSSIP_DIGEST_SYN;
-import static org.apache.cassandra.utils.FBUtilities.getBroadcastAddressAndPort;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
-import static org.apache.cassandra.gms.VersionedValue.BOOTSTRAPPING_STATUS;
+import static org.apache.cassandra.utils.FBUtilities.getBroadcastAddressAndPort;
/**
* This module is responsible for Gossiping information for the local endpoint. This abstraction
@@ -106,11 +119,6 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean
{
public static final String MBEAN_NAME = "org.apache.cassandra.net:type=Gossiper";
- public static class Props
- {
- public static final String DISABLE_THREAD_VALIDATION = "cassandra.gossip.disable_thread_validation";
- }
-
private static final ScheduledExecutorPlus executor = executorFactory().scheduled("GossipTasks");
static final ApplicationState[] STATES = ApplicationState.values();
@@ -257,18 +265,18 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean
((ExpiringMemoizingSupplier<CassandraVersion>) upgradeFromVersionMemoized).expire();
}
- private static final boolean disableThreadValidation = Boolean.getBoolean(Props.DISABLE_THREAD_VALIDATION);
+ private static final boolean disableThreadValidation = GOSSIP_DISABLE_THREAD_VALIDATION.getBoolean();
private static volatile boolean disableEndpointRemoval = DISABLE_GOSSIP_ENDPOINT_REMOVAL.getBoolean();
private static long getVeryLongTime()
{
- String newVLT = System.getProperty("cassandra.very_long_time_ms");
- if (newVLT != null)
- {
- logger.info("Overriding aVeryLongTime to {}ms", newVLT);
- return Long.parseLong(newVLT);
- }
- return 259200 * 1000; // 3 days
+ long time = VERY_LONG_TIME_MS.getLong();
+ String defaultValue = VERY_LONG_TIME_MS.getDefaultValue();
+
+ if (!String.valueOf(time).equals(defaultValue))
+ logger.info("Overriding {} from {} to {}ms", VERY_LONG_TIME_MS.getKey(), defaultValue, time);
+
+ return time;
}
private static boolean isInGossipStage()
diff --git a/src/java/org/apache/cassandra/hints/Hint.java b/src/java/org/apache/cassandra/hints/Hint.java
index b710658c7e..c68c26640f 100644
--- a/src/java/org/apache/cassandra/hints/Hint.java
+++ b/src/java/org/apache/cassandra/hints/Hint.java
@@ -37,6 +37,7 @@ import org.apache.cassandra.utils.concurrent.ImmediateFuture;
import org.apache.cassandra.utils.vint.VIntCoding;
import org.assertj.core.util.VisibleForTesting;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_MAX_HINT_TTL;
import static org.apache.cassandra.db.TypeSizes.sizeof;
import static org.apache.cassandra.db.TypeSizes.sizeofUnsignedVInt;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
@@ -59,7 +60,7 @@ import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
public final class Hint
{
public static final Serializer serializer = new Serializer();
- static final int maxHintTTL = Integer.getInteger("cassandra.maxHintTTL", Integer.MAX_VALUE);
+ static final int maxHintTTL = CASSANDRA_MAX_HINT_TTL.getInt();
final Mutation mutation;
final long creationTime; // time of hint creation (in milliseconds)
diff --git a/src/java/org/apache/cassandra/hints/HintsBufferPool.java b/src/java/org/apache/cassandra/hints/HintsBufferPool.java
index 78f07dd302..dd5829d84c 100644
--- a/src/java/org/apache/cassandra/hints/HintsBufferPool.java
+++ b/src/java/org/apache/cassandra/hints/HintsBufferPool.java
@@ -22,10 +22,10 @@ import java.util.Iterator;
import java.util.UUID;
import java.util.concurrent.BlockingQueue;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.net.MessagingService;
import org.apache.cassandra.utils.concurrent.UncheckedInterruptedException;
+import static org.apache.cassandra.config.CassandraRelevantProperties.MAX_HINT_BUFFERS;
import static org.apache.cassandra.utils.concurrent.BlockingQueues.newBlockingQueue;
/**
@@ -39,7 +39,7 @@ final class HintsBufferPool implements Closeable
void flush(HintsBuffer buffer, HintsBufferPool pool);
}
- static final int MAX_ALLOCATED_BUFFERS = Integer.getInteger(Config.PROPERTY_PREFIX + "MAX_HINT_BUFFERS", 3);
+ static final int MAX_ALLOCATED_BUFFERS = MAX_HINT_BUFFERS.getInt();
private volatile HintsBuffer currentBuffer;
private final BlockingQueue<HintsBuffer> reserveBuffers;
private final int bufferSize;
diff --git a/src/java/org/apache/cassandra/index/SecondaryIndexManager.java b/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
index 93ecd595b5..4c412a2887 100644
--- a/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
+++ b/src/java/org/apache/cassandra/index/SecondaryIndexManager.java
@@ -73,6 +73,7 @@ import org.apache.cassandra.utils.JVMStabilityInspector;
import org.apache.cassandra.utils.concurrent.*;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
+import static org.apache.cassandra.config.CassandraRelevantProperties.FORCE_DEFAULT_INDEXING_PAGE_SIZE;
import static org.apache.cassandra.utils.ExecutorUtils.awaitTermination;
import static org.apache.cassandra.utils.ExecutorUtils.shutdown;
@@ -991,7 +992,7 @@ public class SecondaryIndexManager implements IndexRegistry, INotificationConsum
*/
public int calculateIndexingPageSize()
{
- if (Boolean.getBoolean("cassandra.force_default_indexing_page_size"))
+ if (FORCE_DEFAULT_INDEXING_PAGE_SIZE.getBoolean())
return DEFAULT_PAGE_SIZE;
double targetPageSizeInBytes = 32 * 1024 * 1024;
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTable.java b/src/java/org/apache/cassandra/io/sstable/SSTable.java
index 25ac7d9477..dd296e3fab 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTable.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTable.java
@@ -69,7 +69,7 @@ public abstract class SSTable
public static final int TOMBSTONE_HISTOGRAM_BIN_SIZE = 100;
public static final int TOMBSTONE_HISTOGRAM_SPOOL_SIZE = 100000;
- public static final int TOMBSTONE_HISTOGRAM_TTL_ROUND_SECONDS = CassandraRelevantProperties.TOMBSTONE_HISTOGRAM_TTL_ROUND_SECONDS.getInt();
+ public static final int TOMBSTONE_HISTOGRAM_TTL_ROUND_SECONDS = CassandraRelevantProperties.STREAMING_HISTOGRAM_ROUND_SECONDS.getInt();
public final Descriptor descriptor;
protected final Set<Component> components;
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableHeaderFix.java b/src/java/org/apache/cassandra/io/sstable/SSTableHeaderFix.java
index d0a4486b33..e785196c74 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableHeaderFix.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableHeaderFix.java
@@ -68,15 +68,15 @@ import org.apache.cassandra.utils.CassandraVersion;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.Pair;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_SKIP_AUTOMATIC_UDT_FIX;
+
/**
* Validates and fixes type issues in the serialization-header of sstables.
*/
public abstract class SSTableHeaderFix
{
// C* 3.0 upgrade code
-
- private static final String SKIPAUTOMATICUDTFIX = "cassandra.skipautomaticudtfix";
- private static final boolean SKIP_AUTOMATIC_FIX_ON_UPGRADE = Boolean.getBoolean(SKIPAUTOMATICUDTFIX);
+ private static final boolean SKIP_AUTOMATIC_FIX_ON_UPGRADE = CASSANDRA_SKIP_AUTOMATIC_UDT_FIX.getBoolean();
public static void fixNonFrozenUDTIfUpgradeFrom30()
{
@@ -96,7 +96,7 @@ public abstract class SSTableHeaderFix
"sstable metadata serialization-headers",
previousVersionString,
FBUtilities.getReleaseVersionString(),
- SKIPAUTOMATICUDTFIX);
+ CASSANDRA_SKIP_AUTOMATIC_UDT_FIX.getKey());
return;
}
diff --git a/src/java/org/apache/cassandra/io/sstable/indexsummary/IndexSummaryBuilder.java b/src/java/org/apache/cassandra/io/sstable/indexsummary/IndexSummaryBuilder.java
index 19c5b5b42a..5f38fc91f8 100644
--- a/src/java/org/apache/cassandra/io/sstable/indexsummary/IndexSummaryBuilder.java
+++ b/src/java/org/apache/cassandra/io/sstable/indexsummary/IndexSummaryBuilder.java
@@ -25,7 +25,6 @@ import java.util.TreeMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.db.DecoratedKey;
import org.apache.cassandra.db.TypeSizes;
import org.apache.cassandra.dht.IPartitioner;
@@ -33,14 +32,14 @@ import org.apache.cassandra.io.sstable.Downsampling;
import org.apache.cassandra.io.util.Memory;
import org.apache.cassandra.io.util.SafeMemoryWriter;
+import static org.apache.cassandra.config.CassandraRelevantProperties.INDEX_SUMMARY_EXPECTED_KEY_SIZE;
import static org.apache.cassandra.io.sstable.Downsampling.BASE_SAMPLING_LEVEL;
public class IndexSummaryBuilder implements AutoCloseable
{
private static final Logger logger = LoggerFactory.getLogger(IndexSummaryBuilder.class);
- static final String defaultExpectedKeySizeName = Config.PROPERTY_PREFIX + "index_summary_expected_key_size";
- static long defaultExpectedKeySize = Long.valueOf(System.getProperty(defaultExpectedKeySizeName, "64"));
+ static long defaultExpectedKeySize = INDEX_SUMMARY_EXPECTED_KEY_SIZE.getLong();
// the offset in the keys memory region to look for a given summary boundary
private final SafeMemoryWriter offsets;
diff --git a/src/java/org/apache/cassandra/io/util/BufferedDataOutputStreamPlus.java b/src/java/org/apache/cassandra/io/util/BufferedDataOutputStreamPlus.java
index 96257511aa..59470a8341 100644
--- a/src/java/org/apache/cassandra/io/util/BufferedDataOutputStreamPlus.java
+++ b/src/java/org/apache/cassandra/io/util/BufferedDataOutputStreamPlus.java
@@ -26,9 +26,10 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import net.nicoulaj.compilecommand.annotations.DontInline;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.utils.FastByteOperations;
+import static org.apache.cassandra.config.CassandraRelevantProperties.NIO_DATA_OUTPUT_STREAM_PLUS_BUFFER_SIZE;
+
/**
* An implementation of the DataOutputStreamPlus interface using a ByteBuffer to stage writes
* before flushing them to an underlying channel.
@@ -37,7 +38,7 @@ import org.apache.cassandra.utils.FastByteOperations;
*/
public class BufferedDataOutputStreamPlus extends DataOutputStreamPlus
{
- private static final int DEFAULT_BUFFER_SIZE = Integer.getInteger(Config.PROPERTY_PREFIX + "nio_data_output_stream_plus_buffer_size", 1024 * 32);
+ private static final int DEFAULT_BUFFER_SIZE = NIO_DATA_OUTPUT_STREAM_PLUS_BUFFER_SIZE.getInt();
protected ByteBuffer buffer;
diff --git a/src/java/org/apache/cassandra/io/util/DataOutputBuffer.java b/src/java/org/apache/cassandra/io/util/DataOutputBuffer.java
index ee669fa5a6..d27a93555b 100644
--- a/src/java/org/apache/cassandra/io/util/DataOutputBuffer.java
+++ b/src/java/org/apache/cassandra/io/util/DataOutputBuffer.java
@@ -26,9 +26,10 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import io.netty.util.concurrent.FastThreadLocal;
-import org.apache.cassandra.config.Config;
import static org.apache.cassandra.config.CassandraRelevantProperties.DATA_OUTPUT_BUFFER_ALLOCATE_TYPE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DOB_DOUBLING_THRESHOLD_MB;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DOB_MAX_RECYCLE_BYTES;
/**
* An implementation of the DataOutputStream interface using a FastByteArrayOutputStream and exposing
@@ -41,12 +42,12 @@ public class DataOutputBuffer extends BufferedDataOutputStreamPlus
/*
* Threshold at which resizing transitions from doubling to increasing by 50%
*/
- static final long DOUBLING_THRESHOLD = Long.getLong(Config.PROPERTY_PREFIX + "DOB_DOUBLING_THRESHOLD_MB", 64);
+ static final long DOUBLING_THRESHOLD = DOB_DOUBLING_THRESHOLD_MB.getLong();
/*
* Only recycle OutputBuffers up to 1Mb. Larger buffers will be trimmed back to this size.
*/
- private static final int MAX_RECYCLE_BUFFER_SIZE = Integer.getInteger(Config.PROPERTY_PREFIX + "dob_max_recycle_bytes", 1024 * 1024);
+ private static final int MAX_RECYCLE_BUFFER_SIZE = DOB_MAX_RECYCLE_BYTES.getInt();
private enum AllocationType { DIRECT, ONHEAP }
private static final AllocationType ALLOCATION_TYPE = DATA_OUTPUT_BUFFER_ALLOCATE_TYPE.getEnum(AllocationType.DIRECT);
diff --git a/src/java/org/apache/cassandra/io/util/DataOutputStreamPlus.java b/src/java/org/apache/cassandra/io/util/DataOutputStreamPlus.java
index e931899c07..7dd2341bba 100644
--- a/src/java/org/apache/cassandra/io/util/DataOutputStreamPlus.java
+++ b/src/java/org/apache/cassandra/io/util/DataOutputStreamPlus.java
@@ -23,9 +23,10 @@ import java.nio.ByteBuffer;
import java.nio.channels.WritableByteChannel;
import io.netty.util.concurrent.FastThreadLocal;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.utils.ByteBufferUtil;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DATA_OUTPUT_STREAM_PLUS_TEMP_BUFFER_SIZE;
+
/**
* Abstract base class for DataOutputStreams that accept writes from ByteBuffer or Memory and also provide
* access to the underlying WritableByteChannel associated with their output stream.
@@ -47,8 +48,7 @@ public abstract class DataOutputStreamPlus extends OutputStream implements DataO
this.channel = channel;
}
- private static int MAX_BUFFER_SIZE =
- Integer.getInteger(Config.PROPERTY_PREFIX + "data_output_stream_plus_temp_buffer_size", 8192);
+ private static final int MAX_BUFFER_SIZE = DATA_OUTPUT_STREAM_PLUS_TEMP_BUFFER_SIZE.getInt();
/*
* Factored out into separate method to create more flexibility around inlining
diff --git a/src/java/org/apache/cassandra/io/util/PathUtils.java b/src/java/org/apache/cassandra/io/util/PathUtils.java
index 4b3efdb559..027742f48f 100644
--- a/src/java/org/apache/cassandra/io/util/PathUtils.java
+++ b/src/java/org/apache/cassandra/io/util/PathUtils.java
@@ -58,7 +58,7 @@ import static org.apache.cassandra.utils.Throwables.merge;
*/
public final class PathUtils
{
- private static final boolean consistentDirectoryListings = CassandraRelevantProperties.DETERMINISM_CONSISTENT_DIRECTORY_LISTINGS.getBoolean();
+ private static final boolean consistentDirectoryListings = CassandraRelevantProperties.CONSISTENT_DIRECTORY_LISTINGS.getBoolean();
private static final Set<StandardOpenOption> READ_OPTIONS = unmodifiableSet(EnumSet.of(READ));
private static final Set<StandardOpenOption> WRITE_OPTIONS = unmodifiableSet(EnumSet.of(WRITE, CREATE, TRUNCATE_EXISTING));
diff --git a/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java b/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
index 84c627312e..77e04e6887 100644
--- a/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
+++ b/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
@@ -43,12 +43,14 @@ import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.MBeanWrapper;
+import static org.apache.cassandra.config.CassandraRelevantProperties.IGNORE_DYNAMIC_SNITCH_SEVERITY;
+
/**
* A dynamic snitch that sorts endpoints by latency with an adapted phi failure detector
*/
public class DynamicEndpointSnitch extends AbstractEndpointSnitch implements LatencySubscribers.Subscriber, DynamicEndpointSnitchMBean
{
- private static final boolean USE_SEVERITY = !Boolean.getBoolean("cassandra.ignore_dynamic_snitch_severity");
+ private static final boolean USE_SEVERITY = !IGNORE_DYNAMIC_SNITCH_SEVERITY.getBoolean();
private static final double ALPHA = 0.75; // set to 0.75 to make EDS more biased to towards the newer values
private static final int WINDOW_SIZE = 100;
diff --git a/src/java/org/apache/cassandra/locator/SnitchProperties.java b/src/java/org/apache/cassandra/locator/SnitchProperties.java
index afb680430d..b0bfe4c2ef 100644
--- a/src/java/org/apache/cassandra/locator/SnitchProperties.java
+++ b/src/java/org/apache/cassandra/locator/SnitchProperties.java
@@ -25,10 +25,12 @@ import org.apache.cassandra.io.util.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_RACKDC_PROPERTIES;
+
public class SnitchProperties
{
private static final Logger logger = LoggerFactory.getLogger(SnitchProperties.class);
- public static final String RACKDC_PROPERTY_FILENAME = "cassandra-rackdc.properties";
+ public static final String RACKDC_PROPERTY_FILENAME = CASSANDRA_RACKDC_PROPERTIES.getKey();
private final Properties properties;
@@ -36,7 +38,7 @@ public class SnitchProperties
{
properties = new Properties();
InputStream stream = null;
- String configURL = System.getProperty(RACKDC_PROPERTY_FILENAME);
+ String configURL = CASSANDRA_RACKDC_PROPERTIES.getString();
try
{
URL url;
diff --git a/src/java/org/apache/cassandra/metrics/DecayingEstimatedHistogramReservoir.java b/src/java/org/apache/cassandra/metrics/DecayingEstimatedHistogramReservoir.java
index 308023e699..565e33f1b5 100644
--- a/src/java/org/apache/cassandra/metrics/DecayingEstimatedHistogramReservoir.java
+++ b/src/java/org/apache/cassandra/metrics/DecayingEstimatedHistogramReservoir.java
@@ -42,6 +42,7 @@ import org.apache.cassandra.utils.NoSpamLogger;
import static java.lang.Math.max;
import static java.lang.Math.min;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DECAYING_ESTIMATED_HISTOGRAM_RESERVOIR_STRIPE_COUNT;
/**
* A decaying histogram reservoir where values collected during each minute will be twice as significant as the values
@@ -91,7 +92,7 @@ public class DecayingEstimatedHistogramReservoir implements SnapshottingReservoi
*/
public static final int DEFAULT_BUCKET_COUNT = 164;
public static final int LOW_BUCKET_COUNT = 127;
- public static final int DEFAULT_STRIPE_COUNT = Integer.parseInt(System.getProperty("cassandra.dehr_stripe_count", "2"));
+ public static final int DEFAULT_STRIPE_COUNT = DECAYING_ESTIMATED_HISTOGRAM_RESERVOIR_STRIPE_COUNT.getInt();
public static final int MAX_BUCKET_COUNT = 237;
public static final boolean DEFAULT_ZERO_CONSIDERATION = false;
diff --git a/src/java/org/apache/cassandra/net/OutboundConnectionSettings.java b/src/java/org/apache/cassandra/net/OutboundConnectionSettings.java
index 332987ad2b..6a2543f783 100644
--- a/src/java/org/apache/cassandra/net/OutboundConnectionSettings.java
+++ b/src/java/org/apache/cassandra/net/OutboundConnectionSettings.java
@@ -23,6 +23,7 @@ import com.google.common.base.Preconditions;
import io.netty.channel.WriteBufferWaterMark;
import org.apache.cassandra.auth.IInternodeAuthenticator;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.EncryptionOptions.ServerEncryptionOptions;
@@ -42,11 +43,10 @@ import static org.apache.cassandra.utils.FBUtilities.getBroadcastAddressAndPort;
@SuppressWarnings({ "WeakerAccess", "unused" })
public class OutboundConnectionSettings
{
- private static final String INTRADC_TCP_NODELAY_PROPERTY = Config.PROPERTY_PREFIX + "otc_intradc_tcp_nodelay";
/**
* Enabled/disable TCP_NODELAY for intradc connections. Defaults to enabled.
*/
- private static final boolean INTRADC_TCP_NODELAY = Boolean.parseBoolean(System.getProperty(INTRADC_TCP_NODELAY_PROPERTY, "true"));
+ private static final boolean INTRADC_TCP_NODELAY = CassandraRelevantProperties.OTC_INTRADC_TCP_NODELAY.getBoolean();
public enum Framing
{
diff --git a/src/java/org/apache/cassandra/net/OutboundConnections.java b/src/java/org/apache/cassandra/net/OutboundConnections.java
index ad87ec588c..0729194a19 100644
--- a/src/java/org/apache/cassandra/net/OutboundConnections.java
+++ b/src/java/org/apache/cassandra/net/OutboundConnections.java
@@ -39,9 +39,8 @@ import org.apache.cassandra.metrics.InternodeOutboundMetrics;
import org.apache.cassandra.utils.NoSpamLogger;
import org.apache.cassandra.utils.concurrent.UncheckedInterruptedException;
-import static java.lang.Integer.getInteger;
import static java.lang.Math.max;
-import static org.apache.cassandra.config.Config.PROPERTY_PREFIX;
+import static org.apache.cassandra.config.CassandraRelevantProperties.OTCP_LARGE_MESSAGE_THRESHOLD;
import static org.apache.cassandra.gms.Gossiper.instance;
import static org.apache.cassandra.net.FrameEncoderCrc.HEADER_AND_TRAILER_LENGTH;
import static org.apache.cassandra.net.LegacyLZ4Constants.HEADER_LENGTH;
@@ -62,7 +61,7 @@ public class OutboundConnections
private static final Logger logger = LoggerFactory.getLogger(OutboundConnections.class);
@VisibleForTesting
- public static final int LARGE_MESSAGE_THRESHOLD = getInteger(PROPERTY_PREFIX + "otcp_large_message_threshold", 1024 * 64)
+ public static final int LARGE_MESSAGE_THRESHOLD = OTCP_LARGE_MESSAGE_THRESHOLD.getInt()
- max(max(HEADER_LENGTH, HEADER_AND_TRAILER_LENGTH), FrameEncoderLZ4.HEADER_AND_TRAILER_LENGTH);
private final Condition metricsReady = newOneTimeCondition();
diff --git a/src/java/org/apache/cassandra/net/SocketFactory.java b/src/java/org/apache/cassandra/net/SocketFactory.java
index b135ed5107..78256267ac 100644
--- a/src/java/org/apache/cassandra/net/SocketFactory.java
+++ b/src/java/org/apache/cassandra/net/SocketFactory.java
@@ -61,7 +61,6 @@ import io.netty.util.concurrent.ThreadPerTaskExecutor;
import io.netty.util.internal.logging.InternalLoggerFactory;
import io.netty.util.internal.logging.Slf4JLoggerFactory;
import org.apache.cassandra.concurrent.NamedThreadFactory;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.EncryptionOptions;
import org.apache.cassandra.locator.InetAddressAndPort;
import org.apache.cassandra.security.SSLFactory;
@@ -73,6 +72,7 @@ import static io.netty.channel.unix.Errors.ERRNO_ECONNRESET_NEGATIVE;
import static io.netty.channel.unix.Errors.ERROR_ECONNREFUSED_NEGATIVE;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
+import static org.apache.cassandra.config.CassandraRelevantProperties.INTERNODE_EVENT_THREADS;
import static org.apache.cassandra.utils.Throwables.isCausedBy;
/**
@@ -83,7 +83,7 @@ public final class SocketFactory
{
private static final Logger logger = LoggerFactory.getLogger(SocketFactory.class);
- private static final int EVENT_THREADS = Integer.getInteger(Config.PROPERTY_PREFIX + "internode-event-threads", FBUtilities.getAvailableProcessors());
+ private static final int EVENT_THREADS = INTERNODE_EVENT_THREADS.getInt(FBUtilities.getAvailableProcessors());
/**
* The default task queue used by {@code NioEventLoop} and {@code EpollEventLoop} is {@code MpscUnboundedArrayQueue},
diff --git a/src/java/org/apache/cassandra/repair/consistent/LocalSessions.java b/src/java/org/apache/cassandra/repair/consistent/LocalSessions.java
index ed2bf0bc0b..ed1e37ae75 100644
--- a/src/java/org/apache/cassandra/repair/consistent/LocalSessions.java
+++ b/src/java/org/apache/cassandra/repair/consistent/LocalSessions.java
@@ -98,6 +98,10 @@ import org.apache.cassandra.utils.TimeUUID;
import org.apache.cassandra.utils.concurrent.Future;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPAIR_CLEANUP_INTERVAL_SECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPAIR_DELETE_TIMEOUT_SECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPAIR_FAIL_TIMEOUT_SECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPAIR_STATUS_CHECK_TIMEOUT_SECONDS;
import static org.apache.cassandra.net.Verb.FAILED_SESSION_MSG;
import static org.apache.cassandra.net.Verb.FINALIZE_PROMISE_MSG;
import static org.apache.cassandra.net.Verb.PREPARE_CONSISTENT_RSP;
@@ -121,26 +125,22 @@ public class LocalSessions
* Amount of time a session can go without any activity before we start checking the status of other
* participants to see if we've missed a message
*/
- static final int CHECK_STATUS_TIMEOUT = Integer.getInteger("cassandra.repair_status_check_timeout_seconds",
- Ints.checkedCast(TimeUnit.HOURS.toSeconds(1)));
+ static final int CHECK_STATUS_TIMEOUT = REPAIR_STATUS_CHECK_TIMEOUT_SECONDS.getInt();
/**
* Amount of time a session can go without any activity before being automatically set to FAILED
*/
- static final int AUTO_FAIL_TIMEOUT = Integer.getInteger("cassandra.repair_fail_timeout_seconds",
- Ints.checkedCast(TimeUnit.DAYS.toSeconds(1)));
+ static final int AUTO_FAIL_TIMEOUT = REPAIR_FAIL_TIMEOUT_SECONDS.getInt();
/**
* Amount of time a completed session is kept around after completion before being deleted, this gives
* compaction plenty of time to move sstables from successful sessions into the repaired bucket
*/
- static final int AUTO_DELETE_TIMEOUT = Integer.getInteger("cassandra.repair_delete_timeout_seconds",
- Ints.checkedCast(TimeUnit.DAYS.toSeconds(1)));
+ static final int AUTO_DELETE_TIMEOUT = REPAIR_DELETE_TIMEOUT_SECONDS.getInt();
/**
* How often LocalSessions.cleanup is run
*/
- public static final int CLEANUP_INTERVAL = Integer.getInteger("cassandra.repair_cleanup_interval_seconds",
- Ints.checkedCast(TimeUnit.MINUTES.toSeconds(10)));
+ public static final int CLEANUP_INTERVAL = REPAIR_CLEANUP_INTERVAL_SECONDS.getInt();
private static Set<TableId> uuidToTableId(Set<UUID> src)
{
diff --git a/src/java/org/apache/cassandra/schema/CompactionParams.java b/src/java/org/apache/cassandra/schema/CompactionParams.java
index 485946820e..eff634f429 100644
--- a/src/java/org/apache/cassandra/schema/CompactionParams.java
+++ b/src/java/org/apache/cassandra/schema/CompactionParams.java
@@ -38,6 +38,7 @@ import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.utils.FBUtilities;
import static java.lang.String.format;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DEFAULT_PROVIDE_OVERLAPPING_TOMBSTONES;
public final class CompactionParams
{
@@ -76,15 +77,15 @@ public final class CompactionParams
public static final int DEFAULT_MAX_THRESHOLD = 32;
public static final boolean DEFAULT_ENABLED = true;
- public static final TombstoneOption DEFAULT_PROVIDE_OVERLAPPING_TOMBSTONES =
- TombstoneOption.valueOf(System.getProperty("default.provide.overlapping.tombstones", TombstoneOption.NONE.toString()).toUpperCase());
+ public static final TombstoneOption DEFAULT_PROVIDE_OVERLAPPING_TOMBSTONES_PROPERTY_VALUE =
+ DEFAULT_PROVIDE_OVERLAPPING_TOMBSTONES.getEnum(TombstoneOption.NONE);
public static final Map<String, String> DEFAULT_THRESHOLDS =
ImmutableMap.of(Option.MIN_THRESHOLD.toString(), Integer.toString(DEFAULT_MIN_THRESHOLD),
Option.MAX_THRESHOLD.toString(), Integer.toString(DEFAULT_MAX_THRESHOLD));
public static final CompactionParams DEFAULT =
- new CompactionParams(SizeTieredCompactionStrategy.class, DEFAULT_THRESHOLDS, DEFAULT_ENABLED, DEFAULT_PROVIDE_OVERLAPPING_TOMBSTONES);
+ new CompactionParams(SizeTieredCompactionStrategy.class, DEFAULT_THRESHOLDS, DEFAULT_ENABLED, DEFAULT_PROVIDE_OVERLAPPING_TOMBSTONES_PROPERTY_VALUE);
private final Class<? extends AbstractCompactionStrategy> klass;
private final ImmutableMap<String, String> options;
@@ -105,7 +106,7 @@ public final class CompactionParams
? Boolean.parseBoolean(options.get(Option.ENABLED.toString()))
: DEFAULT_ENABLED;
String overlappingTombstoneParm = options.getOrDefault(Option.PROVIDE_OVERLAPPING_TOMBSTONES.toString(),
- DEFAULT_PROVIDE_OVERLAPPING_TOMBSTONES.toString()).toUpperCase();
+ DEFAULT_PROVIDE_OVERLAPPING_TOMBSTONES_PROPERTY_VALUE.toString()).toUpperCase();
Optional<TombstoneOption> tombstoneOptional = TombstoneOption.forName(overlappingTombstoneParm);
if (!tombstoneOptional.isPresent())
{
diff --git a/src/java/org/apache/cassandra/schema/DefaultSchemaUpdateHandler.java b/src/java/org/apache/cassandra/schema/DefaultSchemaUpdateHandler.java
index 0f0c3e9cf5..0bea57712d 100644
--- a/src/java/org/apache/cassandra/schema/DefaultSchemaUpdateHandler.java
+++ b/src/java/org/apache/cassandra/schema/DefaultSchemaUpdateHandler.java
@@ -129,7 +129,7 @@ public class DefaultSchemaUpdateHandler implements SchemaUpdateHandler, IEndpoin
return true;
logger.warn("There are nodes in the cluster with a different schema version than us, from which we did not merge schemas: " +
- "our version: ({}), outstanding versions -> endpoints: {}. Use -D{}}=true to ignore this, " +
+ "our version: ({}), outstanding versions -> endpoints: {}. Use -D{}=true to ignore this, " +
"-D{}=<ep1[,epN]> to skip specific endpoints, or -D{}=<ver1[,verN]> to skip specific schema versions",
Schema.instance.getVersion(),
migrationCoordinator.outstandingVersions(),
diff --git a/src/java/org/apache/cassandra/schema/MigrationCoordinator.java b/src/java/org/apache/cassandra/schema/MigrationCoordinator.java
index a1af1c0445..562489966a 100644
--- a/src/java/org/apache/cassandra/schema/MigrationCoordinator.java
+++ b/src/java/org/apache/cassandra/schema/MigrationCoordinator.java
@@ -254,10 +254,11 @@ public class MigrationCoordinator
void start()
{
- logger.info("Starting migration coordinator and scheduling pulling schema versions every {}", Duration.ofMillis(SCHEMA_PULL_INTERVAL_MS.getLong()));
+ long interval = SCHEMA_PULL_INTERVAL_MS.getLong();
+ logger.info("Starting migration coordinator and scheduling pulling schema versions every {}", Duration.ofMillis(interval));
announce(schemaVersion.get());
periodicPullTask.updateAndGet(curTask -> curTask == null
- ? periodicCheckExecutor.scheduleWithFixedDelay(this::pullUnreceivedSchemaVersions, SCHEMA_PULL_INTERVAL_MS.getLong(), SCHEMA_PULL_INTERVAL_MS.getLong(), TimeUnit.MILLISECONDS)
+ ? periodicCheckExecutor.scheduleWithFixedDelay(this::pullUnreceivedSchemaVersions, interval, interval, TimeUnit.MILLISECONDS)
: curTask);
}
diff --git a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
index 4a21704c9f..d11f8705f9 100644
--- a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
+++ b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java
@@ -57,6 +57,8 @@ import static java.lang.String.format;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toSet;
+import static org.apache.cassandra.config.CassandraRelevantProperties.IGNORE_CORRUPTED_SCHEMA_TABLES;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_FLUSH_LOCAL_SCHEMA_CHANGES;
import static org.apache.cassandra.cql3.QueryProcessor.executeInternal;
import static org.apache.cassandra.cql3.QueryProcessor.executeOnceInternal;
import static org.apache.cassandra.schema.SchemaKeyspaceTables.*;
@@ -77,8 +79,8 @@ public final class SchemaKeyspace
private static final Logger logger = LoggerFactory.getLogger(SchemaKeyspace.class);
- private static final boolean FLUSH_SCHEMA_TABLES = CassandraRelevantProperties.FLUSH_LOCAL_SCHEMA_CHANGES.getBoolean();
- private static final boolean IGNORE_CORRUPTED_SCHEMA_TABLES = Boolean.parseBoolean(System.getProperty("cassandra.ignore_corrupted_schema_tables", "false"));
+ private static final boolean FLUSH_SCHEMA_TABLES = TEST_FLUSH_LOCAL_SCHEMA_CHANGES.getBoolean();
+ private static final boolean IGNORE_CORRUPTED_SCHEMA_TABLES_PROPERTY_VALUE = IGNORE_CORRUPTED_SCHEMA_TABLES.getBoolean();
/**
* The tables to which we added the cdc column. This is used in {@link #makeUpdateForSchema} below to make sure we skip that
@@ -1002,13 +1004,13 @@ public final class SchemaKeyspace
SchemaConstants.SCHEMA_KEYSPACE_NAME, COLUMNS, keyspaceName, tableName,
SchemaConstants.SCHEMA_KEYSPACE_NAME, COLUMNS);
- if (IGNORE_CORRUPTED_SCHEMA_TABLES)
+ if (IGNORE_CORRUPTED_SCHEMA_TABLES_PROPERTY_VALUE)
{
logger.error(errorMsg, "", exc);
}
else
{
- logger.error(errorMsg, "restart cassandra with -Dcassandra.ignore_corrupted_schema_tables=true and ");
+ logger.error(errorMsg, "restart cassandra with -D{}=true and ", IGNORE_CORRUPTED_SCHEMA_TABLES.getKey());
throw exc;
}
}
diff --git a/src/java/org/apache/cassandra/schema/SchemaUpdateHandlerFactoryProvider.java b/src/java/org/apache/cassandra/schema/SchemaUpdateHandlerFactoryProvider.java
index 9411a9285c..63d170a781 100644
--- a/src/java/org/apache/cassandra/schema/SchemaUpdateHandlerFactoryProvider.java
+++ b/src/java/org/apache/cassandra/schema/SchemaUpdateHandlerFactoryProvider.java
@@ -25,12 +25,17 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SCHEMA_UPDATE_HANDLER_FACTORY_CLASS;
+
/**
- * Provides the instance of SchemaUpdateHandler factory pointed by {@link #SUH_FACTORY_CLASS_PROPERTY} system property.
+ * Provides the instance of SchemaUpdateHandler factory pointed by
+ * {@link org.apache.cassandra.config.CassandraRelevantProperties#SCHEMA_UPDATE_HANDLER_FACTORY_CLASS} system property.
* If the property is not defined, the default factory {@link DefaultSchemaUpdateHandler} instance is returned.
*/
public class SchemaUpdateHandlerFactoryProvider implements Provider<SchemaUpdateHandlerFactory>
{
+ /** @deprecated Use CassandraRelevantProperties.SCHEMA_UPDATE_HANDLER_FACTORY_CLASS instead. */
+ @Deprecated
public static final String SUH_FACTORY_CLASS_PROPERTY = "cassandra.schema.update_handler_factory.class";
public final static SchemaUpdateHandlerFactoryProvider instance = new SchemaUpdateHandlerFactoryProvider();
@@ -38,7 +43,7 @@ public class SchemaUpdateHandlerFactoryProvider implements Provider<SchemaUpdate
@Override
public SchemaUpdateHandlerFactory get()
{
- String suhFactoryClassName = StringUtils.trimToNull(System.getProperty(SUH_FACTORY_CLASS_PROPERTY));
+ String suhFactoryClassName = StringUtils.trimToNull(SCHEMA_UPDATE_HANDLER_FACTORY_CLASS.getString());
if (suhFactoryClassName == null)
{
return DefaultSchemaUpdateHandlerFactory.instance;
@@ -53,7 +58,7 @@ public class SchemaUpdateHandlerFactoryProvider implements Provider<SchemaUpdate
catch (InstantiationException | IllegalAccessException ex)
{
throw new ConfigurationException(String.format("Failed to initialize schema update handler factory class %s defined in %s system property.",
- suhFactoryClassName, SUH_FACTORY_CLASS_PROPERTY), ex);
+ suhFactoryClassName, SCHEMA_UPDATE_HANDLER_FACTORY_CLASS.getKey()), ex);
}
}
}
diff --git a/src/java/org/apache/cassandra/security/AbstractSslContextFactory.java b/src/java/org/apache/cassandra/security/AbstractSslContextFactory.java
index e4f868f9b1..406c4720f2 100644
--- a/src/java/org/apache/cassandra/security/AbstractSslContextFactory.java
+++ b/src/java/org/apache/cassandra/security/AbstractSslContextFactory.java
@@ -35,7 +35,8 @@ import io.netty.handler.ssl.OpenSsl;
import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.SslContextBuilder;
import io.netty.handler.ssl.SslProvider;
-import org.apache.cassandra.config.Config;
+
+import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_TCACTIVE_OPENSSL;
/**
* Abstract class implementing {@code ISslContextFacotry} to provide most of the functionality that any
@@ -109,12 +110,13 @@ abstract public class AbstractSslContextFactory implements ISslContextFactory
/**
* Dervies if {@code OpenSSL} is available. It allows in-jvm dtests to disable tcnative openssl support by
- * setting {@code cassandra.disable_tcactive_openssl} system property as {@code true}. Otherwise, it creates a
- * circular reference that prevents the instance class loader from being garbage collected.
+ * setting {@link org.apache.cassandra.config.CassandraRelevantProperties#DISABLE_TCACTIVE_OPENSSL}
+ * system property as {@code true}. Otherwise, it creates a circular reference that prevents the instance
+ * class loader from being garbage collected.
*/
protected void deriveIfOpenSslAvailable()
{
- if (Boolean.getBoolean(Config.PROPERTY_PREFIX + "disable_tcactive_openssl"))
+ if (DISABLE_TCACTIVE_OPENSSL.getBoolean())
openSslIsAvailable = false;
else
openSslIsAvailable = OpenSsl.isAvailable();
diff --git a/src/java/org/apache/cassandra/security/SSLFactory.java b/src/java/org/apache/cassandra/security/SSLFactory.java
index e06da1f0cb..e6da577202 100644
--- a/src/java/org/apache/cassandra/security/SSLFactory.java
+++ b/src/java/org/apache/cassandra/security/SSLFactory.java
@@ -41,11 +41,12 @@ import io.netty.handler.ssl.OpenSsl;
import io.netty.handler.ssl.SslContext;
import io.netty.util.ReferenceCountUtil;
import org.apache.cassandra.concurrent.ScheduledExecutors;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.EncryptionOptions;
import org.apache.cassandra.security.ISslContextFactory.SocketType;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_TCACTIVE_OPENSSL;
+
/**
* A Factory for providing and setting up client {@link SSLSocket}s. Also provides
* methods for creating both JSSE {@link SSLContext} instances as well as netty {@link SslContext} instances.
@@ -64,7 +65,7 @@ public final class SSLFactory
static private final boolean openSslIsAvailable;
static
{
- if (Boolean.getBoolean(Config.PROPERTY_PREFIX + "disable_tcactive_openssl"))
+ if (DISABLE_TCACTIVE_OPENSSL.getBoolean())
{
openSslIsAvailable = false;
}
diff --git a/src/java/org/apache/cassandra/service/ActiveRepairService.java b/src/java/org/apache/cassandra/service/ActiveRepairService.java
index eaba5d944e..5d69507656 100644
--- a/src/java/org/apache/cassandra/service/ActiveRepairService.java
+++ b/src/java/org/apache/cassandra/service/ActiveRepairService.java
@@ -119,6 +119,11 @@ import static com.google.common.collect.Iterables.transform;
import static java.util.Collections.synchronizedSet;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PARENT_REPAIR_STATUS_CACHE_SIZE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PARENT_REPAIR_STATUS_EXPIRY_SECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PAXOS_REPAIR_ALLOW_MULTIPLE_PENDING_UNSAFE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SKIP_PAXOS_REPAIR_ON_TOPOLOGY_CHANGE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SKIP_PAXOS_REPAIR_ON_TOPOLOGY_CHANGE_KEYSPACES;
import static org.apache.cassandra.config.Config.RepairCommandPoolFullStrategy.reject;
import static org.apache.cassandra.config.DatabaseDescriptor.*;
import static org.apache.cassandra.net.Message.out;
@@ -221,13 +226,11 @@ public class ActiveRepairService implements IEndpointStateChangeSubscriber, IFai
this.failureDetector = failureDetector;
this.gossiper = gossiper;
this.repairStatusByCmd = CacheBuilder.newBuilder()
- .expireAfterWrite(
- Long.getLong("cassandra.parent_repair_status_expiry_seconds",
- TimeUnit.SECONDS.convert(1, TimeUnit.DAYS)), TimeUnit.SECONDS)
+ .expireAfterWrite(PARENT_REPAIR_STATUS_EXPIRY_SECONDS.getLong(), TimeUnit.SECONDS)
// using weight wouldn't work so well, since it doesn't reflect mutation of cached data
// see https://github.com/google/guava/wiki/CachesExplained
// We assume each entry is unlikely to be much more than 100 bytes, so bounding the size should be sufficient.
- .maximumSize(Long.getLong("cassandra.parent_repair_status_cache_size", 100_000))
+ .maximumSize(PARENT_REPAIR_STATUS_CACHE_SIZE.getLong())
.build();
DurationSpec.LongNanosecondsBound duration = getRepairStateExpires();
@@ -1055,21 +1058,21 @@ public class ActiveRepairService implements IEndpointStateChangeSubscriber, IFai
throw new RuntimeException(String.format("Insufficient live nodes to repair paxos for %s in %s for %s.\n" +
"There must be enough live nodes to satisfy EACH_QUORUM, but the following nodes are down: %s\n" +
"This check can be skipped by setting either the yaml property skip_paxos_repair_on_topology_change or " +
- "the system property cassandra.skip_paxos_repair_on_topology_change to false. The jmx property " +
+ "the system property %s to false. The jmx property " +
"StorageService.SkipPaxosRepairOnTopologyChange can also be set to false to temporarily disable without " +
"restarting the node\n" +
"Individual keyspaces can be skipped with the yaml property skip_paxos_repair_on_topology_change_keyspaces, the" +
- "system property cassandra.skip_paxos_repair_on_topology_change_keyspaces, or temporarily with the jmx" +
+ "system property %s, or temporarily with the jmx" +
"property StorageService.SkipPaxosRepairOnTopologyChangeKeyspaces\n" +
"Skipping this check can lead to paxos correctness issues",
- range, ksName, reason, downEndpoints));
+ range, ksName, reason, downEndpoints, SKIP_PAXOS_REPAIR_ON_TOPOLOGY_CHANGE.getKey(), SKIP_PAXOS_REPAIR_ON_TOPOLOGY_CHANGE_KEYSPACES.getKey()));
}
EndpointsForToken pending = StorageService.instance.getTokenMetadata().pendingEndpointsForToken(range.right, ksName);
- if (pending.size() > 1 && !Boolean.getBoolean("cassandra.paxos_repair_allow_multiple_pending_unsafe"))
+ if (pending.size() > 1 && !PAXOS_REPAIR_ALLOW_MULTIPLE_PENDING_UNSAFE.getBoolean())
{
throw new RuntimeException(String.format("Cannot begin paxos auto repair for %s in %s.%s, multiple pending endpoints exist for range (%s). " +
- "Set -Dcassandra.paxos_repair_allow_multiple_pending_unsafe=true to skip this check",
- range, table.keyspace, table.name, pending));
+ "Set -D%s=true to skip this check",
+ range, table.keyspace, table.name, pending, PAXOS_REPAIR_ALLOW_MULTIPLE_PENDING_UNSAFE.getKey()));
}
Future<Void> future = PaxosCleanup.cleanup(endpoints, table, Collections.singleton(range), false, repairCommandExecutor());
diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java b/src/java/org/apache/cassandra/service/CassandraDaemon.java
index c08701cbb7..84fc5b1e89 100644
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@ -92,12 +92,17 @@ import org.apache.cassandra.utils.logging.VirtualTableAppender;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_FOREGROUND;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_JMX_LOCAL_PORT;
import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_JMX_REMOTE_PORT;
import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_PID_FILE;
import static org.apache.cassandra.config.CassandraRelevantProperties.COM_SUN_MANAGEMENT_JMXREMOTE_PORT;
import static org.apache.cassandra.config.CassandraRelevantProperties.JAVA_CLASS_PATH;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JAVA_RMI_SERVER_RANDOM_ID;
import static org.apache.cassandra.config.CassandraRelevantProperties.JAVA_VERSION;
import static org.apache.cassandra.config.CassandraRelevantProperties.JAVA_VM_NAME;
+import static org.apache.cassandra.config.CassandraRelevantProperties.METRICS_REPORTER_CONFIG_FILE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SIZE_RECORDER_INTERVAL;
+import static org.apache.cassandra.config.CassandraRelevantProperties.START_NATIVE_TRANSPORT;
/**
* The <code>CassandraDaemon</code> is an abstraction for a Cassandra daemon
@@ -151,7 +156,7 @@ public class CassandraDaemon
return;
}
- System.setProperty("java.rmi.server.randomIDs", "true");
+ JAVA_RMI_SERVER_RANDOM_ID.setBoolean(true);
// If a remote port has been specified then use that to set up a JMX
// connector server which can be accessed remotely. Otherwise, look
@@ -167,7 +172,7 @@ public class CassandraDaemon
if (jmxPort == null)
{
localOnly = true;
- jmxPort = System.getProperty("cassandra.jmx.local.port");
+ jmxPort = CASSANDRA_JMX_LOCAL_PORT.getString();
}
if (jmxPort == null)
@@ -368,7 +373,7 @@ public class CassandraDaemon
// schedule periodic dumps of table size estimates into SystemKeyspace.SIZE_ESTIMATES_CF
// set cassandra.size_recorder_interval to 0 to disable
- int sizeRecorderInterval = Integer.getInteger("cassandra.size_recorder_interval", 5 * 60);
+ int sizeRecorderInterval = SIZE_RECORDER_INTERVAL.getInt();
if (sizeRecorderInterval > 0)
ScheduledExecutors.optionalTasks.scheduleWithFixedDelay(SizeEstimatesRecorder.instance, 30, sizeRecorderInterval, TimeUnit.SECONDS);
@@ -379,7 +384,7 @@ public class CassandraDaemon
QueryProcessor.instance.preloadPreparedStatements();
// Metrics
- String metricsReporterConfigFile = System.getProperty("cassandra.metricsReporterConfigFile");
+ String metricsReporterConfigFile = METRICS_REPORTER_CONFIG_FILE.getString();
if (metricsReporterConfigFile != null)
{
logger.info("Trying to load metrics-reporter-config from file: {}", metricsReporterConfigFile);
@@ -698,8 +703,8 @@ public class CassandraDaemon
private void startClientTransports()
{
- String nativeFlag = System.getProperty("cassandra.start_native_transport");
- if ((nativeFlag != null && Boolean.parseBoolean(nativeFlag)) || (nativeFlag == null && DatabaseDescriptor.startNativeTransport()))
+ String nativeFlag = START_NATIVE_TRANSPORT.getString();
+ if (START_NATIVE_TRANSPORT.getBoolean() || (nativeFlag == null && DatabaseDescriptor.startNativeTransport()))
{
startNativeTransport();
StorageService.instance.setRpcReady(true);
diff --git a/src/java/org/apache/cassandra/service/ClientState.java b/src/java/org/apache/cassandra/service/ClientState.java
index 1e1a1db9f0..f03a9712e8 100644
--- a/src/java/org/apache/cassandra/service/ClientState.java
+++ b/src/java/org/apache/cassandra/service/ClientState.java
@@ -58,6 +58,7 @@ import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.JVMStabilityInspector;
import org.apache.cassandra.utils.MD5Digest;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CUSTOM_QUERY_HANDLER_CLASS;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
/**
@@ -101,13 +102,14 @@ public class ClientState
static
{
QueryHandler handler = QueryProcessor.instance;
- String customHandlerClass = System.getProperty("cassandra.custom_query_handler_class");
+ String customHandlerClass = CUSTOM_QUERY_HANDLER_CLASS.getString();
if (customHandlerClass != null)
{
try
{
handler = FBUtilities.construct(customHandlerClass, "QueryHandler");
- logger.info("Using {} as query handler for native protocol queries (as requested with -Dcassandra.custom_query_handler_class)", customHandlerClass);
+ logger.info("Using {} as a query handler for native protocol queries (as requested by the {} system property)",
+ customHandlerClass, CUSTOM_QUERY_HANDLER_CLASS.getKey());
}
catch (Exception e)
{
diff --git a/src/java/org/apache/cassandra/service/LoadBroadcaster.java b/src/java/org/apache/cassandra/service/LoadBroadcaster.java
index ebda3cdb3e..da93ebd8db 100644
--- a/src/java/org/apache/cassandra/service/LoadBroadcaster.java
+++ b/src/java/org/apache/cassandra/service/LoadBroadcaster.java
@@ -30,9 +30,11 @@ import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.ScheduledExecutors;
import org.apache.cassandra.gms.*;
+import static org.apache.cassandra.config.CassandraRelevantProperties.BROADCAST_INTERVAL_MS;
+
public class LoadBroadcaster implements IEndpointStateChangeSubscriber
{
- static final int BROADCAST_INTERVAL = Integer.getInteger("cassandra.broadcast_interval_ms", 60 * 1000);
+ static final int BROADCAST_INTERVAL = BROADCAST_INTERVAL_MS.getInt();
public static final LoadBroadcaster instance = new LoadBroadcaster();
diff --git a/src/java/org/apache/cassandra/service/NativeTransportService.java b/src/java/org/apache/cassandra/service/NativeTransportService.java
index f131d74616..cc6ee37d49 100644
--- a/src/java/org/apache/cassandra/service/NativeTransportService.java
+++ b/src/java/org/apache/cassandra/service/NativeTransportService.java
@@ -40,6 +40,8 @@ import org.apache.cassandra.transport.Dispatcher;
import org.apache.cassandra.transport.Server;
import org.apache.cassandra.utils.NativeLibrary;
+import static org.apache.cassandra.config.CassandraRelevantProperties.NATIVE_EPOLL_ENABLED;
+
/**
* Handles native transport server lifecycle and associated resources. Lazily initialized.
*/
@@ -160,7 +162,7 @@ public class NativeTransportService
*/
public static boolean useEpoll()
{
- final boolean enableEpoll = Boolean.parseBoolean(System.getProperty("cassandra.native.epoll.enabled", "true"));
+ final boolean enableEpoll = NATIVE_EPOLL_ENABLED.getBoolean();
if (enableEpoll && !Epoll.isAvailable() && NativeLibrary.osType == NativeLibrary.OSType.LINUX)
logger.warn("epoll not available", Epoll.unavailabilityCause());
diff --git a/src/java/org/apache/cassandra/service/StartupChecks.java b/src/java/org/apache/cassandra/service/StartupChecks.java
index dca6251568..d04d559a3b 100644
--- a/src/java/org/apache/cassandra/service/StartupChecks.java
+++ b/src/java/org/apache/cassandra/service/StartupChecks.java
@@ -73,6 +73,7 @@ import org.apache.cassandra.utils.JavaUtils;
import org.apache.cassandra.utils.NativeLibrary;
import org.apache.cassandra.utils.SigarLibrary;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_JMX_LOCAL_PORT;
import static org.apache.cassandra.config.CassandraRelevantProperties.COM_SUN_MANAGEMENT_JMXREMOTE_PORT;
import static org.apache.cassandra.config.CassandraRelevantProperties.JAVA_VERSION;
import static org.apache.cassandra.config.CassandraRelevantProperties.JAVA_VM_NAME;
@@ -257,7 +258,7 @@ public class StartupChecks
logger.warn("JMX is not enabled to receive remote connections. Please see cassandra-env.sh for more info.");
jmxPort = CassandraRelevantProperties.CASSANDRA_JMX_LOCAL_PORT.toString();
if (jmxPort == null)
- logger.error("cassandra.jmx.local.port missing from cassandra-env.sh, unable to start local JMX service.");
+ logger.error(CASSANDRA_JMX_LOCAL_PORT.getKey() + " missing from cassandra-env.sh, unable to start local JMX service.");
}
else
{
@@ -681,7 +682,7 @@ public class StartupChecks
logger.warn(String.format("Cassandra system property flag %s is deprecated and you should " +
"use startup check configuration in cassandra.yaml",
CassandraRelevantProperties.IGNORE_DC.getKey()));
- enabled = !Boolean.getBoolean(CassandraRelevantProperties.IGNORE_DC.getKey());
+ enabled = !CassandraRelevantProperties.IGNORE_DC.getBoolean();
}
if (enabled)
{
@@ -718,7 +719,7 @@ public class StartupChecks
logger.warn(String.format("Cassandra system property flag %s is deprecated and you should " +
"use startup check configuration in cassandra.yaml",
CassandraRelevantProperties.IGNORE_RACK.getKey()));
- enabled = !Boolean.getBoolean(CassandraRelevantProperties.IGNORE_RACK.getKey());
+ enabled = !CassandraRelevantProperties.IGNORE_RACK.getBoolean();
}
if (enabled)
{
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index 929cf0cccd..e8275740a4 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -240,10 +240,24 @@ import static java.util.concurrent.TimeUnit.NANOSECONDS;
import static java.util.concurrent.TimeUnit.SECONDS;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toMap;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_UNSAFE_JOIN;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_UNSAFE_REPLACE;
import static org.apache.cassandra.config.CassandraRelevantProperties.BOOTSTRAP_SCHEMA_DELAY_MS;
import static org.apache.cassandra.config.CassandraRelevantProperties.BOOTSTRAP_SKIP_SCHEMA_CHECK;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CONSISTENT_RANGE_MOVEMENT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CONSISTENT_SIMULTANEOUS_MOVES_ALLOW;
import static org.apache.cassandra.config.CassandraRelevantProperties.DRAIN_EXECUTOR_TIMEOUT_MS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JOIN_RING;
+import static org.apache.cassandra.config.CassandraRelevantProperties.LOAD_RING_STATE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.OVERRIDE_DECOMMISSION;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PAXOS_REPAIR_ON_TOPOLOGY_CHANGE_RETRIES;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PAXOS_REPAIR_ON_TOPOLOGY_CHANGE_RETRY_DELAY_SECONDS;
import static org.apache.cassandra.config.CassandraRelevantProperties.REPLACEMENT_ALLOW_EMPTY;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPLACE_ADDRESS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPLACE_ADDRESS_FIRST_BOOT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.RESET_BOOTSTRAP_PROGRESS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.START_GOSSIP;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_WRITE_SURVEY;
import static org.apache.cassandra.index.SecondaryIndexManager.getIndexName;
import static org.apache.cassandra.index.SecondaryIndexManager.isIndexColumnFamily;
import static org.apache.cassandra.net.NoPayload.noPayload;
@@ -387,8 +401,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
private volatile boolean isBootstrapMode;
/* we bootstrap but do NOT join the ring unless told to do so */
- private boolean isSurveyMode = Boolean.parseBoolean(System.getProperty
- ("cassandra.write_survey", "false"));
+ private boolean isSurveyMode = TEST_WRITE_SURVEY.getBoolean(false);
/* true if node is rebuilding and receiving data */
private final AtomicBoolean isRebuilding = new AtomicBoolean();
private final AtomicBoolean isDecommissioning = new AtomicBoolean();
@@ -417,9 +430,9 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
private Collection<Token> bootstrapTokens = null;
// true when keeping strict consistency while bootstrapping
- public static final boolean useStrictConsistency = Boolean.parseBoolean(System.getProperty("cassandra.consistent.rangemovement", "true"));
- private static final boolean allowSimultaneousMoves = Boolean.parseBoolean(System.getProperty("cassandra.consistent.simultaneousmoves.allow","false"));
- private static final boolean joinRing = Boolean.parseBoolean(System.getProperty("cassandra.join_ring", "true"));
+ public static final boolean useStrictConsistency = CONSISTENT_RANGE_MOVEMENT.getBoolean();
+ private static final boolean allowSimultaneousMoves = CONSISTENT_SIMULTANEOUS_MOVES_ALLOW.getBoolean();
+ private static final boolean joinRing = JOIN_RING.getBoolean();
private boolean replacing;
private final StreamStateStore streamStateStore = new StreamStateStore();
@@ -662,11 +675,11 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
if (!joinRing)
throw new ConfigurationException("Cannot set both join_ring=false and attempt to replace a node");
- if (!shouldBootstrap() && !Boolean.getBoolean("cassandra.allow_unsafe_replace"))
+ if (!shouldBootstrap() && !ALLOW_UNSAFE_REPLACE.getBoolean())
throw new RuntimeException("Replacing a node without bootstrapping risks invalidating consistency " +
"guarantees as the expected data may not be present until repair is run. " +
"To perform this operation, please restart with " +
- "-Dcassandra.allow_unsafe_replace=true");
+ "-D" + ALLOW_UNSAFE_REPLACE.getKey() + "=true");
InetAddressAndPort replaceAddress = DatabaseDescriptor.getReplaceAddress();
logger.info("Gathering node replacement information for {}", replaceAddress);
@@ -782,9 +795,9 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
public synchronized void checkForEndpointCollision(UUID localHostId, Set<InetAddressAndPort> peers) throws ConfigurationException
{
- if (Boolean.getBoolean("cassandra.allow_unsafe_join"))
+ if (ALLOW_UNSAFE_JOIN.getBoolean())
{
- logger.warn("Skipping endpoint collision check as cassandra.allow_unsafe_join=true");
+ logger.warn("Skipping endpoint collision check as " + ALLOW_UNSAFE_JOIN.getKey() + "=true");
return;
}
@@ -801,8 +814,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
if (!Gossiper.instance.isSafeForStartup(FBUtilities.getBroadcastAddressAndPort(), localHostId, shouldBootstrap(), epStates))
{
throw new RuntimeException(String.format("A node with address %s already exists, cancelling join. " +
- "Use cassandra.replace_address if you want to replace this node.",
- FBUtilities.getBroadcastAddressAndPort()));
+ "Use %s if you want to replace this node.",
+ FBUtilities.getBroadcastAddressAndPort(), REPLACE_ADDRESS.getKey()));
}
validateEndpointSnitch(epStates.values().iterator());
@@ -825,7 +838,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
assert (pieces.length > 0);
String state = pieces[0];
if (state.equals(VersionedValue.STATUS_BOOTSTRAPPING) || state.equals(VersionedValue.STATUS_LEAVING) || state.equals(VersionedValue.STATUS_MOVING))
- throw new UnsupportedOperationException("Other bootstrapping/leaving/moving nodes detected, cannot bootstrap while cassandra.consistent.rangemovement is true");
+ throw new UnsupportedOperationException("Other bootstrapping/leaving/moving nodes detected, cannot bootstrap while " + CONSISTENT_RANGE_MOVEMENT.getKey() + " is true");
}
}
}
@@ -898,7 +911,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
throw new AssertionError(e);
}
- if (Boolean.parseBoolean(System.getProperty("cassandra.load_ring_state", "true")))
+ if (LOAD_RING_STATE.getBoolean())
{
logger.info("Loading persisted ring state");
populatePeerTokenMetadata();
@@ -931,7 +944,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
replacing = isReplacing();
- if (!Boolean.parseBoolean(System.getProperty("cassandra.start_gossip", "true")))
+ if (!START_GOSSIP.getBoolean())
{
logger.info("Not starting gossip as requested.");
completeInitialization();
@@ -984,7 +997,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
public void populateTokenMetadata()
{
- if (Boolean.parseBoolean(System.getProperty("cassandra.load_ring_state", "true")))
+ if (LOAD_RING_STATE.getBoolean())
{
populatePeerTokenMetadata();
// if we have not completed bootstrapping, we should not add ourselves as a normal token
@@ -1021,9 +1034,9 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
if (replacing)
return true;
- if (System.getProperty("cassandra.replace_address_first_boot", null) != null && SystemKeyspace.bootstrapComplete())
+ if (REPLACE_ADDRESS_FIRST_BOOT.getString() != null && SystemKeyspace.bootstrapComplete())
{
- logger.info("Replace address on first boot requested; this node is already bootstrapped");
+ logger.info("Replace address on the first boot requested; this node is already bootstrapped");
return false;
}
@@ -1059,17 +1072,20 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
if (SystemKeyspace.wasDecommissioned())
{
- if (Boolean.getBoolean("cassandra.override_decommission"))
+ if (OVERRIDE_DECOMMISSION.getBoolean())
{
logger.warn("This node was decommissioned, but overriding by operator request.");
SystemKeyspace.setBootstrapState(SystemKeyspace.BootstrapState.COMPLETED);
}
else
- throw new ConfigurationException("This node was decommissioned and will not rejoin the ring unless cassandra.override_decommission=true has been set, or all existing data is removed and the node is bootstrapped again");
+ {
+ throw new ConfigurationException("This node was decommissioned and will not rejoin the ring unless -D" + OVERRIDE_DECOMMISSION.getKey() +
+ "=true has been set, or all existing data is removed and the node is bootstrapped again");
+ }
}
if (DatabaseDescriptor.getReplaceTokens().size() > 0 || DatabaseDescriptor.getReplaceNode() != null)
- throw new RuntimeException("Replace method removed; use cassandra.replace_address instead");
+ throw new RuntimeException("Replace method removed; use " + REPLACE_ADDRESS.getKey() + " system property instead.");
MessagingService.instance().listen();
@@ -1945,7 +1961,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
String bootstrapTokens = StringUtils.join(tokenMetadata.getBootstrapTokens().valueSet(), ',');
String leavingTokens = StringUtils.join(tokenMetadata.getLeavingEndpoints(), ',');
String movingTokens = StringUtils.join(tokenMetadata.getMovingEndpoints().stream().map(e -> e.right).toArray(), ',');
- throw new UnsupportedOperationException(String.format("Other bootstrapping/leaving/moving nodes detected, cannot bootstrap while cassandra.consistent.rangemovement is true. Nodes detected, bootstrapping: %s; leaving: %s; moving: %s;", bootstrapTokens, leavingTokens, movingTokens));
+ throw new UnsupportedOperationException(String.format("Other bootstrapping/leaving/moving nodes detected, cannot bootstrap while %s is true. Nodes detected, bootstrapping: %s; leaving: %s; moving: %s;",
+ CONSISTENT_RANGE_MOVEMENT.getKey(), bootstrapTokens, leavingTokens, movingTokens));
}
// get bootstrap tokens
@@ -2063,7 +2080,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
if (!Gossiper.instance.seenAnySeed())
throw new IllegalStateException("Unable to contact any seeds: " + Gossiper.instance.getSeeds());
- if (Boolean.getBoolean("cassandra.reset_bootstrap_progress"))
+ if (RESET_BOOTSTRAP_PROGRESS.getBoolean())
{
logger.info("Resetting bootstrap progress to start fresh");
SystemKeyspace.resetAvailableStreamedRanges();
@@ -4703,8 +4720,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
logger.info("repairing paxos for {}", reason);
int retries = 0;
- int maxRetries = Integer.getInteger("cassandra.paxos_repair_on_topology_change_retries", 10);
- int delaySec = Integer.getInteger("cassandra.paxos_repair_on_topology_change_retry_delay_seconds", 10);
+ int maxRetries = PAXOS_REPAIR_ON_TOPOLOGY_CHANGE_RETRIES.getInt();
+ int delaySec = PAXOS_REPAIR_ON_TOPOLOGY_CHANGE_RETRY_DELAY_SECONDS.getInt();
boolean completed = false;
while (!completed)
diff --git a/src/java/org/apache/cassandra/service/paxos/Paxos.java b/src/java/org/apache/cassandra/service/paxos/Paxos.java
index 784974e874..acc6267161 100644
--- a/src/java/org/apache/cassandra/service/paxos/Paxos.java
+++ b/src/java/org/apache/cassandra/service/paxos/Paxos.java
@@ -100,6 +100,8 @@ import org.apache.cassandra.utils.NoSpamLogger;
import static java.util.Collections.emptyMap;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PAXOS_LOG_TTL_LINEARIZABILITY_VIOLATIONS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PAXOS_MODERN_RELEASE;
import static org.apache.cassandra.config.Config.PaxosVariant.v2_without_linearizable_reads_or_rejected_writes;
import static org.apache.cassandra.db.Keyspace.openAndGetStore;
import static org.apache.cassandra.exceptions.RequestFailureReason.TIMEOUT;
@@ -214,8 +216,8 @@ public class Paxos
private static final Logger logger = LoggerFactory.getLogger(Paxos.class);
private static volatile Config.PaxosVariant PAXOS_VARIANT = DatabaseDescriptor.getPaxosVariant();
- private static final CassandraVersion MODERN_PAXOS_RELEASE = new CassandraVersion(System.getProperty("cassandra.paxos.modern_release", "4.1"));
- static final boolean LOG_TTL_LINEARIZABILITY_VIOLATIONS = Boolean.parseBoolean(System.getProperty("cassandra.paxos.log_ttl_linearizability_violations", "true"));
+ private static final CassandraVersion MODERN_PAXOS_RELEASE = new CassandraVersion(PAXOS_MODERN_RELEASE.getString());
+ static final boolean LOG_TTL_LINEARIZABILITY_VIOLATIONS = PAXOS_LOG_TTL_LINEARIZABILITY_VIOLATIONS.getBoolean();
static class Electorate implements Iterable<InetAddressAndPort>
{
diff --git a/src/java/org/apache/cassandra/service/paxos/PaxosCommit.java b/src/java/org/apache/cassandra/service/paxos/PaxosCommit.java
index 4321fc918f..43f9dd1eba 100644
--- a/src/java/org/apache/cassandra/service/paxos/PaxosCommit.java
+++ b/src/java/org/apache/cassandra/service/paxos/PaxosCommit.java
@@ -25,6 +25,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.ExecutorPlus;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.ConsistencyLevel;
import org.apache.cassandra.db.Mutation;
@@ -57,7 +58,7 @@ public class PaxosCommit<OnDone extends Consumer<? super PaxosCommit.Status>> ex
public static final RequestHandler requestHandler = new RequestHandler();
private static final Logger logger = LoggerFactory.getLogger(PaxosCommit.class);
- private static volatile boolean ENABLE_DC_LOCAL_COMMIT = Boolean.parseBoolean(System.getProperty("cassandra.enable_dc_local_commit", "true"));
+ private static volatile boolean ENABLE_DC_LOCAL_COMMIT = CassandraRelevantProperties.ENABLE_DC_LOCAL_COMMIT.getBoolean();
public static boolean getEnableDcLocalCommit()
{
diff --git a/src/java/org/apache/cassandra/service/paxos/PaxosRepair.java b/src/java/org/apache/cassandra/service/paxos/PaxosRepair.java
index d88323cbcf..8ae8ebd910 100644
--- a/src/java/org/apache/cassandra/service/paxos/PaxosRepair.java
+++ b/src/java/org/apache/cassandra/service/paxos/PaxosRepair.java
@@ -65,6 +65,7 @@ import org.apache.cassandra.utils.MonotonicClock;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
import static org.apache.cassandra.config.CassandraRelevantProperties.PAXOS_REPAIR_RETRY_TIMEOUT_IN_MS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SKIP_PAXOS_REPAIR_VERSION_VALIDATION;
import static org.apache.cassandra.exceptions.RequestFailureReason.UNKNOWN;
import static org.apache.cassandra.net.Verb.PAXOS2_REPAIR_REQ;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
@@ -634,7 +635,7 @@ public class PaxosRepair extends AbstractPaxosRepair
}
}
- private static volatile boolean SKIP_VERSION_VALIDATION = Boolean.getBoolean("cassandra.skip_paxos_repair_version_validation");
+ private static volatile boolean SKIP_VERSION_VALIDATION = SKIP_PAXOS_REPAIR_VERSION_VALIDATION.getBoolean();
public static void setSkipPaxosRepairCompatibilityCheck(boolean v)
{
diff --git a/src/java/org/apache/cassandra/service/paxos/PaxosRequestCallback.java b/src/java/org/apache/cassandra/service/paxos/PaxosRequestCallback.java
index 282aeb2dc1..aad32ace05 100644
--- a/src/java/org/apache/cassandra/service/paxos/PaxosRequestCallback.java
+++ b/src/java/org/apache/cassandra/service/paxos/PaxosRequestCallback.java
@@ -37,7 +37,7 @@ import static org.apache.cassandra.utils.FBUtilities.getBroadcastAddressAndPort;
public abstract class PaxosRequestCallback<T> extends FailureRecordingCallback<T>
{
private static final Logger logger = LoggerFactory.getLogger(PaxosRequestCallback.class);
- private static final boolean USE_SELF_EXECUTION = CassandraRelevantProperties.PAXOS_EXECUTE_ON_SELF.getBoolean();
+ private static final boolean USE_SELF_EXECUTION = CassandraRelevantProperties.PAXOS_USE_SELF_EXECUTION.getBoolean();
protected abstract void onResponse(T response, InetAddressAndPort from);
diff --git a/src/java/org/apache/cassandra/service/paxos/PaxosState.java b/src/java/org/apache/cassandra/service/paxos/PaxosState.java
index e802cd070f..22f064dbb7 100644
--- a/src/java/org/apache/cassandra/service/paxos/PaxosState.java
+++ b/src/java/org/apache/cassandra/service/paxos/PaxosState.java
@@ -50,6 +50,7 @@ import org.apache.cassandra.tracing.Tracing;
import org.apache.cassandra.utils.Nemesis;
import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PAXOS_DISABLE_COORDINATOR_LOCKING;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
import static org.apache.cassandra.config.Config.PaxosStatePurging.gc_grace;
import static org.apache.cassandra.config.Config.PaxosStatePurging.legacy;
@@ -66,7 +67,7 @@ import static org.apache.cassandra.service.paxos.Commit.isAfter;
*/
public class PaxosState implements PaxosOperationLock
{
- private static volatile boolean DISABLE_COORDINATOR_LOCKING = Boolean.getBoolean("cassandra.paxos.disable_coordinator_locking");
+ private static volatile boolean DISABLE_COORDINATOR_LOCKING = PAXOS_DISABLE_COORDINATOR_LOCKING.getBoolean();
public static final ConcurrentHashMap<Key, PaxosState> ACTIVE = new ConcurrentHashMap<>();
public static final Map<Key, Snapshot> RECENT = Caffeine.newBuilder()
.maximumWeight(DatabaseDescriptor.getPaxosCacheSizeInMiB() << 20)
diff --git a/src/java/org/apache/cassandra/service/paxos/cleanup/PaxosCleanupSession.java b/src/java/org/apache/cassandra/service/paxos/cleanup/PaxosCleanupSession.java
index 3d765eaada..5f1eea6b68 100644
--- a/src/java/org/apache/cassandra/service/paxos/cleanup/PaxosCleanupSession.java
+++ b/src/java/org/apache/cassandra/service/paxos/cleanup/PaxosCleanupSession.java
@@ -43,6 +43,7 @@ import org.apache.cassandra.net.RequestCallbackWithFailure;
import org.apache.cassandra.schema.TableId;
import org.apache.cassandra.utils.concurrent.AsyncFuture;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PAXOS_CLEANUP_SESSION_TIMEOUT_SECONDS;
import static org.apache.cassandra.net.Verb.PAXOS2_CLEANUP_REQ;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
@@ -56,7 +57,7 @@ public class PaxosCleanupSession extends AsyncFuture<Void> implements Runnable,
static final long TIMEOUT_NANOS;
static
{
- long timeoutSeconds = Integer.getInteger("cassandra.paxos_cleanup_session_timeout_seconds", (int) TimeUnit.HOURS.toSeconds(2));
+ long timeoutSeconds = PAXOS_CLEANUP_SESSION_TIMEOUT_SECONDS.getLong();
TIMEOUT_NANOS = TimeUnit.SECONDS.toNanos(timeoutSeconds);
}
diff --git a/src/java/org/apache/cassandra/service/paxos/uncommitted/PaxosStateTracker.java b/src/java/org/apache/cassandra/service/paxos/uncommitted/PaxosStateTracker.java
index c869249350..514ce15a34 100644
--- a/src/java/org/apache/cassandra/service/paxos/uncommitted/PaxosStateTracker.java
+++ b/src/java/org/apache/cassandra/service/paxos/uncommitted/PaxosStateTracker.java
@@ -53,6 +53,9 @@ import org.apache.cassandra.service.paxos.PaxosRepairHistory;
import org.apache.cassandra.utils.CloseableIterator;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.FORCE_PAXOS_STATE_REBUILD;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SKIP_PAXOS_STATE_REBUILD;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TRUNCATE_BALLOT_METADATA;
import static org.apache.cassandra.db.SystemKeyspace.PAXOS_REPAIR_HISTORY;
import static org.apache.cassandra.schema.SchemaConstants.SYSTEM_KEYSPACE_NAME;
@@ -63,24 +66,20 @@ public class PaxosStateTracker
{
private static final Logger logger = LoggerFactory.getLogger(PaxosStateTracker.class);
- // when starting with no data, skip rebuilding uncommitted data from the paxos table
- static final String SKIP_REBUILD_PROP = "cassandra.skip_paxos_state_rebuild";
- static final String FORCE_REBUILD_PROP = "cassandra.force_paxos_state_rebuild";
- static final String TRUNCATE_BALLOT_METADATA_PROP = "cassandra.truncate_ballot_metadata";
-
+ /** when starting with no data, skip rebuilding uncommitted data from the paxos table. */
private static boolean skipRebuild()
{
- return Boolean.getBoolean(SKIP_REBUILD_PROP);
+ return SKIP_PAXOS_STATE_REBUILD.getBoolean();
}
private static boolean forceRebuild()
{
- return Boolean.getBoolean(FORCE_REBUILD_PROP);
+ return FORCE_PAXOS_STATE_REBUILD.getBoolean();
}
private static boolean truncateBallotMetadata()
{
- return Boolean.getBoolean(TRUNCATE_BALLOT_METADATA_PROP);
+ return TRUNCATE_BALLOT_METADATA.getBoolean();
}
private static final String DIRECTORY = "system/" + SystemKeyspace.PAXOS_REPAIR_STATE;
@@ -130,8 +129,8 @@ public class PaxosStateTracker
boolean rebuildNeeded = !hasExistingData || forceRebuild();
if (truncateBallotMetadata() && !rebuildNeeded)
- logger.warn("{} was set, but {} was not and no rebuild is required. Ballot data will not be truncated",
- TRUNCATE_BALLOT_METADATA_PROP, FORCE_REBUILD_PROP);
+ logger.warn("{} was set to true, but {} was not and no rebuild is required. Ballot data will not be truncated",
+ TRUNCATE_BALLOT_METADATA.getKey(), FORCE_PAXOS_STATE_REBUILD.getKey());
if (rebuildNeeded)
{
@@ -164,7 +163,7 @@ public class PaxosStateTracker
@SuppressWarnings("resource")
private void rebuildUncommittedData() throws IOException
{
- logger.info("Beginning uncommitted paxos data rebuild. Set -Dcassandra.skip_paxos_state_rebuild=true and restart to skip");
+ logger.info("Beginning uncommitted paxos data rebuild. Set -D{}=true and restart to skip", SKIP_PAXOS_STATE_REBUILD.getKey());
String queryStr = "SELECT * FROM " + SYSTEM_KEYSPACE_NAME + '.' + SystemKeyspace.PAXOS;
SelectStatement stmt = (SelectStatement) QueryProcessor.parseStatement(queryStr).prepare(ClientState.forInternalCalls());
diff --git a/src/java/org/apache/cassandra/service/paxos/uncommitted/PaxosUncommittedTracker.java b/src/java/org/apache/cassandra/service/paxos/uncommitted/PaxosUncommittedTracker.java
index 7712c79e3e..ae4662f3d2 100644
--- a/src/java/org/apache/cassandra/service/paxos/uncommitted/PaxosUncommittedTracker.java
+++ b/src/java/org/apache/cassandra/service/paxos/uncommitted/PaxosUncommittedTracker.java
@@ -49,6 +49,9 @@ import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.service.paxos.cleanup.PaxosTableRepairs;
import org.apache.cassandra.utils.CloseableIterator;
+import static org.apache.cassandra.config.CassandraRelevantProperties.AUTO_REPAIR_FREQUENCY_SECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_PAXOS_AUTO_REPAIRS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_PAXOS_STATE_FLUSH;
import static org.apache.cassandra.config.DatabaseDescriptor.paxosRepairEnabled;
import static org.apache.cassandra.service.paxos.uncommitted.PaxosKeyState.mergeUncommitted;
@@ -69,8 +72,8 @@ public class PaxosUncommittedTracker
private static volatile UpdateSupplier updateSupplier;
- private volatile boolean autoRepairsEnabled = !Boolean.getBoolean("cassandra.disable_paxos_auto_repairs");
- private volatile boolean stateFlushEnabled = !Boolean.getBoolean("cassandra.disable_paxos_state_flush");
+ private volatile boolean autoRepairsEnabled = !DISABLE_PAXOS_AUTO_REPAIRS.getBoolean();
+ private volatile boolean stateFlushEnabled = !DISABLE_PAXOS_STATE_FLUSH.getBoolean();
private boolean started = false;
private boolean autoRepairStarted = false;
@@ -327,7 +330,7 @@ public class PaxosUncommittedTracker
{
if (autoRepairStarted)
return;
- int seconds = Integer.getInteger("cassandra.auto_repair_frequency_seconds", (int) TimeUnit.MINUTES.toSeconds(5));
+ int seconds = AUTO_REPAIR_FREQUENCY_SECONDS.getInt();
ScheduledExecutors.scheduledTasks.scheduleAtFixedRate(this::maintenance, seconds, seconds, TimeUnit.SECONDS);
autoRepairStarted = true;
}
diff --git a/src/java/org/apache/cassandra/service/reads/range/RangeCommands.java b/src/java/org/apache/cassandra/service/reads/range/RangeCommands.java
index 5b656d7377..1c5ce7f147 100644
--- a/src/java/org/apache/cassandra/service/reads/range/RangeCommands.java
+++ b/src/java/org/apache/cassandra/service/reads/range/RangeCommands.java
@@ -21,6 +21,7 @@ package org.apache.cassandra.service.reads.range;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.ConsistencyLevel;
@@ -49,8 +50,7 @@ public class RangeCommands
* don't want a burst of range requests that will back up, hurting all other queries. At the same time,
* we want to give range queries a chance to run if resources are available.
*/
- private static final int MAX_CONCURRENT_RANGE_REQUESTS = Math.max(1, Integer.getInteger("cassandra.max_concurrent_range_requests",
- FBUtilities.getAvailableProcessors() * 10));
+ private static final int MAX_CONCURRENT_RANGE_REQUESTS = Math.max(1, CassandraRelevantProperties.MAX_CONCURRENT_RANGE_REQUESTS.getInt(FBUtilities.getAvailableProcessors() * 10));
@SuppressWarnings("resource") // created iterators will be closed in CQL layer through the chain of transformations
public static PartitionIterator partitions(PartitionRangeReadCommand command,
diff --git a/src/java/org/apache/cassandra/service/reads/repair/BlockingReadRepairs.java b/src/java/org/apache/cassandra/service/reads/repair/BlockingReadRepairs.java
index 7a4882bcd0..de49f5a563 100644
--- a/src/java/org/apache/cassandra/service/reads/repair/BlockingReadRepairs.java
+++ b/src/java/org/apache/cassandra/service/reads/repair/BlockingReadRepairs.java
@@ -33,14 +33,14 @@ import org.apache.cassandra.net.MessagingService;
import org.apache.cassandra.schema.TableMetadata;
import org.apache.cassandra.tracing.Tracing;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DROP_OVERSIZED_READ_REPAIR_MUTATIONS;
import static org.apache.cassandra.db.IMutation.MAX_MUTATION_SIZE;
public class BlockingReadRepairs
{
private static final Logger logger = LoggerFactory.getLogger(BlockingReadRepairs.class);
- private static final boolean DROP_OVERSIZED_READ_REPAIR_MUTATIONS =
- Boolean.getBoolean("cassandra.drop_oversized_readrepair_mutations");
+ private static final boolean SHOULD_DROP_OVERSIZED_READ_REPAIR_MUTATIONS = DROP_OVERSIZED_READ_REPAIR_MUTATIONS.getBoolean();
/**
* Create a read repair mutation from the given update, if the mutation is not larger than the maximum
@@ -65,7 +65,7 @@ public class BlockingReadRepairs
Keyspace keyspace = Keyspace.open(mutation.getKeyspaceName());
TableMetadata metadata = update.metadata();
- if (DROP_OVERSIZED_READ_REPAIR_MUTATIONS)
+ if (SHOULD_DROP_OVERSIZED_READ_REPAIR_MUTATIONS)
{
logger.debug("Encountered an oversized ({}/{}) read repair mutation for table {}, key {}, node {}",
e.mutationSize,
diff --git a/src/java/org/apache/cassandra/service/reads/thresholds/CoordinatorWarnings.java b/src/java/org/apache/cassandra/service/reads/thresholds/CoordinatorWarnings.java
index ff5bd78fa2..1b317dba58 100644
--- a/src/java/org/apache/cassandra/service/reads/thresholds/CoordinatorWarnings.java
+++ b/src/java/org/apache/cassandra/service/reads/thresholds/CoordinatorWarnings.java
@@ -33,10 +33,12 @@ import org.apache.cassandra.metrics.TableMetrics;
import org.apache.cassandra.schema.Schema;
import org.apache.cassandra.service.ClientWarn;
+import static org.apache.cassandra.config.CassandraRelevantProperties.READS_THRESHOLDS_COORDINATOR_DEFENSIVE_CHECKS_ENABLED;
+
public class CoordinatorWarnings
{
private static final Logger logger = LoggerFactory.getLogger(CoordinatorWarnings.class);
- private static final boolean ENABLE_DEFENSIVE_CHECKS = Boolean.getBoolean("cassandra.reads.thresholds.coordinator.defensive_checks_enabled");
+ private static final boolean ENABLE_DEFENSIVE_CHECKS = READS_THRESHOLDS_COORDINATOR_DEFENSIVE_CHECKS_ENABLED.getBoolean();
// when .init() is called set the STATE to be INIT; this is to lazy allocate the map only when warnings are generated
private static final Map<ReadCommand, WarningsSnapshot> INIT = Collections.emptyMap();
diff --git a/src/java/org/apache/cassandra/streaming/StreamHook.java b/src/java/org/apache/cassandra/streaming/StreamHook.java
index 86b5182c89..84db420f04 100644
--- a/src/java/org/apache/cassandra/streaming/StreamHook.java
+++ b/src/java/org/apache/cassandra/streaming/StreamHook.java
@@ -22,6 +22,8 @@ import org.apache.cassandra.schema.TableId;
import org.apache.cassandra.streaming.messages.OutgoingStreamMessage;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.STREAM_HOOK;
+
public interface StreamHook
{
public static final StreamHook instance = createHook();
@@ -32,7 +34,7 @@ public interface StreamHook
static StreamHook createHook()
{
- String className = System.getProperty("cassandra.stream_hook");
+ String className = STREAM_HOOK.getString();
if (className != null)
{
return FBUtilities.construct(className, StreamHook.class.getSimpleName());
diff --git a/src/java/org/apache/cassandra/streaming/StreamSession.java b/src/java/org/apache/cassandra/streaming/StreamSession.java
index a0e9b2d079..e170ca60ef 100644
--- a/src/java/org/apache/cassandra/streaming/StreamSession.java
+++ b/src/java/org/apache/cassandra/streaming/StreamSession.java
@@ -75,6 +75,7 @@ import org.apache.cassandra.utils.TimeUUID;
import org.apache.cassandra.utils.concurrent.FutureCombiner;
import static com.google.common.collect.Iterables.all;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_STREAMING_DEBUG_STACKTRACE_LIMIT;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
import static org.apache.cassandra.locator.InetAddressAndPort.hostAddressAndPort;
import static org.apache.cassandra.utils.FBUtilities.getBroadcastAddressAndPort;
@@ -157,7 +158,7 @@ import static org.apache.cassandra.utils.FBUtilities.getBroadcastAddressAndPort;
public class StreamSession
{
private static final Logger logger = LoggerFactory.getLogger(StreamSession.class);
- private static final int DEBUG_STACKTRACE_LIMIT = Integer.parseInt(System.getProperty("cassandra.streaming.debug_stacktrace_limit", "2"));
+ private static final int DEBUG_STACKTRACE_LIMIT = CASSANDRA_STREAMING_DEBUG_STACKTRACE_LIMIT.getInt();
public enum PrepareDirection { SEND, ACK }
diff --git a/src/java/org/apache/cassandra/streaming/async/StreamingMultiplexedChannel.java b/src/java/org/apache/cassandra/streaming/async/StreamingMultiplexedChannel.java
index 560fee9ad2..4ebb3913cd 100644
--- a/src/java/org/apache/cassandra/streaming/async/StreamingMultiplexedChannel.java
+++ b/src/java/org/apache/cassandra/streaming/async/StreamingMultiplexedChannel.java
@@ -53,14 +53,12 @@ import org.apache.cassandra.utils.concurrent.Semaphore;
import org.apache.cassandra.utils.concurrent.UncheckedInterruptedException;
import static com.google.common.base.Throwables.getRootCause;
-import static java.lang.Integer.parseInt;
import static java.lang.String.format;
-import static java.lang.System.getProperty;
import static java.lang.Thread.currentThread;
import static java.util.concurrent.TimeUnit.*;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
-import static org.apache.cassandra.config.Config.PROPERTY_PREFIX;
+import static org.apache.cassandra.config.CassandraRelevantProperties.STREAMING_SESSION_PARALLELTRANSFERS;
import static org.apache.cassandra.streaming.StreamSession.createLogTag;
import static org.apache.cassandra.streaming.messages.StreamMessage.serialize;
import static org.apache.cassandra.streaming.messages.StreamMessage.serializedSize;
@@ -91,7 +89,7 @@ public class StreamingMultiplexedChannel
private static final Logger logger = LoggerFactory.getLogger(StreamingMultiplexedChannel.class);
private static final int DEFAULT_MAX_PARALLEL_TRANSFERS = getAvailableProcessors();
- private static final int MAX_PARALLEL_TRANSFERS = parseInt(getProperty(PROPERTY_PREFIX + "streaming.session.parallelTransfers", Integer.toString(DEFAULT_MAX_PARALLEL_TRANSFERS)));
+ private static final int MAX_PARALLEL_TRANSFERS = STREAMING_SESSION_PARALLELTRANSFERS.getInt(DEFAULT_MAX_PARALLEL_TRANSFERS);
// a simple mechansim for allowing a degree of fairness across multiple sessions
private static final Semaphore fileTransferSemaphore = newFairSemaphore(DEFAULT_MAX_PARALLEL_TRANSFERS);
diff --git a/src/java/org/apache/cassandra/tools/HashPassword.java b/src/java/org/apache/cassandra/tools/HashPassword.java
index ddc0a722f2..f229858c5c 100644
--- a/src/java/org/apache/cassandra/tools/HashPassword.java
+++ b/src/java/org/apache/cassandra/tools/HashPassword.java
@@ -57,7 +57,7 @@ public class HashPassword
String password = null;
if (cmd.hasOption(ENV_VAR))
{
- password = System.getenv(cmd.getOptionValue(ENV_VAR));
+ password = System.getenv(cmd.getOptionValue(ENV_VAR)); // checkstyle: suppress nearby 'blockSystemPropertyUsage'
if (password == null)
{
System.err.println(String.format("Environment variable '%s' is undefined.", cmd.getOptionValue(ENV_VAR)));
diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java b/src/java/org/apache/cassandra/tools/NodeProbe.java
index e983e2fbef..8e7fc0f132 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -115,6 +115,9 @@ import com.google.common.util.concurrent.Uninterruptibles;
import org.apache.cassandra.tools.nodetool.GetTimeout;
import org.apache.cassandra.utils.NativeLibrary;
+import static org.apache.cassandra.config.CassandraRelevantProperties.NODETOOL_JMX_NOTIFICATION_POLL_INTERVAL_SECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SSL_ENABLE;
+
/**
* JMX client operations for Cassandra.
*/
@@ -124,7 +127,7 @@ public class NodeProbe implements AutoCloseable
private static final String ssObjName = "org.apache.cassandra.db:type=StorageService";
private static final int defaultPort = 7199;
- static long JMX_NOTIFICATION_POLL_INTERVAL_SECONDS = Long.getLong("cassandra.nodetool.jmx_notification_poll_interval_seconds", TimeUnit.SECONDS.convert(5, TimeUnit.MINUTES));
+ static long JMX_NOTIFICATION_POLL_INTERVAL_SECONDS = NODETOOL_JMX_NOTIFICATION_POLL_INTERVAL_SECONDS.getLong();
final String host;
final int port;
@@ -293,7 +296,7 @@ public class NodeProbe implements AutoCloseable
private RMIClientSocketFactory getRMIClientSocketFactory()
{
- if (Boolean.parseBoolean(System.getProperty("ssl.enable")))
+ if (SSL_ENABLE.getBoolean())
return new SslRMIClientSocketFactory();
else
return RMISocketFactory.getDefaultSocketFactory();
diff --git a/src/java/org/apache/cassandra/tools/StandaloneScrubber.java b/src/java/org/apache/cassandra/tools/StandaloneScrubber.java
index 7a458683bf..26cc363263 100644
--- a/src/java/org/apache/cassandra/tools/StandaloneScrubber.java
+++ b/src/java/org/apache/cassandra/tools/StandaloneScrubber.java
@@ -56,6 +56,7 @@ import org.apache.cassandra.utils.JVMStabilityInspector;
import org.apache.cassandra.utils.OutputHandler;
import org.apache.cassandra.utils.Pair;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
public class StandaloneScrubber
@@ -80,7 +81,7 @@ public class StandaloneScrubber
{
Options options = Options.parseArgs(args);
- if (Boolean.getBoolean(Util.ALLOW_TOOL_REINIT_FOR_TEST))
+ if (TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.getBoolean())
DatabaseDescriptor.toolInitialization(false); //Necessary for testing
else
Util.initDatabaseDescriptor();
diff --git a/src/java/org/apache/cassandra/tools/StandaloneSplitter.java b/src/java/org/apache/cassandra/tools/StandaloneSplitter.java
index 5229c7764a..f9f248a7b8 100644
--- a/src/java/org/apache/cassandra/tools/StandaloneSplitter.java
+++ b/src/java/org/apache/cassandra/tools/StandaloneSplitter.java
@@ -49,6 +49,7 @@ import org.apache.cassandra.io.util.File;
import org.apache.cassandra.schema.Schema;
import org.apache.cassandra.utils.JVMStabilityInspector;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST;
import static org.apache.cassandra.tools.BulkLoader.CmdLineOptions;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
@@ -65,7 +66,7 @@ public class StandaloneSplitter
public static void main(String[] args)
{
Options options = Options.parseArgs(args);
- if (Boolean.getBoolean(Util.ALLOW_TOOL_REINIT_FOR_TEST))
+ if (TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.getBoolean())
DatabaseDescriptor.toolInitialization(false); //Necessary for testing
else
Util.initDatabaseDescriptor();
diff --git a/src/java/org/apache/cassandra/tools/StandaloneUpgrader.java b/src/java/org/apache/cassandra/tools/StandaloneUpgrader.java
index a7a9dcdbb4..8458009422 100644
--- a/src/java/org/apache/cassandra/tools/StandaloneUpgrader.java
+++ b/src/java/org/apache/cassandra/tools/StandaloneUpgrader.java
@@ -45,6 +45,7 @@ import org.apache.cassandra.schema.Schema;
import org.apache.cassandra.utils.JVMStabilityInspector;
import org.apache.cassandra.utils.OutputHandler;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST;
import static org.apache.cassandra.tools.BulkLoader.CmdLineOptions;
public class StandaloneUpgrader
@@ -57,7 +58,7 @@ public class StandaloneUpgrader
public static void main(String args[])
{
Options options = Options.parseArgs(args);
- if (Boolean.getBoolean(Util.ALLOW_TOOL_REINIT_FOR_TEST))
+ if (TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.getBoolean())
DatabaseDescriptor.toolInitialization(false); //Necessary for testing
else
Util.initDatabaseDescriptor();
diff --git a/src/java/org/apache/cassandra/tools/StandaloneVerifier.java b/src/java/org/apache/cassandra/tools/StandaloneVerifier.java
index b32d81bb13..547a1e05f2 100644
--- a/src/java/org/apache/cassandra/tools/StandaloneVerifier.java
+++ b/src/java/org/apache/cassandra/tools/StandaloneVerifier.java
@@ -51,6 +51,7 @@ import org.apache.cassandra.utils.JVMStabilityInspector;
import org.apache.cassandra.utils.OutputHandler;
import org.apache.cassandra.utils.Throwables;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST;
import static org.apache.cassandra.tools.BulkLoader.CmdLineOptions;
public class StandaloneVerifier
@@ -167,7 +168,7 @@ public class StandaloneVerifier
}
private static void initDatabaseDescriptorForTool() {
- if (Boolean.getBoolean(Util.ALLOW_TOOL_REINIT_FOR_TEST))
+ if (TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.getBoolean())
DatabaseDescriptor.toolInitialization(false); //Necessary for testing
else
Util.initDatabaseDescriptor();
diff --git a/src/java/org/apache/cassandra/tools/Util.java b/src/java/org/apache/cassandra/tools/Util.java
index 414d04ad4c..6147b99648 100644
--- a/src/java/org/apache/cassandra/tools/Util.java
+++ b/src/java/org/apache/cassandra/tools/Util.java
@@ -53,7 +53,6 @@ import static java.lang.String.format;
@SuppressWarnings("serial")
public final class Util
{
- public static final String ALLOW_TOOL_REINIT_FOR_TEST = Util.class.getName() + "ALLOW_TOOL_REINIT_FOR_TEST"; // Necessary for testing
static final String RESET = "\u001B[0m";
static final String BLUE = "\u001B[34m";
static final String CYAN = "\u001B[36m";
diff --git a/src/java/org/apache/cassandra/tracing/TraceStateImpl.java b/src/java/org/apache/cassandra/tracing/TraceStateImpl.java
index f8691eee5d..113420dd36 100644
--- a/src/java/org/apache/cassandra/tracing/TraceStateImpl.java
+++ b/src/java/org/apache/cassandra/tracing/TraceStateImpl.java
@@ -28,6 +28,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.Stage;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.db.Mutation;
import org.apache.cassandra.exceptions.OverloadedException;
import org.apache.cassandra.locator.InetAddressAndPort;
@@ -50,8 +51,7 @@ public class TraceStateImpl extends TraceState
private static final Logger logger = LoggerFactory.getLogger(TraceStateImpl.class);
@VisibleForTesting
- public static int WAIT_FOR_PENDING_EVENTS_TIMEOUT_SECS =
- Integer.parseInt(System.getProperty("cassandra.wait_for_tracing_events_timeout_secs", "0"));
+ public static int WAIT_FOR_PENDING_EVENTS_TIMEOUT_SECS = CassandraRelevantProperties.WAIT_FOR_TRACING_EVENTS_TIMEOUT_SECS.getInt();
private final Set<Future<?>> pendingFutures = ConcurrentHashMap.newKeySet();
diff --git a/src/java/org/apache/cassandra/tracing/Tracing.java b/src/java/org/apache/cassandra/tracing/Tracing.java
index 5c820db01d..73cf2ebb0c 100644
--- a/src/java/org/apache/cassandra/tracing/Tracing.java
+++ b/src/java/org/apache/cassandra/tracing/Tracing.java
@@ -42,6 +42,7 @@ import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.JVMStabilityInspector;
import org.apache.cassandra.utils.TimeUUID;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CUSTOM_TRACING_CLASS;
import static org.apache.cassandra.utils.TimeUUID.Generator.nextTimeUUID;
/**
@@ -110,13 +111,14 @@ public abstract class Tracing extends ExecutorLocals.Impl
static
{
Tracing tracing = null;
- String customTracingClass = System.getProperty("cassandra.custom_tracing_class");
+ String customTracingClass = CUSTOM_TRACING_CLASS.getString();
if (null != customTracingClass)
{
try
{
tracing = FBUtilities.construct(customTracingClass, "Tracing");
- logger.info("Using {} as tracing queries (as requested with -Dcassandra.custom_tracing_class)", customTracingClass);
+ logger.info("Using the {} class to trace queries (as requested by the {} system property)",
+ customTracingClass, CUSTOM_TRACING_CLASS.getKey());
}
catch (Exception e)
{
diff --git a/src/java/org/apache/cassandra/transport/CBUtil.java b/src/java/org/apache/cassandra/transport/CBUtil.java
index bdb1a909ad..d47f0ceb2c 100644
--- a/src/java/org/apache/cassandra/transport/CBUtil.java
+++ b/src/java/org/apache/cassandra/transport/CBUtil.java
@@ -38,7 +38,6 @@ import io.netty.buffer.ByteBufUtil;
import io.netty.buffer.PooledByteBufAllocator;
import io.netty.buffer.UnpooledByteBufAllocator;
import io.netty.util.concurrent.FastThreadLocal;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.db.ConsistencyLevel;
import org.apache.cassandra.db.TypeSizes;
import org.apache.cassandra.utils.ByteBufferUtil;
@@ -47,6 +46,8 @@ import org.apache.cassandra.utils.TimeUUID;
import org.apache.cassandra.utils.UUIDGen;
import org.apache.cassandra.utils.memory.MemoryUtil;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_NETTY_USE_HEAP_ALLOCATOR;
+
/**
* ByteBuf utility methods.
* Note that contrarily to ByteBufferUtil, these method do "read" the
@@ -56,7 +57,7 @@ import org.apache.cassandra.utils.memory.MemoryUtil;
*/
public abstract class CBUtil
{
- public static final boolean USE_HEAP_ALLOCATOR = Boolean.getBoolean(Config.PROPERTY_PREFIX + "netty_use_heap_allocator");
+ public static final boolean USE_HEAP_ALLOCATOR = CASSANDRA_NETTY_USE_HEAP_ALLOCATOR.getBoolean();
public static final ByteBufAllocator allocator = USE_HEAP_ALLOCATOR ? new UnpooledByteBufAllocator(false) : new PooledByteBufAllocator(true);
private static final int UUID_SIZE = 16;
diff --git a/src/java/org/apache/cassandra/transport/PipelineConfigurator.java b/src/java/org/apache/cassandra/transport/PipelineConfigurator.java
index bf48eea334..ff524785dc 100644
--- a/src/java/org/apache/cassandra/transport/PipelineConfigurator.java
+++ b/src/java/org/apache/cassandra/transport/PipelineConfigurator.java
@@ -48,6 +48,7 @@ import org.apache.cassandra.security.ISslContextFactory;
import org.apache.cassandra.security.SSLFactory;
import org.apache.cassandra.transport.messages.StartupMessage;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_UNSAFE_VERBOSE_DEBUG_CLIENT_PROTOCOL;
import static org.apache.cassandra.net.SocketFactory.newSslHandler;
/**
@@ -63,7 +64,7 @@ public class PipelineConfigurator
// 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.
- private static final boolean DEBUG = Boolean.getBoolean("cassandra.unsafe_verbose_debug_client_protocol");
+ private static final boolean DEBUG = TEST_UNSAFE_VERBOSE_DEBUG_CLIENT_PROTOCOL.getBoolean();
// Stateless handlers
private static final ConnectionLimitHandler connectionLimitHandler = new ConnectionLimitHandler();
diff --git a/src/java/org/apache/cassandra/utils/DiagnosticSnapshotService.java b/src/java/org/apache/cassandra/utils/DiagnosticSnapshotService.java
index 29a9e5c2ba..168285da5f 100644
--- a/src/java/org/apache/cassandra/utils/DiagnosticSnapshotService.java
+++ b/src/java/org/apache/cassandra/utils/DiagnosticSnapshotService.java
@@ -41,6 +41,7 @@ import org.apache.cassandra.net.Verb;
import org.apache.cassandra.schema.TableId;
import org.apache.cassandra.schema.TableMetadata;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DIAGNOSTIC_SNAPSHOT_INTERVAL_NANOS;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
import static org.apache.cassandra.net.ParamType.SNAPSHOT_RANGES;
@@ -83,11 +84,6 @@ public class DiagnosticSnapshotService
this.executor = executor;
}
- // Issue at most 1 snapshot request per minute for any given table.
- // Replicas will only create one snapshot per day, but this stops us
- // from swamping the network.
- // Overridable via system property for testing.
- private static final long SNAPSHOT_INTERVAL_NANOS = TimeUnit.MINUTES.toNanos(1);
private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.BASIC_ISO_DATE;
private final ConcurrentHashMap<TableId, AtomicLong> lastSnapshotTimes = new ConcurrentHashMap<>();
@@ -139,7 +135,7 @@ public class DiagnosticSnapshotService
long now = nanoTime();
AtomicLong cached = lastSnapshotTimes.computeIfAbsent(metadata.id, u -> new AtomicLong(0));
long last = cached.get();
- long interval = Long.getLong("cassandra.diagnostic_snapshot_interval_nanos", SNAPSHOT_INTERVAL_NANOS);
+ long interval = DIAGNOSTIC_SNAPSHOT_INTERVAL_NANOS.getLong();
if (now - last > interval && cached.compareAndSet(last, now))
{
Message<SnapshotCommand> msg = Message.out(Verb.SNAPSHOT_REQ,
diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java
index 6e2d4cc555..9086d6bb1f 100644
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@ -90,7 +90,12 @@ import org.apache.cassandra.utils.concurrent.FutureCombiner;
import org.apache.cassandra.utils.concurrent.UncheckedInterruptedException;
import org.objectweb.asm.Opcodes;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_AVAILABLE_PROCESSORS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.GIT_SHA;
import static org.apache.cassandra.config.CassandraRelevantProperties.LINE_SEPARATOR;
+import static org.apache.cassandra.config.CassandraRelevantProperties.OS_NAME;
+import static org.apache.cassandra.config.CassandraRelevantProperties.RELEASE_VERSION;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TRIGGERS_DIR;
import static org.apache.cassandra.config.CassandraRelevantProperties.USER_HOME;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
@@ -109,7 +114,7 @@ public class FBUtilities
public static final BigInteger TWO = new BigInteger("2");
private static final String DEFAULT_TRIGGER_DIR = "triggers";
- private static final String OPERATING_SYSTEM = System.getProperty("os.name").toLowerCase();
+ private static final String OPERATING_SYSTEM = OS_NAME.getString().toLowerCase();
public static final boolean isLinux = OPERATING_SYSTEM.contains("linux");
private static volatile InetAddress localInetAddress;
@@ -121,7 +126,7 @@ public class FBUtilities
private static volatile String previousReleaseVersionString;
- private static int availableProcessors = Integer.getInteger("cassandra.available_processors", DatabaseDescriptor.getAvailableProcessors());
+ private static int availableProcessors = CASSANDRA_AVAILABLE_PROCESSORS.getInt(DatabaseDescriptor.getAvailableProcessors());
public static void setAvailableProcessors(int value)
{
@@ -393,9 +398,9 @@ public class FBUtilities
public static File cassandraTriggerDir()
{
File triggerDir = null;
- if (System.getProperty("cassandra.triggers_dir") != null)
+ if (TRIGGERS_DIR.getString() != null)
{
- triggerDir = new File(System.getProperty("cassandra.triggers_dir"));
+ triggerDir = new File(TRIGGERS_DIR.getString());
}
else
{
@@ -445,7 +450,7 @@ public class FBUtilities
{
Properties props = getVersionProperties();
if (props == null)
- return System.getProperty("cassandra.releaseVersion", UNKNOWN_RELEASE_VERSION);
+ return RELEASE_VERSION.getString(UNKNOWN_RELEASE_VERSION);
return props.getProperty("CassandraVersion");
}
@@ -453,7 +458,7 @@ public class FBUtilities
{
Properties props = getVersionProperties();
if (props == null)
- return System.getProperty("cassandra.gitSHA", UNKNOWN_GIT_SHA);
+ return GIT_SHA.getString(UNKNOWN_GIT_SHA);
return props.getProperty("GitSHA", UNKNOWN_GIT_SHA);
}
diff --git a/src/java/org/apache/cassandra/utils/GuidGenerator.java b/src/java/org/apache/cassandra/utils/GuidGenerator.java
index 46843b4e4f..e06270fa1d 100644
--- a/src/java/org/apache/cassandra/utils/GuidGenerator.java
+++ b/src/java/org/apache/cassandra/utils/GuidGenerator.java
@@ -34,7 +34,7 @@ public class GuidGenerator
{
if (!JAVA_SECURITY_EGD.isPresent())
{
- System.setProperty("java.security.egd", "file:/dev/urandom");
+ JAVA_SECURITY_EGD.setString("file:/dev/urandom");
}
mySecureRand = new SecureRandom();
long secureInitializer = mySecureRand.nextLong();
diff --git a/src/java/org/apache/cassandra/utils/JMXServerUtils.java b/src/java/org/apache/cassandra/utils/JMXServerUtils.java
index 5557fda345..ba9c704800 100644
--- a/src/java/org/apache/cassandra/utils/JMXServerUtils.java
+++ b/src/java/org/apache/cassandra/utils/JMXServerUtils.java
@@ -54,6 +54,8 @@ import org.slf4j.LoggerFactory;
import org.apache.cassandra.auth.jmx.AuthenticationProxy;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_JMX_AUTHORIZER;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_JMX_REMOTE_LOGIN_CONFIG;
import static org.apache.cassandra.config.CassandraRelevantProperties.COM_SUN_MANAGEMENT_JMXREMOTE_ACCESS_FILE;
import static org.apache.cassandra.config.CassandraRelevantProperties.COM_SUN_MANAGEMENT_JMXREMOTE_AUTHENTICATE;
import static org.apache.cassandra.config.CassandraRelevantProperties.COM_SUN_MANAGEMENT_JMXREMOTE_PASSWORD_FILE;
@@ -62,6 +64,9 @@ import static org.apache.cassandra.config.CassandraRelevantProperties.COM_SUN_MA
import static org.apache.cassandra.config.CassandraRelevantProperties.COM_SUN_MANAGEMENT_JMXREMOTE_SSL_ENABLED_CIPHER_SUITES;
import static org.apache.cassandra.config.CassandraRelevantProperties.COM_SUN_MANAGEMENT_JMXREMOTE_SSL_ENABLED_PROTOCOLS;
import static org.apache.cassandra.config.CassandraRelevantProperties.COM_SUN_MANAGEMENT_JMXREMOTE_SSL_NEED_CLIENT_AUTH;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JAVAX_RMI_SSL_CLIENT_ENABLED_CIPHER_SUITES;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JAVAX_RMI_SSL_CLIENT_ENABLED_PROTOCOLS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JAVA_RMI_SERVER_HOSTNAME;
public class JMXServerUtils
{
@@ -82,7 +87,7 @@ public class JMXServerUtils
if (local)
{
serverAddress = InetAddress.getLoopbackAddress();
- System.setProperty("java.rmi.server.hostname", serverAddress.getHostAddress());
+ JAVA_RMI_SERVER_HOSTNAME.setString(serverAddress.getHostAddress());
}
// Configure the RMI client & server socket factories, including SSL config.
@@ -166,7 +171,7 @@ public class JMXServerUtils
// before creating the authenticator. If no password file has been
// explicitly set, it's read from the default location
// $JAVA_HOME/lib/management/jmxremote.password
- String configEntry = System.getProperty("cassandra.jmx.remote.login.config");
+ String configEntry = CASSANDRA_JMX_REMOTE_LOGIN_CONFIG.getString();
if (configEntry != null)
{
env.put(JMXConnectorServer.AUTHENTICATOR, new AuthenticationProxy(configEntry));
@@ -194,7 +199,7 @@ public class JMXServerUtils
// can be set as the JMXConnectorServer's MBeanServerForwarder.
// If no custom proxy is supplied, check system properties for the location of the
// standard access file & stash it in env
- String authzProxyClass = System.getProperty("cassandra.jmx.authorizer");
+ String authzProxyClass = CASSANDRA_JMX_AUTHORIZER.getString();
if (authzProxyClass != null)
{
final InvocationHandler handler = FBUtilities.construct(authzProxyClass, "JMX authz proxy");
@@ -224,7 +229,7 @@ public class JMXServerUtils
String protocolList = COM_SUN_MANAGEMENT_JMXREMOTE_SSL_ENABLED_PROTOCOLS.getString();
if (protocolList != null)
{
- System.setProperty("javax.rmi.ssl.client.enabledProtocols", protocolList);
+ JAVAX_RMI_SSL_CLIENT_ENABLED_PROTOCOLS.setString(protocolList);
protocols = StringUtils.split(protocolList, ',');
}
@@ -232,7 +237,7 @@ public class JMXServerUtils
String cipherList = COM_SUN_MANAGEMENT_JMXREMOTE_SSL_ENABLED_CIPHER_SUITES.getString();
if (cipherList != null)
{
- System.setProperty("javax.rmi.ssl.client.enabledCipherSuites", cipherList);
+ JAVAX_RMI_SSL_CLIENT_ENABLED_CIPHER_SUITES.setString(cipherList);
ciphers = StringUtils.split(cipherList, ',');
}
diff --git a/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java b/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
index ff86396af9..a396ef9947 100644
--- a/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
+++ b/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
@@ -46,6 +46,8 @@ import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.concurrent.UncheckedInterruptedException;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PRINT_HEAP_HISTOGRAM_ON_OUT_OF_MEMORY_ERROR;
+
/**
* Responsible for deciding whether to kill the JVM if it gets in an "unstable" state (think OOM).
*/
@@ -105,7 +107,7 @@ public final class JVMStabilityInspector
boolean isUnstable = false;
if (t instanceof OutOfMemoryError)
{
- if (Boolean.getBoolean("cassandra.printHeapHistogramOnOutOfMemoryError"))
+ if (PRINT_HEAP_HISTOGRAM_ON_OUT_OF_MEMORY_ERROR.getBoolean())
{
// We want to avoid printing multiple time the heap histogram if multiple OOM errors happen in a short
// time span.
diff --git a/src/java/org/apache/cassandra/utils/MBeanWrapper.java b/src/java/org/apache/cassandra/utils/MBeanWrapper.java
index f8bc439d7b..f003e1a392 100644
--- a/src/java/org/apache/cassandra/utils/MBeanWrapper.java
+++ b/src/java/org/apache/cassandra/utils/MBeanWrapper.java
@@ -27,7 +27,7 @@ import javax.management.ObjectName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static org.apache.cassandra.config.CassandraRelevantProperties.IS_DISABLED_MBEAN_REGISTRATION;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION;
import static org.apache.cassandra.config.CassandraRelevantProperties.MBEAN_REGISTRATION_CLASS;
/**
@@ -42,7 +42,7 @@ public interface MBeanWrapper
static MBeanWrapper create()
{
- if (IS_DISABLED_MBEAN_REGISTRATION.getBoolean())
+ if (ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION.getBoolean())
return new NoOpMBeanWrapper();
String klass = MBEAN_REGISTRATION_CLASS.getString();
diff --git a/src/java/org/apache/cassandra/utils/MonotonicClock.java b/src/java/org/apache/cassandra/utils/MonotonicClock.java
index ad9ee81ca4..7be54c008b 100644
--- a/src/java/org/apache/cassandra/utils/MonotonicClock.java
+++ b/src/java/org/apache/cassandra/utils/MonotonicClock.java
@@ -27,11 +27,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.ScheduledExecutors;
-import org.apache.cassandra.config.Config;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.APPROXIMATE_TIME_PRECISION_MS;
import static org.apache.cassandra.config.CassandraRelevantProperties.CLOCK_MONOTONIC_APPROX;
import static org.apache.cassandra.config.CassandraRelevantProperties.CLOCK_MONOTONIC_PRECISE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.NANOTIMETOMILLIS_TIMESTAMP_UPDATE_INTERVAL;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
import static org.apache.cassandra.utils.Shared.Scope.SIMULATION;
@@ -139,8 +140,7 @@ public interface MonotonicClock
static abstract class AbstractEpochSamplingClock implements MonotonicClock
{
private static final Logger logger = LoggerFactory.getLogger(AbstractEpochSamplingClock.class);
- private static final String UPDATE_INTERVAL_PROPERTY = Config.PROPERTY_PREFIX + "NANOTIMETOMILLIS_TIMESTAMP_UPDATE_INTERVAL";
- private static final long UPDATE_INTERVAL_MS = Long.getLong(UPDATE_INTERVAL_PROPERTY, 10000);
+ private static final long UPDATE_INTERVAL_MS = NANOTIMETOMILLIS_TIMESTAMP_UPDATE_INTERVAL.getLong();
@VisibleForTesting
public static class AlmostSameTime implements MonotonicClockTranslation
@@ -281,7 +281,7 @@ public interface MonotonicClock
public static class SampledClock implements MonotonicClock
{
private static final Logger logger = LoggerFactory.getLogger(SampledClock.class);
- private static final int UPDATE_INTERVAL_MS = Math.max(1, Integer.parseInt(System.getProperty(Config.PROPERTY_PREFIX + "approximate_time_precision_ms", "2")));
+ private static final int UPDATE_INTERVAL_MS = Math.max(1, APPROXIMATE_TIME_PRECISION_MS.getInt());
private static final long ERROR_NANOS = MILLISECONDS.toNanos(UPDATE_INTERVAL_MS);
private final MonotonicClock precise;
diff --git a/src/java/org/apache/cassandra/utils/SyncUtil.java b/src/java/org/apache/cassandra/utils/SyncUtil.java
index 081a5f1e16..1adc4fc657 100644
--- a/src/java/org/apache/cassandra/utils/SyncUtil.java
+++ b/src/java/org/apache/cassandra/utils/SyncUtil.java
@@ -27,9 +27,10 @@ import java.nio.channels.ClosedChannelException;
import java.nio.channels.FileChannel;
import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.cassandra.config.Config;
-
import com.google.common.base.Preconditions;
+
+import org.apache.cassandra.config.CassandraRelevantEnv;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.io.util.File;
import org.apache.cassandra.utils.memory.MemoryUtil;
@@ -89,8 +90,8 @@ public class SyncUtil
fdUseCountField = fdUseCountTemp;
//If skipping syncing is requested by any means then skip them.
- boolean skipSyncProperty = Boolean.getBoolean(Config.PROPERTY_PREFIX + "skip_sync");
- boolean skipSyncEnv = Boolean.valueOf(System.getenv().getOrDefault("CASSANDRA_SKIP_SYNC", "false"));
+ boolean skipSyncProperty = CassandraRelevantProperties.TEST_CASSANDRA_SKIP_SYNC.getBoolean();
+ boolean skipSyncEnv = CassandraRelevantEnv.CASSANDRA_SKIP_SYNC.getBoolean();
SKIP_SYNC = skipSyncProperty || skipSyncEnv;
if (SKIP_SYNC)
{
diff --git a/src/java/org/apache/cassandra/utils/TimeUUID.java b/src/java/org/apache/cassandra/utils/TimeUUID.java
index b944d843d4..d993f171af 100644
--- a/src/java/org/apache/cassandra/utils/TimeUUID.java
+++ b/src/java/org/apache/cassandra/utils/TimeUUID.java
@@ -53,6 +53,7 @@ import org.apache.cassandra.serializers.MarshalException;
import org.apache.cassandra.serializers.TypeSerializer;
import static java.util.concurrent.TimeUnit.MICROSECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_UNSAFE_TIME_UUID_NODE;
import static org.apache.cassandra.config.CassandraRelevantProperties.DETERMINISM_UNSAFE_UUID_NODE;
import static org.apache.cassandra.utils.ByteBufferUtil.EMPTY_BYTE_BUFFER;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
@@ -439,9 +440,8 @@ public class TimeUUID implements Serializable, Comparable<TimeUUID>
if (DETERMINISM_UNSAFE_UUID_NODE.getBoolean())
return FBUtilities.getBroadcastAddressAndPort().addressBytes[3];
- Long specified = Long.getLong("cassandra.unsafe.timeuuidnode");
- if (specified != null)
- return specified
+ if (CASSANDRA_UNSAFE_TIME_UUID_NODE.isPresent())
+ return CASSANDRA_UNSAFE_TIME_UUID_NODE.getLong()
^ FBUtilities.getBroadcastAddressAndPort().addressBytes[3]
^ (FBUtilities.getBroadcastAddressAndPort().addressBytes[2] << 8);
diff --git a/src/java/org/apache/cassandra/utils/binlog/BinLog.java b/src/java/org/apache/cassandra/utils/binlog/BinLog.java
index ee8ce55ad6..8b0e025700 100644
--- a/src/java/org/apache/cassandra/utils/binlog/BinLog.java
+++ b/src/java/org/apache/cassandra/utils/binlog/BinLog.java
@@ -53,6 +53,7 @@ import org.apache.cassandra.utils.concurrent.UncheckedInterruptedException;
import org.apache.cassandra.utils.concurrent.WeightedQueue;
import static java.lang.String.format;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CHRONICLE_ANNOUNCER_DISABLE;
/**
* Bin log is a is quick and dirty binary log that is kind of a NIH version of binary logging with a traditional logging
@@ -81,7 +82,7 @@ public class BinLog implements Runnable
{
// Avoid the chronicle announcement which is commercial advertisement, and debug info we already print at startup
// https://github.com/OpenHFT/Chronicle-Core/blob/chronicle-core-2.23.36/src/main/java/net/openhft/chronicle/core/announcer/Announcer.java#L32-L33
- System.setProperty("chronicle.announcer.disable", "true");
+ CHRONICLE_ANNOUNCER_DISABLE.setBoolean(true);
}
private ChronicleQueue queue;
diff --git a/src/java/org/apache/cassandra/utils/btree/BTree.java b/src/java/org/apache/cassandra/utils/btree/BTree.java
index a629a5f869..2d8fefb5f2 100644
--- a/src/java/org/apache/cassandra/utils/btree/BTree.java
+++ b/src/java/org/apache/cassandra/utils/btree/BTree.java
@@ -37,6 +37,7 @@ import org.apache.cassandra.utils.caching.TinyThreadLocalPool;
import static java.lang.Math.max;
import static java.lang.Math.min;
+import static org.apache.cassandra.config.CassandraRelevantProperties.BTREE_BRANCH_SHIFT;
public class BTree
{
@@ -62,7 +63,7 @@ public class BTree
* subtrees when modifying the tree, since the modified tree would need new parent references).
* Instead, we store these references in a Path as needed when navigating the tree.
*/
- public static final int BRANCH_SHIFT = Integer.getInteger("cassandra.btree.branchshift", 5);
+ public static final int BRANCH_SHIFT = BTREE_BRANCH_SHIFT.getInt();
private static final int BRANCH_FACTOR = 1 << BRANCH_SHIFT;
public static final int MIN_KEYS = BRANCH_FACTOR / 2 - 1;
diff --git a/src/java/org/apache/cassandra/utils/concurrent/Ref.java b/src/java/org/apache/cassandra/utils/concurrent/Ref.java
index 90650cf49d..1e27dc79c2 100644
--- a/src/java/org/apache/cassandra/utils/concurrent/Ref.java
+++ b/src/java/org/apache/cassandra/utils/concurrent/Ref.java
@@ -55,6 +55,7 @@ import static java.util.Collections.emptyList;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
import static org.apache.cassandra.concurrent.InfiniteLoopExecutor.SimulatorSafe.UNSAFE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_DEBUG_REF_COUNT;
import static org.apache.cassandra.utils.Shared.Scope.SIMULATION;
import static org.apache.cassandra.utils.Throwables.maybeFail;
import static org.apache.cassandra.utils.Throwables.merge;
@@ -93,7 +94,7 @@ import static org.apache.cassandra.utils.Throwables.merge;
public final class Ref<T> implements RefCounted<T>
{
static final Logger logger = LoggerFactory.getLogger(Ref.class);
- public static final boolean DEBUG_ENABLED = System.getProperty("cassandra.debugrefcount", "false").equalsIgnoreCase("true");
+ public static final boolean DEBUG_ENABLED = TEST_DEBUG_REF_COUNT.getBoolean();
static OnLeak ON_LEAK;
@Shared(scope = SIMULATION)
diff --git a/test/burn/org/apache/cassandra/utils/LongBTreeTest.java b/test/burn/org/apache/cassandra/utils/LongBTreeTest.java
index c9507f5873..9aa13f9467 100644
--- a/test/burn/org/apache/cassandra/utils/LongBTreeTest.java
+++ b/test/burn/org/apache/cassandra/utils/LongBTreeTest.java
@@ -52,6 +52,7 @@ import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
import static java.util.Comparator.naturalOrder;
import static java.util.Comparator.reverseOrder;
+import static org.apache.cassandra.config.CassandraRelevantProperties.BTREE_FAN_FACTOR;
import static org.apache.cassandra.utils.btree.BTree.iterable;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
import static org.junit.Assert.assertEquals;
@@ -1135,7 +1136,7 @@ public class LongBTreeTest
for (String arg : args)
{
if (arg.startsWith("fan="))
- System.setProperty("cassandra.btree.fanfactor", arg.substring(4));
+ BTREE_FAN_FACTOR.setString(arg.substring(4));
else if (arg.startsWith("min="))
minTreeSize = Integer.parseInt(arg.substring(4));
else if (arg.startsWith("max="))
diff --git a/test/distributed/org/apache/cassandra/distributed/action/GossipHelper.java b/test/distributed/org/apache/cassandra/distributed/action/GossipHelper.java
index 5b23b8654e..b3acccaa2d 100644
--- a/test/distributed/org/apache/cassandra/distributed/action/GossipHelper.java
+++ b/test/distributed/org/apache/cassandra/distributed/action/GossipHelper.java
@@ -32,6 +32,7 @@ import java.util.UUID;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.dht.IPartitioner;
import org.apache.cassandra.dht.Token;
import org.apache.cassandra.distributed.api.IInstance;
@@ -467,25 +468,24 @@ public class GossipHelper
return netVersion;
}
- public static void withProperty(String prop, boolean value, Runnable r)
+ public static void withProperty(CassandraRelevantProperties prop, boolean value, Runnable r)
{
withProperty(prop, Boolean.toString(value), r);
}
- public static void withProperty(String prop, String value, Runnable r)
+ public static void withProperty(CassandraRelevantProperties prop, String value, Runnable r)
{
- String before = System.getProperty(prop);
+ String prev = prop.setString(value);
try
{
- System.setProperty(prop, value);
r.run();
}
finally
{
- if (before == null)
- System.clearProperty(prop);
+ if (prev == null)
+ prop.clearValue();
else
- System.setProperty(prop, before);
+ prop.setString(prev);
}
}
}
diff --git a/test/distributed/org/apache/cassandra/distributed/fuzz/HarryHelper.java b/test/distributed/org/apache/cassandra/distributed/fuzz/HarryHelper.java
index 2997fa654a..66178f230d 100644
--- a/test/distributed/org/apache/cassandra/distributed/fuzz/HarryHelper.java
+++ b/test/distributed/org/apache/cassandra/distributed/fuzz/HarryHelper.java
@@ -26,19 +26,28 @@ import harry.model.OpSelectors;
import harry.model.clock.OffsetClock;
import harry.model.sut.PrintlnSut;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_ALLOW_SIMPLE_STRATEGY;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_MINIMUM_REPLICATION_FACTOR;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_TCACTIVE_OPENSSL;
+import static org.apache.cassandra.config.CassandraRelevantProperties.LOG4J2_DISABLE_JMX;
+import static org.apache.cassandra.config.CassandraRelevantProperties.LOG4J2_DISABLE_JMX_LEGACY;
+import static org.apache.cassandra.config.CassandraRelevantProperties.LOG4J_SHUTDOWN_HOOK_ENABLED;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION;
+import static org.apache.cassandra.config.CassandraRelevantProperties.RELOCATED_SHADED_IO_NETTY_TRANSPORT_NONATIVE;
+
public class HarryHelper
{
public static void init()
{
- System.setProperty("log4j2.disableJmx", "true"); // setting both ways as changes between versions
- System.setProperty("log4j2.disable.jmx", "true");
- System.setProperty("log4j.shutdownHookEnabled", "false");
- System.setProperty("cassandra.allow_simplestrategy", "true"); // makes easier to share OSS tests without RF limits
- System.setProperty("cassandra.minimum_replication_factor", "0"); // makes easier to share OSS tests without RF limits
-
- System.setProperty("cassandra.disable_tcactive_openssl", "true");
- System.setProperty("relocated.shaded.io.netty.transport.noNative", "true");
- System.setProperty("org.apache.cassandra.disable_mbean_registration", "true");
+ // setting both ways as changes between versions
+ LOG4J2_DISABLE_JMX.setBoolean(true);
+ LOG4J2_DISABLE_JMX_LEGACY.setBoolean(true);
+ LOG4J_SHUTDOWN_HOOK_ENABLED.setBoolean(false);
+ CASSANDRA_ALLOW_SIMPLE_STRATEGY.setBoolean(true); // makes easier to share OSS tests without RF limits
+ CASSANDRA_MINIMUM_REPLICATION_FACTOR.setInt(0); // makes easier to share OSS tests without RF limits
+ DISABLE_TCACTIVE_OPENSSL.setBoolean(true);
+ RELOCATED_SHADED_IO_NETTY_TRANSPORT_NONATIVE.setBoolean(true);
+ ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION.setBoolean(true);
InJvmSut.init();
QueryingNoOpChecker.init();
diff --git a/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java b/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
index 8e6a9bdef7..78b14d2c56 100644
--- a/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
+++ b/test/distributed/org/apache/cassandra/distributed/impl/AbstractCluster.java
@@ -187,7 +187,7 @@ public abstract class AbstractCluster<I extends IInstance> implements ICluster<I
{
// those properties may be set for unit-test optimizations; those should not be used when running dtests
- CassandraRelevantProperties.FLUSH_LOCAL_SCHEMA_CHANGES.reset();
+ CassandraRelevantProperties.TEST_FLUSH_LOCAL_SCHEMA_CHANGES.reset();
CassandraRelevantProperties.NON_GRACEFUL_SHUTDOWN.reset();
}
diff --git a/test/distributed/org/apache/cassandra/distributed/impl/Instance.java b/test/distributed/org/apache/cassandra/distributed/impl/Instance.java
index 296695cf26..435de65d7a 100644
--- a/test/distributed/org/apache/cassandra/distributed/impl/Instance.java
+++ b/test/distributed/org/apache/cassandra/distributed/impl/Instance.java
@@ -153,6 +153,11 @@ import org.apache.cassandra.utils.progress.jmx.JMXBroadcastExecutor;
import static java.util.concurrent.TimeUnit.MINUTES;
import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFactory;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CONSISTENT_RANGE_MOVEMENT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CONSISTENT_SIMULTANEOUS_MOVES_ALLOW;
+import static org.apache.cassandra.config.CassandraRelevantProperties.RING_DELAY;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_CASSANDRA_SUITENAME;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_CASSANDRA_TESTTAG;
import static org.apache.cassandra.distributed.api.Feature.BLANK_GOSSIP;
import static org.apache.cassandra.distributed.api.Feature.GOSSIP;
import static org.apache.cassandra.distributed.api.Feature.NATIVE_PROTOCOL;
@@ -218,8 +223,8 @@ public class Instance extends IsolatedExecutor implements IInvokableInstance
{
// the path used is defined by test/conf/logback-dtest.xml and looks like the following
// ./build/test/logs/${cassandra.testtag}/${suitename}/${cluster_id}/${instance_id}/system.log
- String tag = System.getProperty("cassandra.testtag", "cassandra.testtag_IS_UNDEFINED");
- String suite = System.getProperty("suitename", "suitename_IS_UNDEFINED");
+ String tag = TEST_CASSANDRA_TESTTAG.getString();
+ String suite = TEST_CASSANDRA_SUITENAME.getString();
String clusterId = ClusterIDDefiner.getId();
String instanceId = InstanceIDDefiner.getInstanceId();
File f = new File(FileSystems.getDefault(), String.format("build/test/logs/%s/%s/%s/%s/system.log", tag, suite, clusterId, instanceId));
@@ -587,9 +592,9 @@ public class Instance extends IsolatedExecutor implements IInvokableInstance
if (config.has(GOSSIP))
{
// TODO: hacky
- System.setProperty("cassandra.ring_delay_ms", "15000");
- System.setProperty("cassandra.consistent.rangemovement", "false");
- System.setProperty("cassandra.consistent.simultaneousmoves.allow", "true");
+ RING_DELAY.setLong(15000);
+ CONSISTENT_RANGE_MOVEMENT.setBoolean(false);
+ CONSISTENT_SIMULTANEOUS_MOVES_ALLOW.setBoolean(true);
}
mkdirs();
diff --git a/test/distributed/org/apache/cassandra/distributed/impl/TracingUtil.java b/test/distributed/org/apache/cassandra/distributed/impl/TracingUtil.java
index 06fdabb419..9c347e07a2 100644
--- a/test/distributed/org/apache/cassandra/distributed/impl/TracingUtil.java
+++ b/test/distributed/org/apache/cassandra/distributed/impl/TracingUtil.java
@@ -27,7 +27,6 @@ import java.util.UUID;
import org.apache.cassandra.distributed.api.ConsistencyLevel;
import org.apache.cassandra.utils.TimeUUID;
-
/**
* Utilities for accessing the system_traces table from in-JVM dtests
*/
@@ -104,14 +103,4 @@ public class TracingUtil
}
return traces;
}
-
- // Set up the wait for tracing time system property, returning the previous value.
- // Handles being called again to reset with the original value, replacing the null
- // with the default value.
- public static String setWaitForTracingEventTimeoutSecs(String timeoutInSeconds)
- {
- return System.setProperty("cassandra.wait_for_tracing_events_timeout_secs",
- timeoutInSeconds == null ? "0" : timeoutInSeconds);
-
- }
}
diff --git a/test/distributed/org/apache/cassandra/distributed/shared/Byteman.java b/test/distributed/org/apache/cassandra/distributed/shared/Byteman.java
index b4dd10c3f4..c5c76e3ea2 100644
--- a/test/distributed/org/apache/cassandra/distributed/shared/Byteman.java
+++ b/test/distributed/org/apache/cassandra/distributed/shared/Byteman.java
@@ -47,11 +47,13 @@ import org.slf4j.LoggerFactory;
import org.jboss.byteman.agent.Transformer;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_BYTEMAN_TRANSFORMATIONS_DEBUG;
+
public final class Byteman
{
private static final Logger logger = LoggerFactory.getLogger(Byteman.class);
- private static final boolean DEBUG_TRANSFORMATIONS = Boolean.getBoolean("cassandra.test.byteman.transformations.debug");
+ private static final boolean DEBUG_TRANSFORMATIONS = TEST_BYTEMAN_TRANSFORMATIONS_DEBUG.getBoolean();
private static final Method METHOD;
private static final URL BYTEMAN;
diff --git a/test/distributed/org/apache/cassandra/distributed/shared/ClusterUtils.java b/test/distributed/org/apache/cassandra/distributed/shared/ClusterUtils.java
index c046a8a48d..c3138217e8 100644
--- a/test/distributed/org/apache/cassandra/distributed/shared/ClusterUtils.java
+++ b/test/distributed/org/apache/cassandra/distributed/shared/ClusterUtils.java
@@ -63,6 +63,9 @@ import org.apache.cassandra.utils.Isolated;
import static com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
import static org.apache.cassandra.config.CassandraRelevantProperties.BOOTSTRAP_SCHEMA_DELAY_MS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.BROADCAST_INTERVAL_MS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPLACE_ADDRESS_FIRST_BOOT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.RING_DELAY;
import static org.assertj.core.api.Assertions.assertThat;
/**
@@ -255,13 +258,13 @@ public class ClusterUtils
return start(inst, properties -> {
// lower this so the replacement waits less time
- properties.setProperty("cassandra.broadcast_interval_ms", Long.toString(TimeUnit.SECONDS.toMillis(30)));
+ properties.set(BROADCAST_INTERVAL_MS, Long.toString(TimeUnit.SECONDS.toMillis(30)));
// default is 30s, lowering as it should be faster
- properties.setProperty("cassandra.ring_delay_ms", Long.toString(TimeUnit.SECONDS.toMillis(10)));
+ properties.set(RING_DELAY, Long.toString(TimeUnit.SECONDS.toMillis(10)));
properties.set(BOOTSTRAP_SCHEMA_DELAY_MS, TimeUnit.SECONDS.toMillis(10));
// state which node to replace
- properties.setProperty("cassandra.replace_address_first_boot", toReplace.config().broadcastAddress().getAddress().getHostAddress());
+ properties.set(REPLACE_ADDRESS_FIRST_BOOT, toReplace.config().broadcastAddress().getAddress().getHostAddress());
fn.accept(inst, properties);
});
diff --git a/test/distributed/org/apache/cassandra/distributed/shared/WithProperties.java b/test/distributed/org/apache/cassandra/distributed/shared/WithProperties.java
index 88987c2393..d17d3e6f3a 100644
--- a/test/distributed/org/apache/cassandra/distributed/shared/WithProperties.java
+++ b/test/distributed/org/apache/cassandra/distributed/shared/WithProperties.java
@@ -23,92 +23,73 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.function.Supplier;
import com.google.common.base.Joiner;
import org.apache.cassandra.config.CassandraRelevantProperties;
+import static org.apache.cassandra.config.CassandraRelevantProperties.convertToString;
+
public final class WithProperties implements AutoCloseable
{
- private final List<Property> properties = new ArrayList<>();
+ private final List<Runnable> rollback = new ArrayList<>();
public WithProperties()
{
}
- public WithProperties(String... kvs)
- {
- with(kvs);
- }
-
- public void with(String... kvs)
+ public WithProperties with(String... kvs)
{
assert kvs.length % 2 == 0 : "Input must have an even amount of inputs but given " + kvs.length;
for (int i = 0; i <= kvs.length - 2; i = i + 2)
- {
with(kvs[i], kvs[i + 1]);
- }
+ return this;
}
- public void setProperty(String key, String value)
+ public WithProperties set(CassandraRelevantProperties prop, String value)
{
- with(key, value);
+ return set(prop, () -> prop.setString(value));
}
- public void set(CassandraRelevantProperties prop, String value)
+ public WithProperties set(CassandraRelevantProperties prop, String... values)
{
- with(prop.getKey(), value);
+ return set(prop, Arrays.asList(values));
}
- public void set(CassandraRelevantProperties prop, String... values)
+ public WithProperties set(CassandraRelevantProperties prop, Collection<String> values)
{
- set(prop, Arrays.asList(values));
+ return set(prop, Joiner.on(",").join(values));
}
- public void set(CassandraRelevantProperties prop, Collection<String> values)
+ public WithProperties set(CassandraRelevantProperties prop, boolean value)
{
- set(prop, Joiner.on(",").join(values));
+ return set(prop, () -> prop.setBoolean(value));
}
- public void set(CassandraRelevantProperties prop, boolean value)
+ public WithProperties set(CassandraRelevantProperties prop, long value)
{
- set(prop, Boolean.toString(value));
+ return set(prop, () -> prop.setLong(value));
}
- public void set(CassandraRelevantProperties prop, long value)
+ private void with(String key, String value)
{
- set(prop, Long.toString(value));
+ String previous = System.setProperty(key, value); // checkstyle: suppress nearby 'blockSystemPropertyUsage'
+ rollback.add(previous == null ? () -> System.clearProperty(key) : () -> System.setProperty(key, previous)); // checkstyle: suppress nearby 'blockSystemPropertyUsage'
}
- public void with(String key, String value)
+ private WithProperties set(CassandraRelevantProperties prop, Supplier<Object> prev)
{
- String previous = System.setProperty(key, value);
- properties.add(new Property(key, previous));
+ String previous = convertToString(prev.get());
+ rollback.add(previous == null ? prop::clearValue : () -> prop.setString(previous));
+ return this;
}
-
@Override
public void close()
{
- Collections.reverse(properties);
- properties.forEach(s -> {
- if (s.value == null)
- System.getProperties().remove(s.key);
- else
- System.setProperty(s.key, s.value);
- });
- properties.clear();
- }
-
- private static final class Property
- {
- private final String key;
- private final String value;
-
- private Property(String key, String value)
- {
- this.key = key;
- this.value = value;
- }
+ Collections.reverse(rollback);
+ rollback.forEach(Runnable::run);
+ rollback.clear();
}
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/AlterTest.java b/test/distributed/org/apache/cassandra/distributed/test/AlterTest.java
index 907ba5e218..bc7159b928 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/AlterTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/AlterTest.java
@@ -41,6 +41,7 @@ import org.apache.cassandra.distributed.shared.ClusterUtils;
import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.Throwables;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JOIN_RING;
import static org.apache.cassandra.distributed.action.GossipHelper.withProperty;
import static org.apache.cassandra.distributed.api.ConsistencyLevel.ONE;
import static org.apache.cassandra.distributed.api.Feature.GOSSIP;
@@ -98,7 +99,7 @@ public class AlterTest extends TestBaseImpl
{
IInstanceConfig config = cluster.newInstanceConfig();
IInvokableInstance gossippingOnlyMember = cluster.bootstrap(config);
- withProperty("cassandra.join_ring", Boolean.toString(false), () -> gossippingOnlyMember.startup(cluster));
+ withProperty(JOIN_RING, false, () -> gossippingOnlyMember.startup(cluster));
int attempts = 0;
// it takes some time the underlying structure is populated otherwise the test is flaky
diff --git a/test/distributed/org/apache/cassandra/distributed/test/BootstrapBinaryDisabledTest.java b/test/distributed/org/apache/cassandra/distributed/test/BootstrapBinaryDisabledTest.java
index 60bc60c9c4..1706c13b4f 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/BootstrapBinaryDisabledTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/BootstrapBinaryDisabledTest.java
@@ -41,20 +41,21 @@ import org.apache.cassandra.distributed.shared.NetworkTopology;
import org.apache.cassandra.utils.Shared;
import static org.apache.cassandra.config.CassandraRelevantProperties.RESET_BOOTSTRAP_PROGRESS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.RING_DELAY;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_WRITE_SURVEY;
/**
* Replaces python dtest bootstrap_test.py::TestBootstrap::test_bootstrap_binary_disabled
*/
public class BootstrapBinaryDisabledTest extends TestBaseImpl
{
- static String originalResetBootstrapProgress = null;
+ static Boolean originalResetBootstrapProgress = null;
@BeforeClass
public static void beforeClass() throws Throwable
{
TestBaseImpl.beforeClass();
- originalResetBootstrapProgress = RESET_BOOTSTRAP_PROGRESS.getString();
- RESET_BOOTSTRAP_PROGRESS.setBoolean(false);
+ originalResetBootstrapProgress = RESET_BOOTSTRAP_PROGRESS.setBoolean(false);
}
@AfterClass
@@ -63,7 +64,7 @@ public class BootstrapBinaryDisabledTest extends TestBaseImpl
if (originalResetBootstrapProgress == null)
RESET_BOOTSTRAP_PROGRESS.clearValue();
else
- RESET_BOOTSTRAP_PROGRESS.setString(originalResetBootstrapProgress);
+ RESET_BOOTSTRAP_PROGRESS.setBoolean(originalResetBootstrapProgress);
}
@Test
@@ -115,9 +116,9 @@ public class BootstrapBinaryDisabledTest extends TestBaseImpl
config.forEach(nodeConfig::set);
//TODO can we make this more isolated?
- System.setProperty("cassandra.ring_delay_ms", "5000");
+ RING_DELAY.setLong(5000);
if (isWriteSurvey)
- System.setProperty("cassandra.write_survey", "true");
+ TEST_WRITE_SURVEY.setBoolean(true);
RewriteEnabled.enable();
cluster.bootstrap(nodeConfig).startup();
diff --git a/test/distributed/org/apache/cassandra/distributed/test/CASContentionTest.java b/test/distributed/org/apache/cassandra/distributed/test/CASContentionTest.java
index aafbc45277..60e8db0cb1 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/CASContentionTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/CASContentionTest.java
@@ -35,6 +35,7 @@ import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PAXOS_USE_SELF_EXECUTION;
import static org.apache.cassandra.distributed.api.ConsistencyLevel.QUORUM;
import static org.apache.cassandra.net.Verb.PAXOS2_PREPARE_REQ;
@@ -45,7 +46,7 @@ public class CASContentionTest extends CASTestBase
@BeforeClass
public static void beforeClass() throws Throwable
{
- System.setProperty("cassandra.paxos.use_self_execution", "false");
+ PAXOS_USE_SELF_EXECUTION.setBoolean(false);
TestBaseImpl.beforeClass();
Consumer<IInstanceConfig> conf = config -> config
.set("paxos_variant", "v2")
diff --git a/test/distributed/org/apache/cassandra/distributed/test/CASTest.java b/test/distributed/org/apache/cassandra/distributed/test/CASTest.java
index 8e2b8ac901..dc792564ff 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/CASTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/CASTest.java
@@ -39,6 +39,7 @@ import org.apache.cassandra.exceptions.CasWriteTimeoutException;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PAXOS_USE_SELF_EXECUTION;
import static org.apache.cassandra.distributed.api.ConsistencyLevel.ANY;
import static org.apache.cassandra.distributed.api.ConsistencyLevel.ONE;
import static org.apache.cassandra.distributed.api.ConsistencyLevel.LOCAL_QUORUM;
@@ -76,7 +77,7 @@ public class CASTest extends CASCommonTestCases
@BeforeClass
public static void beforeClass() throws Throwable
{
- System.setProperty("cassandra.paxos.use_self_execution", "false");
+ PAXOS_USE_SELF_EXECUTION.setBoolean(false);
TestBaseImpl.beforeClass();
Consumer<IInstanceConfig> conf = config -> config
.set("paxos_variant", "v2")
diff --git a/test/distributed/org/apache/cassandra/distributed/test/DataResurrectionCheckTest.java b/test/distributed/org/apache/cassandra/distributed/test/DataResurrectionCheckTest.java
index 1b297da46f..b1a3d208f5 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/DataResurrectionCheckTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/DataResurrectionCheckTest.java
@@ -25,7 +25,6 @@ import java.util.concurrent.atomic.AtomicReference;
import org.junit.Test;
-import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.config.StartupChecksOptions;
import org.apache.cassandra.distributed.Cluster;
import org.apache.cassandra.distributed.api.IInvokableInstance;
@@ -40,6 +39,7 @@ import org.apache.cassandra.utils.Clock.Global;
import static java.lang.String.format;
import static java.util.concurrent.TimeUnit.MINUTES;
import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CHECK_DATA_RESURRECTION_HEARTBEAT_PERIOD;
import static org.apache.cassandra.config.StartupChecksOptions.ENABLED_PROPERTY;
import static org.apache.cassandra.distributed.Cluster.build;
import static org.apache.cassandra.distributed.api.Feature.NATIVE_PROTOCOL;
@@ -62,7 +62,7 @@ public class DataResurrectionCheckTest extends TestBaseImpl
try
{
// set it to 1 hour so check will be not updated after it is written, for test purposes
- System.setProperty(CassandraRelevantProperties.CHECK_DATA_RESURRECTION_HEARTBEAT_PERIOD.getKey(), "3600000");
+ CHECK_DATA_RESURRECTION_HEARTBEAT_PERIOD.setInt(3600000);
// start the node with the check enabled, it will just pass fine as there are not any user tables yet
// and system tables are young enough
@@ -131,7 +131,7 @@ public class DataResurrectionCheckTest extends TestBaseImpl
}
finally
{
- System.clearProperty(CassandraRelevantProperties.CHECK_DATA_RESURRECTION_HEARTBEAT_PERIOD.getKey());
+ CHECK_DATA_RESURRECTION_HEARTBEAT_PERIOD.clearValue();
}
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/FailingResponseDoesNotLogTest.java b/test/distributed/org/apache/cassandra/distributed/test/FailingResponseDoesNotLogTest.java
index 1071938a5e..8a710241bd 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/FailingResponseDoesNotLogTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/FailingResponseDoesNotLogTest.java
@@ -49,6 +49,8 @@ import org.apache.cassandra.transport.messages.ResultMessage;
import org.apache.cassandra.utils.MD5Digest;
import org.assertj.core.api.Assertions;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CUSTOM_QUERY_HANDLER_CLASS;
+
/**
* This class is rather impelemntation specific. It is possible that changes made will cause this tests to fail,
* so updating to the latest logic is fine.
@@ -68,7 +70,7 @@ public class FailingResponseDoesNotLogTest extends TestBaseImpl
@Test
public void dispatcherErrorDoesNotLock() throws IOException
{
- System.setProperty("cassandra.custom_query_handler_class", AlwaysRejectErrorQueryHandler.class.getName());
+ CUSTOM_QUERY_HANDLER_CLASS.setString(AlwaysRejectErrorQueryHandler.class.getName());
try (Cluster cluster = Cluster.build(1)
.withConfig(c -> c.with(Feature.NATIVE_PROTOCOL, Feature.GOSSIP)
.set("client_error_reporting_exclusions", ImmutableMap.of("subnets", Collections.singletonList("127.0.0.1")))
@@ -94,7 +96,7 @@ public class FailingResponseDoesNotLogTest extends TestBaseImpl
}
finally
{
- System.clearProperty("cassandra.custom_query_handler_class");
+ CUSTOM_QUERY_HANDLER_CLASS.clearValue();
}
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/FailingTruncationTest.java b/test/distributed/org/apache/cassandra/distributed/test/FailingTruncationTest.java
index dd419dbf2b..9ce2bf339d 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/FailingTruncationTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/FailingTruncationTest.java
@@ -30,13 +30,12 @@ import org.apache.cassandra.distributed.Cluster;
import org.apache.cassandra.distributed.api.ConsistencyLevel;
import static net.bytebuddy.matcher.ElementMatchers.named;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_BBFAILHELPER_ENABLED;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class FailingTruncationTest extends TestBaseImpl
{
- private static final String BB_FAIL_HELPER_PROP = "test.bbfailhelper.enabled";
-
@Test
public void testFailingTruncation() throws IOException
{
@@ -45,7 +44,7 @@ public class FailingTruncationTest extends TestBaseImpl
.start()))
{
cluster.setUncaughtExceptionsFilter(t -> "truncateBlocking".equals(t.getMessage()));
- System.setProperty(BB_FAIL_HELPER_PROP, "true");
+ TEST_BBFAILHELPER_ENABLED.setBoolean(true);
cluster.schemaChange("create table " + KEYSPACE + ".tbl (id int primary key, t int)");
try
{
@@ -76,7 +75,7 @@ public class FailingTruncationTest extends TestBaseImpl
public static void truncateBlocking()
{
- if (Boolean.getBoolean(BB_FAIL_HELPER_PROP))
+ if (TEST_BBFAILHELPER_ENABLED.getBoolean())
throw new RuntimeException("truncateBlocking");
}
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/GossipTest.java b/test/distributed/org/apache/cassandra/distributed/test/GossipTest.java
index c5f2a07e13..39054118aa 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/GossipTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/GossipTest.java
@@ -51,6 +51,7 @@ import org.assertj.core.api.Assertions;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JOIN_RING;
import static org.apache.cassandra.distributed.action.GossipHelper.withProperty;
import static org.apache.cassandra.distributed.api.Feature.GOSSIP;
import static org.apache.cassandra.distributed.api.Feature.NETWORK;
@@ -299,7 +300,7 @@ public class GossipTest extends TestBaseImpl
{
IInstanceConfig config = cluster.newInstanceConfig();
IInvokableInstance gossippingOnlyMember = cluster.bootstrap(config);
- withProperty("cassandra.join_ring", Boolean.toString(false), () -> gossippingOnlyMember.startup(cluster));
+ withProperty(JOIN_RING, false, () -> gossippingOnlyMember.startup(cluster));
assertTrue(gossippingOnlyMember.callOnInstance((IIsolatedExecutor.SerializableCallable<Boolean>)
() -> StorageService.instance.isGossipRunning()));
diff --git a/test/distributed/org/apache/cassandra/distributed/test/IPMembershipTest.java b/test/distributed/org/apache/cassandra/distributed/test/IPMembershipTest.java
index b9d770f68a..16a97b005b 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/IPMembershipTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/IPMembershipTest.java
@@ -36,6 +36,7 @@ import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.tools.ToolRunner;
import org.assertj.core.api.Assertions;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPLACE_ADDRESS;
import static org.apache.cassandra.distributed.shared.ClusterUtils.assertRingIs;
import static org.apache.cassandra.distributed.shared.ClusterUtils.getDirectories;
import static org.apache.cassandra.distributed.shared.ClusterUtils.stopUnchecked;
@@ -69,7 +70,8 @@ public class IPMembershipTest extends TestBaseImpl
((InstanceConfig) nodeToReplace.config()).setHostId(UUID.randomUUID());
Assertions.assertThatThrownBy(() -> nodeToReplace.startup())
- .hasMessage("A node with address /127.0.0.3:7012 already exists, cancelling join. Use cassandra.replace_address if you want to replace this node.");
+ .hasMessage("A node with address /127.0.0.3:7012 already exists, cancelling join. Use " +
+ REPLACE_ADDRESS.getKey() + " if you want to replace this node.");
}
}
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/MessageForwardingTest.java b/test/distributed/org/apache/cassandra/distributed/test/MessageForwardingTest.java
index a4dd8e6442..7969c77c24 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/MessageForwardingTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/MessageForwardingTest.java
@@ -41,6 +41,7 @@ import org.apache.cassandra.distributed.impl.IsolatedExecutor;
import org.apache.cassandra.distributed.impl.TracingUtil;
import org.apache.cassandra.utils.TimeUUID;
+import static org.apache.cassandra.config.CassandraRelevantProperties.WAIT_FOR_TRACING_EVENTS_TIMEOUT_SECS;
import static org.apache.cassandra.utils.TimeUUID.Generator.nextTimeUUID;
public class MessageForwardingTest extends TestBaseImpl
@@ -48,7 +49,10 @@ public class MessageForwardingTest extends TestBaseImpl
@Test
public void mutationsForwardedToAllReplicasTest()
{
- String originalTraceTimeout = TracingUtil.setWaitForTracingEventTimeoutSecs("1");
+ // Set up the wait for tracing time system property, returning the previous value.
+ // Handles being called again to reset with the original value, replacing the null
+ // with the default value.
+ Integer originalTraceTimeout = WAIT_FOR_TRACING_EVENTS_TIMEOUT_SECS.setInt(1);
final int numInserts = 100;
Map<InetAddress, Integer> forwardFromCounts = new HashMap<>();
Map<InetAddress, Integer> commitCounts = new HashMap<>();
@@ -117,7 +121,10 @@ public class MessageForwardingTest extends TestBaseImpl
}
finally
{
- TracingUtil.setWaitForTracingEventTimeoutSecs(originalTraceTimeout);
+ if (originalTraceTimeout == null)
+ WAIT_FOR_TRACING_EVENTS_TIMEOUT_SECS.clearValue();
+ else
+ WAIT_FOR_TRACING_EVENTS_TIMEOUT_SECS.setInt(originalTraceTimeout);
}
}
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/MigrationCoordinatorTest.java b/test/distributed/org/apache/cassandra/distributed/test/MigrationCoordinatorTest.java
index ca89b43d0c..9478c75b01 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/MigrationCoordinatorTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/MigrationCoordinatorTest.java
@@ -30,8 +30,10 @@ import org.apache.cassandra.distributed.api.TokenSupplier;
import org.apache.cassandra.distributed.shared.NetworkTopology;
import org.apache.cassandra.schema.Schema;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CONSISTENT_RANGE_MOVEMENT;
import static org.apache.cassandra.config.CassandraRelevantProperties.IGNORED_SCHEMA_CHECK_ENDPOINTS;
import static org.apache.cassandra.config.CassandraRelevantProperties.IGNORED_SCHEMA_CHECK_VERSIONS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPLACE_ADDRESS;
import static org.apache.cassandra.distributed.api.Feature.GOSSIP;
import static org.apache.cassandra.distributed.api.Feature.NETWORK;
@@ -41,11 +43,9 @@ public class MigrationCoordinatorTest extends TestBaseImpl
@Before
public void setUp()
{
- System.clearProperty("cassandra.replace_address");
- System.clearProperty("cassandra.consistent.rangemovement");
-
- System.clearProperty(IGNORED_SCHEMA_CHECK_VERSIONS.getKey());
- System.clearProperty(IGNORED_SCHEMA_CHECK_VERSIONS.getKey());
+ REPLACE_ADDRESS.clearValue();
+ CONSISTENT_RANGE_MOVEMENT.clearValue();
+ IGNORED_SCHEMA_CHECK_VERSIONS.clearValue();
}
/**
* We shouldn't wait on versions only available from a node being replaced
@@ -67,7 +67,7 @@ public class MigrationCoordinatorTest extends TestBaseImpl
IInstanceConfig config = cluster.newInstanceConfig();
config.set("auto_bootstrap", true);
- System.setProperty("cassandra.replace_address", replacementAddress.getHostAddress());
+ REPLACE_ADDRESS.setString(replacementAddress.getHostAddress());
cluster.bootstrap(config).startup();
}
}
@@ -89,7 +89,7 @@ public class MigrationCoordinatorTest extends TestBaseImpl
IInstanceConfig config = cluster.newInstanceConfig();
config.set("auto_bootstrap", true);
IGNORED_SCHEMA_CHECK_ENDPOINTS.setString(ignoredEndpoint.getHostAddress());
- System.setProperty("cassandra.consistent.rangemovement", "false");
+ CONSISTENT_RANGE_MOVEMENT.setBoolean(false);
cluster.bootstrap(config).startup();
}
}
@@ -116,7 +116,7 @@ public class MigrationCoordinatorTest extends TestBaseImpl
IInstanceConfig config = cluster.newInstanceConfig();
config.set("auto_bootstrap", true);
IGNORED_SCHEMA_CHECK_VERSIONS.setString(initialVersion.toString() + ',' + oldVersion);
- System.setProperty("cassandra.consistent.rangemovement", "false");
+ CONSISTENT_RANGE_MOVEMENT.setBoolean(false);
cluster.bootstrap(config).startup();
}
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/MoveTest.java b/test/distributed/org/apache/cassandra/distributed/test/MoveTest.java
index fc1bca32d1..cdbe1cd59b 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/MoveTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/MoveTest.java
@@ -31,6 +31,7 @@ import org.apache.cassandra.distributed.api.ConsistencyLevel;
import org.apache.cassandra.distributed.api.NodeToolResult;
import org.apache.cassandra.service.StorageService;
+import static org.apache.cassandra.config.CassandraRelevantProperties.RING_DELAY;
import static org.apache.cassandra.distributed.api.Feature.GOSSIP;
import static org.apache.cassandra.distributed.api.Feature.NETWORK;
@@ -42,7 +43,7 @@ public class MoveTest extends TestBaseImpl
static
{
- System.setProperty("cassandra.ring_delay_ms", "5000"); // down from 30s default
+ RING_DELAY.setLong(5000);
}
private void move(boolean forwards) throws Throwable
diff --git a/test/distributed/org/apache/cassandra/distributed/test/NativeMixedVersionTest.java b/test/distributed/org/apache/cassandra/distributed/test/NativeMixedVersionTest.java
index 26d0186504..bdabf55789 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/NativeMixedVersionTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/NativeMixedVersionTest.java
@@ -32,6 +32,8 @@ import org.apache.cassandra.distributed.api.Feature;
import org.apache.cassandra.distributed.api.IInvokableInstance;
import org.assertj.core.api.Assertions;
+import static org.apache.cassandra.config.CassandraRelevantProperties.IO_NETTY_EVENTLOOP_THREADS;
+
public class NativeMixedVersionTest extends TestBaseImpl
{
@Test
@@ -39,7 +41,7 @@ public class NativeMixedVersionTest extends TestBaseImpl
{
// make sure to limit the netty thread pool to size 1, this will make the test determanistic as all work
// will happen on the single thread.
- System.setProperty("io.netty.eventLoopThreads", "1");
+ IO_NETTY_EVENTLOOP_THREADS.setInt(1);
try (Cluster cluster = Cluster.build(1)
.withConfig(c ->
c.with(Feature.values())
@@ -80,7 +82,7 @@ public class NativeMixedVersionTest extends TestBaseImpl
}
finally
{
- System.clearProperty("io.netty.eventLoopThreads");
+ IO_NETTY_EVENTLOOP_THREADS.clearValue();
}
}
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/NativeProtocolTest.java b/test/distributed/org/apache/cassandra/distributed/test/NativeProtocolTest.java
index f965572d80..11ba9946cb 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/NativeProtocolTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/NativeProtocolTest.java
@@ -34,6 +34,7 @@ import com.datastax.driver.core.Statement;
import org.apache.cassandra.distributed.api.ICluster;
import org.apache.cassandra.distributed.impl.RowUtil;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JOIN_RING;
import static org.apache.cassandra.distributed.action.GossipHelper.withProperty;
import static org.apache.cassandra.distributed.api.Feature.GOSSIP;
import static org.apache.cassandra.distributed.api.Feature.NATIVE_PROTOCOL;
@@ -103,7 +104,7 @@ public class NativeProtocolTest extends TestBaseImpl
{
IInstanceConfig config = cluster.newInstanceConfig();
IInvokableInstance gossippingOnlyMember = cluster.bootstrap(config);
- withProperty("cassandra.join_ring", Boolean.toString(false), () -> gossippingOnlyMember.startup(cluster));
+ withProperty(JOIN_RING, false, () -> gossippingOnlyMember.startup(cluster));
assertTrue(gossippingOnlyMember.callOnInstance((IIsolatedExecutor.SerializableCallable<Boolean>)
() -> StorageService.instance.isNativeTransportRunning()));
diff --git a/test/distributed/org/apache/cassandra/distributed/test/PartitionDenylistTest.java b/test/distributed/org/apache/cassandra/distributed/test/PartitionDenylistTest.java
index 382981f903..d8e63784ed 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/PartitionDenylistTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/PartitionDenylistTest.java
@@ -34,6 +34,9 @@ import org.apache.cassandra.distributed.Cluster;
import org.apache.cassandra.service.StorageProxy;
import org.apache.cassandra.service.StorageService;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CONSISTENT_RANGE_MOVEMENT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CONSISTENT_SIMULTANEOUS_MOVES_ALLOW;
+import static org.apache.cassandra.config.CassandraRelevantProperties.RING_DELAY;
import static org.apache.cassandra.distributed.api.Feature.GOSSIP;
import static org.apache.cassandra.distributed.api.Feature.NETWORK;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
@@ -58,9 +61,9 @@ public class PartitionDenylistTest extends TestBaseImpl
public void checkStartupWithoutTriggeringUnavailable() throws IOException, InterruptedException, ExecutionException, TimeoutException
{
int nodeCount = 4;
- System.setProperty("cassandra.ring_delay_ms", "5000"); // down from 30s default
- System.setProperty("cassandra.consistent.rangemovement", "false");
- System.setProperty("cassandra.consistent.simultaneousmoves.allow", "true");
+ RING_DELAY.setLong(5000); // down from 30s default
+ CONSISTENT_RANGE_MOVEMENT.setBoolean(false);
+ CONSISTENT_SIMULTANEOUS_MOVES_ALLOW.setBoolean(true);
try (Cluster cluster = Cluster.build(nodeCount)
.withConfig(config -> config
.with(NETWORK)
diff --git a/test/distributed/org/apache/cassandra/distributed/test/PaxosRepair2Test.java b/test/distributed/org/apache/cassandra/distributed/test/PaxosRepair2Test.java
index 804353028b..13405162c3 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/PaxosRepair2Test.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/PaxosRepair2Test.java
@@ -92,6 +92,8 @@ import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.Pair;
import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.AUTO_REPAIR_FREQUENCY_SECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_PAXOS_AUTO_REPAIRS;
import static org.apache.cassandra.schema.SchemaConstants.SYSTEM_KEYSPACE_NAME;
import static org.apache.cassandra.service.paxos.Ballot.Flag.GLOBAL;
import static org.apache.cassandra.service.paxos.BallotGenerator.Global.staleBallot;
@@ -107,7 +109,7 @@ public class PaxosRepair2Test extends TestBaseImpl
static
{
- CassandraRelevantProperties.PAXOS_EXECUTE_ON_SELF.setBoolean(false);
+ CassandraRelevantProperties.PAXOS_USE_SELF_EXECUTION.setBoolean(false);
DatabaseDescriptor.daemonInitialization();
}
@@ -331,8 +333,8 @@ public class PaxosRepair2Test extends TestBaseImpl
@Test
public void paxosAutoRepair() throws Throwable
{
- System.setProperty("cassandra.auto_repair_frequency_seconds", "1");
- System.setProperty("cassandra.disable_paxos_auto_repairs", "true");
+ AUTO_REPAIR_FREQUENCY_SECONDS.setInt(1);
+ DISABLE_PAXOS_AUTO_REPAIRS.setBoolean(true);
try (Cluster cluster = init(Cluster.create(3, cfg -> cfg
.set("paxos_variant", "v2")
.set("paxos_repair_enabled", true)
@@ -341,8 +343,8 @@ public class PaxosRepair2Test extends TestBaseImpl
{
cluster.forEach(i -> {
Assert.assertFalse(CassandraRelevantProperties.CLOCK_GLOBAL.isPresent());
- Assert.assertEquals("1", System.getProperty("cassandra.auto_repair_frequency_seconds"));
- Assert.assertEquals("true", System.getProperty("cassandra.disable_paxos_auto_repairs"));
+ Assert.assertEquals(1, CassandraRelevantProperties.AUTO_REPAIR_FREQUENCY_SECONDS.getInt());
+ Assert.assertTrue(CassandraRelevantProperties.DISABLE_PAXOS_AUTO_REPAIRS.getBoolean());
});
cluster.schemaChange("CREATE TABLE " + KEYSPACE + '.' + TABLE + " (pk int, ck int, v int, PRIMARY KEY (pk, ck))");
ClusterUtils.stopUnchecked(cluster.get(3));
@@ -380,8 +382,8 @@ public class PaxosRepair2Test extends TestBaseImpl
}
finally
{
- System.clearProperty("cassandra.auto_repair_frequency_seconds");
- System.clearProperty("cassandra.disable_paxos_auto_repairs");
+ AUTO_REPAIR_FREQUENCY_SECONDS.clearValue();
+ DISABLE_PAXOS_AUTO_REPAIRS.clearValue();
}
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/PaxosRepairTest.java b/test/distributed/org/apache/cassandra/distributed/test/PaxosRepairTest.java
index bfd4e9534e..3251f84ee5 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/PaxosRepairTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/PaxosRepairTest.java
@@ -96,7 +96,7 @@ public class PaxosRepairTest extends TestBaseImpl
static
{
- CassandraRelevantProperties.PAXOS_EXECUTE_ON_SELF.setBoolean(false);
+ CassandraRelevantProperties.PAXOS_USE_SELF_EXECUTION.setBoolean(false);
DatabaseDescriptor.daemonInitialization();
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/ReadRepairTest.java b/test/distributed/org/apache/cassandra/distributed/test/ReadRepairTest.java
index 9a70e897fe..83c2806079 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/ReadRepairTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/ReadRepairTest.java
@@ -34,7 +34,6 @@ import net.bytebuddy.ByteBuddy;
import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
import net.bytebuddy.implementation.MethodDelegation;
import net.bytebuddy.implementation.bind.annotation.SuperCall;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.DecoratedKey;
import org.apache.cassandra.db.Mutation;
@@ -59,6 +58,7 @@ import org.apache.cassandra.service.reads.repair.ReadRepairStrategy;
import static net.bytebuddy.matcher.ElementMatchers.named;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_ALTER_RF_DURING_RANGE_MOVEMENT;
import static org.apache.cassandra.db.Keyspace.open;
import static org.apache.cassandra.distributed.api.ConsistencyLevel.ALL;
import static org.apache.cassandra.distributed.api.ConsistencyLevel.QUORUM;
@@ -253,7 +253,7 @@ public class ReadRepairTest extends TestBaseImpl
assertRows(cluster.get(2).executeInternal(query));
// alter RF
- System.setProperty(Config.PROPERTY_PREFIX + "allow_alter_rf_during_range_movement", "true");
+ ALLOW_ALTER_RF_DURING_RANGE_MOVEMENT.setBoolean(true);
cluster.schemaChange(withKeyspace("ALTER KEYSPACE %s WITH replication = " +
"{'class': 'SimpleStrategy', 'replication_factor': 2}"));
diff --git a/test/distributed/org/apache/cassandra/distributed/test/RepairCoordinatorBase.java b/test/distributed/org/apache/cassandra/distributed/test/RepairCoordinatorBase.java
index f1266fafaf..0fc2554b01 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/RepairCoordinatorBase.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/RepairCoordinatorBase.java
@@ -34,6 +34,8 @@ import org.apache.cassandra.distributed.api.NodeToolResult;
import org.apache.cassandra.distributed.test.DistributedRepairUtils.RepairParallelism;
import org.apache.cassandra.distributed.test.DistributedRepairUtils.RepairType;
+import static org.apache.cassandra.config.CassandraRelevantProperties.NODETOOL_JMX_NOTIFICATION_POLL_INTERVAL_SECONDS;
+
public class RepairCoordinatorBase extends TestBaseImpl
{
protected static Cluster CLUSTER;
@@ -67,7 +69,7 @@ public class RepairCoordinatorBase extends TestBaseImpl
// This only works because the way CI works
// In CI a new JVM is spun up for each test file, so this doesn't have to worry about another test file
// getting this set first
- System.setProperty("cassandra.nodetool.jmx_notification_poll_interval_seconds", "1");
+ NODETOOL_JMX_NOTIFICATION_POLL_INTERVAL_SECONDS.setLong(1);
}
@BeforeClass
diff --git a/test/distributed/org/apache/cassandra/distributed/test/TestBaseImpl.java b/test/distributed/org/apache/cassandra/distributed/test/TestBaseImpl.java
index 0173c55334..35c59046ea 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/TestBaseImpl.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/TestBaseImpl.java
@@ -44,6 +44,7 @@ import org.apache.cassandra.distributed.api.IInvokableInstance;
import org.apache.cassandra.distributed.shared.DistributedTestBase;
import static org.apache.cassandra.config.CassandraRelevantProperties.BOOTSTRAP_SCHEMA_DELAY_MS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JOIN_RING;
import static org.apache.cassandra.distributed.action.GossipHelper.withProperty;
public class TestBaseImpl extends DistributedTestBase
@@ -121,8 +122,8 @@ public class TestBaseImpl extends DistributedTestBase
IInstanceConfig config = cluster.newInstanceConfig();
config.set("auto_bootstrap", true);
IInvokableInstance newInstance = cluster.bootstrap(config);
- withProperty(BOOTSTRAP_SCHEMA_DELAY_MS.getKey(), Integer.toString(90 * 1000),
- () -> withProperty("cassandra.join_ring", false, () -> newInstance.startup(cluster)));
+ withProperty(BOOTSTRAP_SCHEMA_DELAY_MS, Integer.toString(90 * 1000),
+ () -> withProperty(JOIN_RING, false, () -> newInstance.startup(cluster)));
newInstance.nodetoolResult("join").asserts().success();
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/TimeoutAbortTest.java b/test/distributed/org/apache/cassandra/distributed/test/TimeoutAbortTest.java
index 8adf30777f..f496530b29 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/TimeoutAbortTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/TimeoutAbortTest.java
@@ -26,6 +26,7 @@ import org.junit.Test;
import org.apache.cassandra.distributed.Cluster;
import org.apache.cassandra.distributed.api.ConsistencyLevel;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_READ_ITERATION_DELAY_MS;
import static org.junit.Assert.assertFalse;
import static org.psjava.util.AssertStatus.assertTrue;
@@ -34,7 +35,7 @@ public class TimeoutAbortTest extends TestBaseImpl
@Test
public void timeoutTest() throws IOException, InterruptedException
{
- System.setProperty("cassandra.test.read_iteration_delay_ms", "5000");
+ TEST_READ_ITERATION_DELAY_MS.setInt(5000);
try (Cluster cluster = init(Cluster.build(1).start()))
{
cluster.schemaChange(withKeyspace("create table %s.tbl (id int, ck1 int, ck2 int, d int, primary key (id, ck1, ck2))"));
diff --git a/test/distributed/org/apache/cassandra/distributed/test/UpdateSystemAuthAfterDCExpansionTest.java b/test/distributed/org/apache/cassandra/distributed/test/UpdateSystemAuthAfterDCExpansionTest.java
index 87650670ab..5313ceefbc 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/UpdateSystemAuthAfterDCExpansionTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/UpdateSystemAuthAfterDCExpansionTest.java
@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.UUID;
import com.google.common.collect.ImmutableList;
+
import org.apache.cassandra.utils.concurrent.Condition;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -44,6 +45,7 @@ import org.apache.cassandra.utils.progress.ProgressEventType;
import static java.util.concurrent.TimeUnit.MINUTES;
import static org.apache.cassandra.auth.AuthKeyspace.ROLES;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SUPERUSER_SETUP_DELAY_MS;
import static org.apache.cassandra.distributed.api.Feature.GOSSIP;
import static org.apache.cassandra.distributed.api.Feature.NETWORK;
import static org.apache.cassandra.distributed.shared.AssertUtils.assertRows;
@@ -113,7 +115,7 @@ public class UpdateSystemAuthAfterDCExpansionTest extends TestBaseImpl
{
// reduce the time from 10s to prevent "Cannot process role related query as the role manager isn't yet setup."
// exception from CassandraRoleManager
- System.setProperty("cassandra.superuser_setup_delay_ms", "0");
+ SUPERUSER_SETUP_DELAY_MS.setLong(0);
TestBaseImpl.beforeClass();
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/VirtualTableLogsTest.java b/test/distributed/org/apache/cassandra/distributed/test/VirtualTableLogsTest.java
index 17cd994256..b0062ce3e5 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/VirtualTableLogsTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/VirtualTableLogsTest.java
@@ -33,6 +33,7 @@ import org.apache.cassandra.schema.SchemaConstants;
import org.apache.cassandra.utils.logging.VirtualTableAppender;
import static java.lang.String.format;
+import static org.apache.cassandra.config.CassandraRelevantProperties.LOGBACK_CONFIGURATION_FILE;
import static org.apache.cassandra.db.virtual.LogMessagesTable.LEVEL_COLUMN_NAME;
import static org.apache.cassandra.db.virtual.LogMessagesTable.LOGGER_COLUMN_NAME;
import static org.apache.cassandra.db.virtual.LogMessagesTable.MESSAGE_COLUMN_NAME;
@@ -49,7 +50,7 @@ public class VirtualTableLogsTest extends TestBaseImpl
@Test
public void testVTableOutput() throws Throwable
{
- System.setProperty("logback.configurationFile", "test/conf/logback-dtest_with_vtable_appender.xml");
+ LOGBACK_CONFIGURATION_FILE.setString("test/conf/logback-dtest_with_vtable_appender.xml");
try (Cluster cluster = Cluster.build(1)
.withConfig(c -> c.with(Feature.values()))
@@ -62,14 +63,14 @@ public class VirtualTableLogsTest extends TestBaseImpl
}
finally
{
- System.clearProperty("logback.configurationFile");
+ LOGBACK_CONFIGURATION_FILE.clearValue();
}
}
@Test
public void testMultipleAppendersFailToStartNode() throws Throwable
{
- System.setProperty("logback.configurationFile", "test/conf/logback-dtest_with_vtable_appender_invalid.xml");
+ LOGBACK_CONFIGURATION_FILE.setString("test/conf/logback-dtest_with_vtable_appender_invalid.xml");
try (Cluster ignored = Cluster.build(1)
.withConfig(c -> c.with(Feature.values()))
@@ -86,7 +87,7 @@ public class VirtualTableLogsTest extends TestBaseImpl
}
finally
{
- System.clearProperty("logback.configurationFile");
+ LOGBACK_CONFIGURATION_FILE.clearValue();
}
}
diff --git a/test/distributed/org/apache/cassandra/distributed/test/hostreplacement/FailedBootstrapTest.java b/test/distributed/org/apache/cassandra/distributed/test/hostreplacement/FailedBootstrapTest.java
index 56de092844..7a8e42186a 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/hostreplacement/FailedBootstrapTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/hostreplacement/FailedBootstrapTest.java
@@ -50,6 +50,7 @@ import org.assertj.core.api.Assertions;
import org.awaitility.Awaitility;
import static net.bytebuddy.matcher.ElementMatchers.named;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SUPERUSER_SETUP_DELAY_MS;
import static org.apache.cassandra.distributed.shared.ClusterUtils.replaceHostAndStart;
import static org.apache.cassandra.distributed.shared.ClusterUtils.stopUnchecked;
import static org.apache.cassandra.distributed.test.hostreplacement.HostReplacementTest.setupCluster;
@@ -78,7 +79,7 @@ public class FailedBootstrapTest extends TestBaseImpl
stopUnchecked(nodeToRemove);
// should fail to join, but should start up!
- IInvokableInstance added = replaceHostAndStart(cluster, nodeToRemove, p -> p.setProperty("cassandra.superuser_setup_delay_ms", "1"));
+ IInvokableInstance added = replaceHostAndStart(cluster, nodeToRemove, p -> p.set(SUPERUSER_SETUP_DELAY_MS, "1"));
// log gossip for debugging
alive.forEach(i -> {
NodeToolResult result = i.nodetoolResult("gossipinfo");
diff --git a/test/distributed/org/apache/cassandra/distributed/test/jmx/JMXGetterCheckTest.java b/test/distributed/org/apache/cassandra/distributed/test/jmx/JMXGetterCheckTest.java
index ef0f1ecae0..b935e24701 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/jmx/JMXGetterCheckTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/jmx/JMXGetterCheckTest.java
@@ -42,7 +42,7 @@ import org.apache.cassandra.distributed.api.Feature;
import org.apache.cassandra.distributed.test.TestBaseImpl;
import org.apache.cassandra.utils.JMXServerUtils;
-import static org.apache.cassandra.config.CassandraRelevantProperties.IS_DISABLED_MBEAN_REGISTRATION;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION;
import static org.apache.cassandra.cql3.CQLTester.getAutomaticallyAllocatedPort;
public class JMXGetterCheckTest extends TestBaseImpl
@@ -68,7 +68,7 @@ public class JMXGetterCheckTest extends TestBaseImpl
jmxServer.start();
String url = "service:jmx:rmi:///jndi/rmi://" + jmxHost + ":" + jmxPort + "/jmxrmi";
- IS_DISABLED_MBEAN_REGISTRATION.setBoolean(false);
+ ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION.setBoolean(false);
try (Cluster cluster = Cluster.build(1).withConfig(c -> c.with(Feature.values())).start())
{
List<Named> errors = new ArrayList<>();
diff --git a/test/distributed/org/apache/cassandra/distributed/test/metric/TableMetricTest.java b/test/distributed/org/apache/cassandra/distributed/test/metric/TableMetricTest.java
index 08c9324649..a8ddfe037b 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/metric/TableMetricTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/metric/TableMetricTest.java
@@ -47,7 +47,7 @@ import org.apache.cassandra.schema.SchemaKeyspace;
import org.apache.cassandra.tracing.TraceKeyspace;
import org.apache.cassandra.utils.MBeanWrapper;
-import static org.apache.cassandra.config.CassandraRelevantProperties.IS_DISABLED_MBEAN_REGISTRATION;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION;
import static org.apache.cassandra.config.CassandraRelevantProperties.MBEAN_REGISTRATION_CLASS;
public class TableMetricTest extends TestBaseImpl
@@ -55,7 +55,7 @@ public class TableMetricTest extends TestBaseImpl
static
{
MBEAN_REGISTRATION_CLASS.setString(MapMBeanWrapper.class.getName());
- IS_DISABLED_MBEAN_REGISTRATION.setBoolean(false);
+ ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION.setBoolean(false);
}
private static volatile Map<String, Collection<String>> SYSTEM_TABLES = null;
diff --git a/test/distributed/org/apache/cassandra/distributed/test/ring/BootstrapTest.java b/test/distributed/org/apache/cassandra/distributed/test/ring/BootstrapTest.java
index 3d1c5a648e..c4245eeab8 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/ring/BootstrapTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/ring/BootstrapTest.java
@@ -49,6 +49,7 @@ import org.apache.cassandra.distributed.test.TestBaseImpl;
import org.apache.cassandra.schema.SchemaConstants;
import static java.util.Arrays.asList;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JOIN_RING;
import static org.apache.cassandra.config.CassandraRelevantProperties.RESET_BOOTSTRAP_PROGRESS;
import static org.apache.cassandra.distributed.action.GossipHelper.bootstrap;
import static org.apache.cassandra.distributed.action.GossipHelper.pullSchemaFrom;
@@ -61,7 +62,7 @@ public class BootstrapTest extends TestBaseImpl
{
private long savedMigrationDelay;
- static String originalResetBootstrapProgress = null;
+ static Boolean originalResetBootstrapProgress = null;
@Before
public void beforeTest()
@@ -75,7 +76,7 @@ public class BootstrapTest extends TestBaseImpl
savedMigrationDelay = CassandraRelevantProperties.MIGRATION_DELAY.getLong();
CassandraRelevantProperties.MIGRATION_DELAY.setLong(ManagementFactory.getRuntimeMXBean().getUptime() + savedMigrationDelay);
- originalResetBootstrapProgress = RESET_BOOTSTRAP_PROGRESS.getString();
+ originalResetBootstrapProgress = RESET_BOOTSTRAP_PROGRESS.getBoolean();
}
@After
@@ -85,7 +86,7 @@ public class BootstrapTest extends TestBaseImpl
if (originalResetBootstrapProgress == null)
RESET_BOOTSTRAP_PROGRESS.clearValue();
else
- RESET_BOOTSTRAP_PROGRESS.setString(originalResetBootstrapProgress);
+ RESET_BOOTSTRAP_PROGRESS.setBoolean(originalResetBootstrapProgress);
}
@Test
@@ -146,7 +147,7 @@ public class BootstrapTest extends TestBaseImpl
IInstanceConfig config = cluster.newInstanceConfig();
IInvokableInstance newInstance = cluster.bootstrap(config);
- withProperty("cassandra.join_ring", false, () -> newInstance.startup(cluster));
+ withProperty(JOIN_RING, false, () -> newInstance.startup(cluster));
cluster.forEach(statusToBootstrap(newInstance));
@@ -226,7 +227,7 @@ public class BootstrapTest extends TestBaseImpl
IInstanceConfig config = cluster.newInstanceConfig();
IInvokableInstance newInstance = cluster.bootstrap(config);
- withProperty("cassandra.join_ring", false,
+ withProperty(JOIN_RING, false,
() -> newInstance.startup(cluster));
cluster.forEach(statusToBootstrap(newInstance));
@@ -256,7 +257,7 @@ public class BootstrapTest extends TestBaseImpl
{
IInstanceConfig config = cluster.newInstanceConfig();
IInvokableInstance newInstance = cluster.bootstrap(config);
- withProperty("cassandra.join_ring", false,
+ withProperty(JOIN_RING, false,
() -> newInstance.startup(cluster));
cluster.forEach(statusToBootstrap(newInstance));
diff --git a/test/distributed/org/apache/cassandra/distributed/test/ring/CleanupFailureTest.java b/test/distributed/org/apache/cassandra/distributed/test/ring/CleanupFailureTest.java
index 9c8f71fde9..8ec3630983 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/ring/CleanupFailureTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/ring/CleanupFailureTest.java
@@ -28,6 +28,7 @@ import org.apache.cassandra.distributed.api.NodeToolResult;
import org.apache.cassandra.distributed.shared.NetworkTopology;
import org.apache.cassandra.distributed.test.TestBaseImpl;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JOIN_RING;
import static org.junit.Assert.assertEquals;
import static org.apache.cassandra.distributed.action.GossipHelper.statusToBootstrap;
import static org.apache.cassandra.distributed.action.GossipHelper.statusToDecommission;
@@ -86,7 +87,7 @@ public class CleanupFailureTest extends TestBaseImpl
{
IInstanceConfig config = cluster.newInstanceConfig();
IInvokableInstance bootstrappingNode = cluster.bootstrap(config);
- withProperty("cassandra.join_ring", false,
+ withProperty(JOIN_RING, false,
() -> bootstrappingNode.startup(cluster));
// Start decomission on bootstrappingNode
diff --git a/test/distributed/org/apache/cassandra/distributed/test/ring/PendingWritesTest.java b/test/distributed/org/apache/cassandra/distributed/test/ring/PendingWritesTest.java
index 2e702b219b..0e0cf7616a 100644
--- a/test/distributed/org/apache/cassandra/distributed/test/ring/PendingWritesTest.java
+++ b/test/distributed/org/apache/cassandra/distributed/test/ring/PendingWritesTest.java
@@ -41,6 +41,7 @@ import org.apache.cassandra.locator.InetAddressAndPort;
import org.apache.cassandra.service.PendingRangeCalculatorService;
import org.apache.cassandra.service.StorageService;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JOIN_RING;
import static org.apache.cassandra.distributed.action.GossipHelper.bootstrap;
import static org.apache.cassandra.distributed.action.GossipHelper.disseminateGossipState;
import static org.apache.cassandra.distributed.action.GossipHelper.statusToBootstrap;
@@ -65,8 +66,7 @@ public class PendingWritesTest extends TestBaseImpl
BootstrapTest.populate(cluster, 0, 100);
IInstanceConfig config = cluster.newInstanceConfig();
IInvokableInstance newInstance = cluster.bootstrap(config);
- withProperty("cassandra.join_ring", false,
- () -> newInstance.startup(cluster));
+ withProperty(JOIN_RING, false, () -> newInstance.startup(cluster));
cluster.forEach(statusToBootstrap(newInstance));
cluster.run(bootstrap(false, Duration.ofSeconds(60), Duration.ofSeconds(60)), newInstance.config().num());
diff --git a/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyCQLTest.java b/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyCQLTest.java
index 1df7e7c95a..ad18d9fd46 100644
--- a/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyCQLTest.java
+++ b/test/long/org/apache/cassandra/db/compaction/LongLeveledCompactionStrategyCQLTest.java
@@ -29,13 +29,13 @@ import java.util.concurrent.atomic.AtomicBoolean;
import com.google.common.util.concurrent.Uninterruptibles;
import org.junit.Test;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.cql3.CQLTester;
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.Hex;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_STRICT_LCS_CHECKS;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
public class LongLeveledCompactionStrategyCQLTest extends CQLTester
@@ -44,7 +44,7 @@ public class LongLeveledCompactionStrategyCQLTest extends CQLTester
@Test
public void stressTestCompactionStrategyManager() throws ExecutionException, InterruptedException
{
- System.setProperty(Config.PROPERTY_PREFIX + "test.strict_lcs_checks", "true");
+ TEST_STRICT_LCS_CHECKS.setBoolean(true);
// flush/compact tons of sstables, invalidate token metadata in a loop to make CSM reload the strategies
createTable("create table %s (id int primary key, i text) with compaction = {'class':'LeveledCompactionStrategy', 'sstable_size_in_mb':1}");
ExecutorService es = Executors.newSingleThreadExecutor();
diff --git a/test/simulator/asm/org/apache/cassandra/simulator/asm/InterceptAgent.java b/test/simulator/asm/org/apache/cassandra/simulator/asm/InterceptAgent.java
index ffa9b180e5..c4beaf9c2b 100644
--- a/test/simulator/asm/org/apache/cassandra/simulator/asm/InterceptAgent.java
+++ b/test/simulator/asm/org/apache/cassandra/simulator/asm/InterceptAgent.java
@@ -54,6 +54,8 @@ import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL;
import static org.objectweb.asm.Opcodes.IRETURN;
import static org.objectweb.asm.Opcodes.RETURN;
+// checkstyle: suppress below 'blockSystemPropertyUsage'
+
/**
* A mechanism for weaving classes loaded by the bootstrap classloader that we cannot override.
* The design supports weaving of the internals of these classes, and in future we may want to
diff --git a/test/simulator/asm/org/apache/cassandra/simulator/asm/MethodLogger.java b/test/simulator/asm/org/apache/cassandra/simulator/asm/MethodLogger.java
index 1e6a844772..7e6a6891f4 100644
--- a/test/simulator/asm/org/apache/cassandra/simulator/asm/MethodLogger.java
+++ b/test/simulator/asm/org/apache/cassandra/simulator/asm/MethodLogger.java
@@ -37,6 +37,8 @@ import static java.util.Arrays.stream;
import static org.apache.cassandra.simulator.asm.MethodLogger.Level.NONE;
import static org.apache.cassandra.simulator.asm.MethodLogger.Level.valueOf;
+// checkstyle: suppress below 'blockSystemPropertyUsage'
+
// TODO (config): support logging only for packages/classes matching a pattern
interface MethodLogger
{
diff --git a/test/simulator/main/org/apache/cassandra/simulator/ActionSchedule.java b/test/simulator/main/org/apache/cassandra/simulator/ActionSchedule.java
index 18fc877824..6119e4706f 100644
--- a/test/simulator/main/org/apache/cassandra/simulator/ActionSchedule.java
+++ b/test/simulator/main/org/apache/cassandra/simulator/ActionSchedule.java
@@ -43,6 +43,7 @@ import org.apache.cassandra.simulator.utils.SafeCollections;
import org.apache.cassandra.utils.CloseableIterator;
import org.apache.cassandra.utils.Throwables;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_SIMULATOR_DEBUG;
import static org.apache.cassandra.simulator.Action.Modifier.DAEMON;
import static org.apache.cassandra.simulator.Action.Modifier.STREAM;
import static org.apache.cassandra.simulator.Action.Phase.CONSEQUENCE;
@@ -300,7 +301,7 @@ public class ActionSchedule implements CloseableIterator<Object>, LongConsumer
}
else
{
- logger.error("Simulation failed to make progress. Run with -Dcassandra.test.simulator.debug=true to see the blocked task graph. Blocked tasks:");
+ logger.error("Simulation failed to make progress. Run with -D{}=true to see the blocked task graph. Blocked tasks:", TEST_SIMULATOR_DEBUG.getKey());
actions = sequences.values()
.stream()
.filter(s -> s.on instanceof OrderOnId)
diff --git a/test/simulator/main/org/apache/cassandra/simulator/SimulationRunner.java b/test/simulator/main/org/apache/cassandra/simulator/SimulationRunner.java
index 6f1eb12f30..32888f4a11 100644
--- a/test/simulator/main/org/apache/cassandra/simulator/SimulationRunner.java
+++ b/test/simulator/main/org/apache/cassandra/simulator/SimulationRunner.java
@@ -54,18 +54,21 @@ import org.apache.cassandra.utils.concurrent.UncheckedInterruptedException;
import static java.util.Arrays.stream;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_ALTER_RF_DURING_RANGE_MOVEMENT;
import static org.apache.cassandra.config.CassandraRelevantProperties.BATCH_COMMIT_LOG_SYNC_INTERVAL;
import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_JMX_REMOTE_PORT;
import static org.apache.cassandra.config.CassandraRelevantProperties.CLOCK_GLOBAL;
import static org.apache.cassandra.config.CassandraRelevantProperties.CLOCK_MONOTONIC_APPROX;
import static org.apache.cassandra.config.CassandraRelevantProperties.CLOCK_MONOTONIC_PRECISE;
-import static org.apache.cassandra.config.CassandraRelevantProperties.DETERMINISM_CONSISTENT_DIRECTORY_LISTINGS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CONSISTENT_DIRECTORY_LISTINGS;
import static org.apache.cassandra.config.CassandraRelevantProperties.DETERMINISM_UNSAFE_UUID_NODE;
import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_SSTABLE_ACTIVITY_TRACKING;
import static org.apache.cassandra.config.CassandraRelevantProperties.DETERMINISM_SSTABLE_COMPRESSION_DEFAULT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DTEST_API_LOG_TOPOLOGY;
import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIPER_SKIP_WAITING_TO_SETTLE;
import static org.apache.cassandra.config.CassandraRelevantProperties.IGNORE_MISSING_NATIVE_FILE_HINTS;
-import static org.apache.cassandra.config.CassandraRelevantProperties.IS_DISABLED_MBEAN_REGISTRATION;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION;
+import static org.apache.cassandra.config.CassandraRelevantProperties.LIBJEMALLOC;
import static org.apache.cassandra.config.CassandraRelevantProperties.MEMTABLE_OVERHEAD_SIZE;
import static org.apache.cassandra.config.CassandraRelevantProperties.MIGRATION_DELAY;
import static org.apache.cassandra.config.CassandraRelevantProperties.PAXOS_REPAIR_RETRY_TIMEOUT_IN_MS;
@@ -99,12 +102,12 @@ public class SimulationRunner
try { Clock.Global.nanoTime(); } catch (IllegalStateException e) {} // make sure static initializer gets called
// TODO (cleanup): disable unnecessary things like compaction logger threads etc
- System.setProperty("cassandra.libjemalloc", "-");
- System.setProperty("cassandra.dtest.api.log.topology", "false");
+ LIBJEMALLOC.setString("-");
+ DTEST_API_LOG_TOPOLOGY.setBoolean(false);
// this property is used to allow non-members of the ring to exist in gossip without breaking RF changes
// it would be nice not to rely on this, but hopefully we'll have consistent range movements before it matters
- System.setProperty("cassandra.allow_alter_rf_during_range_movement", "true");
+ ALLOW_ALTER_RF_DURING_RANGE_MOVEMENT.setBoolean(true);
for (CassandraRelevantProperties property : Arrays.asList(CLOCK_GLOBAL, CLOCK_MONOTONIC_APPROX, CLOCK_MONOTONIC_PRECISE))
property.setString("org.apache.cassandra.simulator.systems.SimulatedTime$Global");
@@ -118,14 +121,14 @@ public class SimulationRunner
BATCH_COMMIT_LOG_SYNC_INTERVAL.setInt(-1);
DISABLE_SSTABLE_ACTIVITY_TRACKING.setBoolean(false);
DETERMINISM_SSTABLE_COMPRESSION_DEFAULT.setBoolean(false); // compression causes variation in file size for e.g. UUIDs, IP addresses, random file paths
- DETERMINISM_CONSISTENT_DIRECTORY_LISTINGS.setBoolean(true);
+ CONSISTENT_DIRECTORY_LISTINGS.setBoolean(true);
TEST_IGNORE_SIGAR.setBoolean(true);
SYSTEM_AUTH_DEFAULT_RF.setInt(3);
MIGRATION_DELAY.setInt(Integer.MAX_VALUE);
DISABLE_GOSSIP_ENDPOINT_REMOVAL.setBoolean(true);
MEMTABLE_OVERHEAD_SIZE.setInt(100);
IGNORE_MISSING_NATIVE_FILE_HINTS.setBoolean(true);
- IS_DISABLED_MBEAN_REGISTRATION.setBoolean(true);
+ ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION.setBoolean(true);
TEST_JVM_DTEST_DISABLE_SSL.setBoolean(true); // to support easily running without netty from dtest-jar
if (Thread.currentThread() instanceof InterceptibleThread); // load InterceptibleThread class to avoid infinite loop in InterceptorOfGlobalMethods
diff --git a/test/simulator/main/org/apache/cassandra/simulator/paxos/PaxosSimulation.java b/test/simulator/main/org/apache/cassandra/simulator/paxos/PaxosSimulation.java
index d54cc36851..a6fbc44465 100644
--- a/test/simulator/main/org/apache/cassandra/simulator/paxos/PaxosSimulation.java
+++ b/test/simulator/main/org/apache/cassandra/simulator/paxos/PaxosSimulation.java
@@ -26,17 +26,14 @@ import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.BiConsumer;
import java.util.function.LongSupplier;
-
import javax.annotation.Nullable;
import com.google.common.base.Throwables;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.ExecutorFactory;
import org.apache.cassandra.concurrent.ScheduledExecutorPlus;
-import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.distributed.Cluster;
import org.apache.cassandra.distributed.api.ConsistencyLevel;
import org.apache.cassandra.distributed.api.IInvokableInstance;
@@ -55,8 +52,9 @@ import org.apache.cassandra.utils.CloseableIterator;
import org.apache.cassandra.utils.concurrent.Threads;
import org.apache.cassandra.utils.concurrent.UncheckedInterruptedException;
-import static org.apache.cassandra.simulator.Action.Modifiers.NONE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_SIMULATOR_LIVENESS_CHECK;
import static org.apache.cassandra.simulator.Action.Modifiers.DISPLAY_ORIGIN;
+import static org.apache.cassandra.simulator.Action.Modifiers.NONE;
import static org.apache.cassandra.simulator.SimulatorUtils.failWithOOM;
import static org.apache.cassandra.simulator.paxos.HistoryChecker.causedBy;
@@ -133,7 +131,7 @@ public abstract class PaxosSimulation implements Simulation, ClusterActionListen
AtomicLong counter = new AtomicLong();
ScheduledExecutorPlus livenessChecker = null;
ScheduledFuture<?> liveness = null;
- if (CassandraRelevantProperties.TEST_SIMULATOR_LIVENESS_CHECK.getBoolean())
+ if (TEST_SIMULATOR_LIVENESS_CHECK.getBoolean())
{
livenessChecker = ExecutorFactory.Global.executorFactory().scheduled("SimulationLiveness");
liveness = livenessChecker.scheduleWithFixedDelay(new Runnable()
@@ -170,7 +168,7 @@ public abstract class PaxosSimulation implements Simulation, ClusterActionListen
long cur = counter.get();
if (cur == prev)
{
- logger.error("Simulation appears to have stalled; terminating. To disable set -Dcassandra.test.simulator.livenesscheck=false");
+ logger.error("Simulation appears to have stalled; terminating. To disable set -D{}=false", TEST_SIMULATOR_LIVENESS_CHECK.getKey());
shutdown.set(1);
throw failWithOOM();
}
diff --git a/test/unit/org/apache/cassandra/AbstractSerializationsTester.java b/test/unit/org/apache/cassandra/AbstractSerializationsTester.java
index d79521b196..ebb74a7989 100644
--- a/test/unit/org/apache/cassandra/AbstractSerializationsTester.java
+++ b/test/unit/org/apache/cassandra/AbstractSerializationsTester.java
@@ -27,16 +27,19 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_VERSION;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_SERIALIZATION_WRITES;
+
public class AbstractSerializationsTester
{
- protected static final String CUR_VER = System.getProperty("cassandra.version", "4.0");
+ protected static final String CUR_VER = CASSANDRA_VERSION.getString("4.0");
protected static final Map<String, Integer> VERSION_MAP = new HashMap<String, Integer> ()
{{
put("3.0", MessagingService.VERSION_30);
put("4.0", MessagingService.VERSION_40);
}};
- protected static final boolean EXECUTE_WRITES = Boolean.getBoolean("cassandra.test-serialization-writes");
+ protected static final boolean EXECUTE_WRITES = TEST_SERIALIZATION_WRITES.getBoolean();
protected static int getVersion()
{
diff --git a/test/unit/org/apache/cassandra/CassandraBriefJUnitResultFormatter.java b/test/unit/org/apache/cassandra/CassandraBriefJUnitResultFormatter.java
index 2befb5c631..dc9b8f86b1 100644
--- a/test/unit/org/apache/cassandra/CassandraBriefJUnitResultFormatter.java
+++ b/test/unit/org/apache/cassandra/CassandraBriefJUnitResultFormatter.java
@@ -36,6 +36,9 @@ import org.apache.tools.ant.taskdefs.optional.junit.JUnitVersionHelper;
import org.apache.tools.ant.util.FileUtils;
import org.apache.tools.ant.util.StringUtils;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_CASSANDRA_KEEPBRIEFBRIEF;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_CASSANDRA_TESTTAG;
+
/**
* Prints plain text output of the test to a specified Writer.
* Inspired by the PlainJUnitResultFormatter.
@@ -47,9 +50,9 @@ public class CassandraBriefJUnitResultFormatter implements JUnitResultFormatter,
private static final double ONE_SECOND = 1000.0;
- private static final String tag = System.getProperty("cassandra.testtag", "");
+ private static final String tag = TEST_CASSANDRA_TESTTAG.getString();
- private static final Boolean keepBriefBrief = Boolean.getBoolean("cassandra.keepBriefBrief");
+ private static final Boolean keepBriefBrief = TEST_CASSANDRA_KEEPBRIEFBRIEF.getBoolean();
/**
* Where to write the log to.
diff --git a/test/unit/org/apache/cassandra/CassandraXMLJUnitResultFormatter.java b/test/unit/org/apache/cassandra/CassandraXMLJUnitResultFormatter.java
index de8fb4e5d5..6f821c3d50 100644
--- a/test/unit/org/apache/cassandra/CassandraXMLJUnitResultFormatter.java
+++ b/test/unit/org/apache/cassandra/CassandraXMLJUnitResultFormatter.java
@@ -50,6 +50,9 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_CASSANDRA_SUITENAME;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_CASSANDRA_TESTTAG;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SUN_JAVA_COMMAND;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
/**
@@ -73,7 +76,7 @@ public class CassandraXMLJUnitResultFormatter implements JUnitResultFormatter, X
}
}
- private static final String tag = System.getProperty("cassandra.testtag", "");
+ private static final String tag = TEST_CASSANDRA_TESTTAG.getString();
/*
* Set the property for the test suite name so that log configuration can pick it up
@@ -81,9 +84,9 @@ public class CassandraXMLJUnitResultFormatter implements JUnitResultFormatter, X
*/
static
{
- String command = System.getProperty("sun.java.command");
+ String command = SUN_JAVA_COMMAND.getString();
String args[] = command.split(" ");
- System.setProperty("suitename", args[1]);
+ TEST_CASSANDRA_SUITENAME.setString(args[1]);
}
/**
diff --git a/test/unit/org/apache/cassandra/LogbackStatusListener.java b/test/unit/org/apache/cassandra/LogbackStatusListener.java
index 719fada242..834d51fca2 100644
--- a/test/unit/org/apache/cassandra/LogbackStatusListener.java
+++ b/test/unit/org/apache/cassandra/LogbackStatusListener.java
@@ -33,8 +33,12 @@ import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.spi.LoggerContextListener;
import ch.qos.logback.core.status.Status;
import ch.qos.logback.core.status.StatusListener;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.distributed.shared.InstanceClassLoader;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SUN_STDERR_ENCODING;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SUN_STDOUT_ENCODING;
+
/*
* Listen for logback readiness and then redirect stdout/stderr to logback
*/
@@ -84,9 +88,9 @@ public class LogbackStatusListener implements StatusListener, LoggerContextListe
}
}
- private static PrintStream wrapLogger(Logger logger, PrintStream original, String encodingProperty, boolean error) throws Exception
+ private static PrintStream wrapLogger(Logger logger, PrintStream original, CassandraRelevantProperties encodingProperty, boolean error) throws Exception
{
- final String encoding = System.getProperty(encodingProperty);
+ final String encoding = encodingProperty.getString();
OutputStream os = new ToLoggerOutputStream(logger, encoding, error);
return encoding != null ? new WrappedPrintStream(os, true, encoding, original)
: new WrappedPrintStream(os, true, original);
@@ -475,9 +479,9 @@ public class LogbackStatusListener implements StatusListener, LoggerContextListe
Logger stdoutLogger = LoggerFactory.getLogger("stdout");
Logger stderrLogger = LoggerFactory.getLogger("stderr");
- replacementOut = wrapLogger(stdoutLogger, originalOut, "sun.stdout.encoding", false);
+ replacementOut = wrapLogger(stdoutLogger, originalOut, SUN_STDOUT_ENCODING, false);
System.setOut(replacementOut);
- replacementErr = wrapLogger(stderrLogger, originalErr, "sun.stderr.encoding", true);
+ replacementErr = wrapLogger(stderrLogger, originalErr, SUN_STDERR_ENCODING, true);
System.setErr(replacementErr);
}
catch (Exception e)
diff --git a/test/unit/org/apache/cassandra/SchemaLoader.java b/test/unit/org/apache/cassandra/SchemaLoader.java
index 15d2fb7d2a..f0178d1a2e 100644
--- a/test/unit/org/apache/cassandra/SchemaLoader.java
+++ b/test/unit/org/apache/cassandra/SchemaLoader.java
@@ -50,6 +50,9 @@ import org.apache.cassandra.utils.FBUtilities;
import org.junit.After;
import org.junit.BeforeClass;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_UNSAFE_JOIN;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_COMPRESSION;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_COMPRESSION_ALGO;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
public class SchemaLoader
@@ -82,7 +85,7 @@ public class SchemaLoader
public static void startGossiper()
{
// skip shadow round and endpoint collision check in tests
- System.setProperty("cassandra.allow_unsafe_join", "true");
+ ALLOW_UNSAFE_JOIN.setBoolean(true);
if (!Gossiper.instance.isEnabled())
Gossiper.instance.start((int) (currentTimeMillis() / 1000));
}
@@ -249,7 +252,7 @@ public class SchemaLoader
for (KeyspaceMetadata ksm : schema)
SchemaTestUtil.announceNewKeyspace(ksm);
- if (Boolean.parseBoolean(System.getProperty("cassandra.test.compression", "false")))
+ if (TEST_COMPRESSION.getBoolean())
useCompression(schema, compressionParams(CompressionParams.DEFAULT_CHUNK_LENGTH));
}
@@ -725,7 +728,7 @@ public static TableMetadata.Builder clusteringSASICFMD(String ksName, String cfN
public static CompressionParams getCompressionParameters(Integer chunkSize)
{
- if (Boolean.parseBoolean(System.getProperty("cassandra.test.compression", "false")))
+ if (TEST_COMPRESSION.getBoolean())
return chunkSize != null ? compressionParams(chunkSize) : compressionParams(CompressionParams.DEFAULT_CHUNK_LENGTH);
return CompressionParams.noCompression();
@@ -759,7 +762,7 @@ public static TableMetadata.Builder clusteringSASICFMD(String ksName, String cfN
private static CompressionParams compressionParams(int chunkLength)
{
- String algo = System.getProperty("cassandra.test.compression.algo", "lz4").toLowerCase();
+ String algo = TEST_COMPRESSION_ALGO.getString().toLowerCase();
switch (algo)
{
case "deflate":
diff --git a/test/unit/org/apache/cassandra/audit/AuditLoggerAuthTest.java b/test/unit/org/apache/cassandra/audit/AuditLoggerAuthTest.java
index 9a3c605f8e..0ced5a10e7 100644
--- a/test/unit/org/apache/cassandra/audit/AuditLoggerAuthTest.java
+++ b/test/unit/org/apache/cassandra/audit/AuditLoggerAuthTest.java
@@ -42,6 +42,7 @@ import org.apache.cassandra.locator.InetAddressAndPort;
import org.apache.cassandra.service.EmbeddedCassandraService;
import org.hamcrest.CoreMatchers;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SUPERUSER_SETUP_DELAY_MS;
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
@@ -75,7 +76,7 @@ public class AuditLoggerAuthTest
config.audit_logging_options.logger = new ParameterizedClass("InMemoryAuditLogger", null);
});
- System.setProperty("cassandra.superuser_setup_delay_ms", "0");
+ SUPERUSER_SETUP_DELAY_MS.setLong(0);
embedded = ServerTestUtils.startEmbeddedCassandraService();
executeWithCredentials(
diff --git a/test/unit/org/apache/cassandra/audit/AuditLoggerCleanupTest.java b/test/unit/org/apache/cassandra/audit/AuditLoggerCleanupTest.java
index 891827cd3e..ebc5ead713 100644
--- a/test/unit/org/apache/cassandra/audit/AuditLoggerCleanupTest.java
+++ b/test/unit/org/apache/cassandra/audit/AuditLoggerCleanupTest.java
@@ -41,6 +41,7 @@ import org.apache.cassandra.service.EmbeddedCassandraService;
import org.apache.cassandra.service.StorageService;
import static java.nio.file.Files.list;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SUPERUSER_SETUP_DELAY_MS;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -69,7 +70,8 @@ public class AuditLoggerCleanupTest
emptyCq4File = Files.createFile(auditLogDirRoot.toPath().resolve("20220928-12" + SingleChronicleQueue.SUFFIX)).toFile();
emptyMetadataFile = Files.createFile(auditLogDirRoot.toPath().resolve("metadata" + SingleTableStore.SUFFIX)).toFile();
- System.setProperty("cassandra.superuser_setup_delay_ms", "0");
+ SUPERUSER_SETUP_DELAY_MS.setLong(0);
+
embedded = new EmbeddedCassandraService();
embedded.start();
}
diff --git a/test/unit/org/apache/cassandra/auth/AuthCacheTest.java b/test/unit/org/apache/cassandra/auth/AuthCacheTest.java
index 0e2234685e..50a0a9c0fc 100644
--- a/test/unit/org/apache/cassandra/auth/AuthCacheTest.java
+++ b/test/unit/org/apache/cassandra/auth/AuthCacheTest.java
@@ -33,6 +33,8 @@ import org.junit.Test;
import org.apache.cassandra.db.ConsistencyLevel;
import org.apache.cassandra.exceptions.UnavailableException;
+import static org.apache.cassandra.config.CassandraRelevantProperties.AUTH_CACHE_WARMING_MAX_RETRIES;
+import static org.apache.cassandra.config.CassandraRelevantProperties.AUTH_CACHE_WARMING_RETRY_INTERVAL_MS;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -264,8 +266,8 @@ public class AuthCacheTest
@Test
public void handleProviderErrorDuringWarming()
{
- System.setProperty(AuthCache.CACHE_LOAD_RETRIES_PROPERTY, "3");
- System.setProperty(AuthCache.CACHE_LOAD_RETRY_INTERVAL_PROPERTY, "0");
+ AUTH_CACHE_WARMING_MAX_RETRIES.setInt(3);
+ AUTH_CACHE_WARMING_RETRY_INTERVAL_MS.setLong(0);
final AtomicInteger attempts = new AtomicInteger(0);
Supplier<Map<String, Integer>> bulkLoader = () -> {
diff --git a/test/unit/org/apache/cassandra/auth/PasswordAuthenticatorTest.java b/test/unit/org/apache/cassandra/auth/PasswordAuthenticatorTest.java
index e1033ff9ab..3349c8c33a 100644
--- a/test/unit/org/apache/cassandra/auth/PasswordAuthenticatorTest.java
+++ b/test/unit/org/apache/cassandra/auth/PasswordAuthenticatorTest.java
@@ -45,14 +45,13 @@ import static org.apache.cassandra.auth.CassandraRoleManager.DEFAULT_SUPERUSER_P
import static org.apache.cassandra.auth.CassandraRoleManager.getGensaltLogRounds;
import static org.apache.cassandra.auth.PasswordAuthenticator.SaslNegotiator;
import static org.apache.cassandra.auth.PasswordAuthenticator.checkpw;
+import static org.apache.cassandra.config.CassandraRelevantProperties.AUTH_BCRYPT_GENSALT_LOG2_ROUNDS;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mindrot.jbcrypt.BCrypt.gensalt;
import static org.mindrot.jbcrypt.BCrypt.hashpw;
-import static org.apache.cassandra.auth.CassandraRoleManager.GENSALT_LOG2_ROUNDS_PROPERTY;
-
public class PasswordAuthenticatorTest extends CQLTester
{
private final static PasswordAuthenticator authenticator = new PasswordAuthenticator();
@@ -119,19 +118,18 @@ public class PasswordAuthenticatorTest extends CQLTester
private void executeSaltRoundsPropertyTest(Integer rounds)
{
- String oldProperty = System.getProperty(GENSALT_LOG2_ROUNDS_PROPERTY);
+ Integer oldProperty = AUTH_BCRYPT_GENSALT_LOG2_ROUNDS.setInt(rounds);
try
{
- System.setProperty(GENSALT_LOG2_ROUNDS_PROPERTY, rounds.toString());
getGensaltLogRounds();
- Assert.fail("Property " + GENSALT_LOG2_ROUNDS_PROPERTY + " must be in interval [4,30]");
+ Assert.fail("Property " + AUTH_BCRYPT_GENSALT_LOG2_ROUNDS.getKey() + " must be in interval [4,30]");
}
finally
{
if (oldProperty != null)
- System.setProperty(GENSALT_LOG2_ROUNDS_PROPERTY, oldProperty);
+ AUTH_BCRYPT_GENSALT_LOG2_ROUNDS.setInt(oldProperty);
else
- System.clearProperty(GENSALT_LOG2_ROUNDS_PROPERTY);
+ AUTH_BCRYPT_GENSALT_LOG2_ROUNDS.clearValue();
}
}
diff --git a/test/unit/org/apache/cassandra/auth/jmx/JMXAuthTest.java b/test/unit/org/apache/cassandra/auth/jmx/JMXAuthTest.java
index 3bc28a9e30..fece405f5f 100644
--- a/test/unit/org/apache/cassandra/auth/jmx/JMXAuthTest.java
+++ b/test/unit/org/apache/cassandra/auth/jmx/JMXAuthTest.java
@@ -43,6 +43,10 @@ import org.apache.cassandra.cql3.CQLTester;
import org.apache.cassandra.db.ColumnFamilyStoreMBean;
import org.apache.cassandra.utils.JMXServerUtils;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_JMX_AUTHORIZER;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_JMX_REMOTE_LOGIN_CONFIG;
+import static org.apache.cassandra.config.CassandraRelevantProperties.COM_SUN_MANAGEMENT_JMXREMOTE_AUTHENTICATE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.JAVA_SECURITY_AUTH_LOGIN_CONFIG;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
@@ -86,10 +90,10 @@ public class JMXAuthTest extends CQLTester
private static void setupJMXServer() throws Exception
{
String config = Paths.get(ClassLoader.getSystemResource("auth/cassandra-test-jaas.conf").toURI()).toString();
- System.setProperty("com.sun.management.jmxremote.authenticate", "true");
- System.setProperty("java.security.auth.login.config", config);
- System.setProperty("cassandra.jmx.remote.login.config", "TestLogin");
- System.setProperty("cassandra.jmx.authorizer", NoSuperUserAuthorizationProxy.class.getName());
+ COM_SUN_MANAGEMENT_JMXREMOTE_AUTHENTICATE.setBoolean(true);
+ JAVA_SECURITY_AUTH_LOGIN_CONFIG.setString(config);
+ CASSANDRA_JMX_REMOTE_LOGIN_CONFIG.setString("TestLogin");
+ CASSANDRA_JMX_AUTHORIZER.setString(NoSuperUserAuthorizationProxy.class.getName());
jmxServer = JMXServerUtils.createJMXServer(9999, "localhost", true);
jmxServer.start();
diff --git a/test/unit/org/apache/cassandra/config/CassandraRelevantPropertiesTest.java b/test/unit/org/apache/cassandra/config/CassandraRelevantPropertiesTest.java
index de6e0d21f2..ee8d2cb632 100644
--- a/test/unit/org/apache/cassandra/config/CassandraRelevantPropertiesTest.java
+++ b/test/unit/org/apache/cassandra/config/CassandraRelevantPropertiesTest.java
@@ -18,26 +18,50 @@
package org.apache.cassandra.config;
+import org.junit.Before;
import org.junit.Test;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.assertj.core.api.Assertions;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_CASSANDRA_RELEVANT_PROPERTIES;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+// checkstyle: suppress below 'blockSystemPropertyUsage'
+
public class CassandraRelevantPropertiesTest
{
- private static final CassandraRelevantProperties TEST_PROP = CassandraRelevantProperties.ORG_APACHE_CASSANDRA_CONF_CASSANDRA_RELEVANT_PROPERTIES_TEST;
+ @Before
+ public void setup()
+ {
+ System.clearProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey());
+ }
+
+ @Test
+ public void testSystemPropertyisSet() {
+ try
+ {
+ TEST_CASSANDRA_RELEVANT_PROPERTIES.setString("test");
+ Assertions.assertThat(System.getProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey())).isEqualTo("test"); // checkstyle: suppress nearby 'blockSystemPropertyUsage'
+ }
+ finally
+ {
+ TEST_CASSANDRA_RELEVANT_PROPERTIES.clearValue();
+ }
+ }
@Test
public void testString()
{
try
{
- System.setProperty(TEST_PROP.getKey(), "some-string");
- Assertions.assertThat(TEST_PROP.getString()).isEqualTo("some-string");
+ System.setProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey(), "some-string");
+ Assertions.assertThat(TEST_CASSANDRA_RELEVANT_PROPERTIES.getString()).isEqualTo("some-string");
}
finally
{
- System.clearProperty(TEST_PROP.getKey());
+ System.clearProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey());
}
}
@@ -46,18 +70,18 @@ public class CassandraRelevantPropertiesTest
{
try
{
- System.setProperty(TEST_PROP.getKey(), "true");
- Assertions.assertThat(TEST_PROP.getBoolean()).isEqualTo(true);
- System.setProperty(TEST_PROP.getKey(), "false");
- Assertions.assertThat(TEST_PROP.getBoolean()).isEqualTo(false);
- System.setProperty(TEST_PROP.getKey(), "junk");
- Assertions.assertThat(TEST_PROP.getBoolean()).isEqualTo(false);
- System.setProperty(TEST_PROP.getKey(), "");
- Assertions.assertThat(TEST_PROP.getBoolean()).isEqualTo(false);
+ System.setProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey(), "true");
+ Assertions.assertThat(TEST_CASSANDRA_RELEVANT_PROPERTIES.getBoolean()).isEqualTo(true);
+ System.setProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey(), "false");
+ Assertions.assertThat(TEST_CASSANDRA_RELEVANT_PROPERTIES.getBoolean()).isEqualTo(false);
+ System.setProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey(), "junk");
+ Assertions.assertThat(TEST_CASSANDRA_RELEVANT_PROPERTIES.getBoolean()).isEqualTo(false);
+ System.setProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey(), "");
+ Assertions.assertThat(TEST_CASSANDRA_RELEVANT_PROPERTIES.getBoolean()).isEqualTo(false);
}
finally
{
- System.clearProperty(TEST_PROP.getKey());
+ System.clearProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey());
}
}
@@ -66,11 +90,11 @@ public class CassandraRelevantPropertiesTest
{
try
{
- TEST_PROP.getBoolean();
+ TEST_CASSANDRA_RELEVANT_PROPERTIES.getBoolean();
}
finally
{
- System.clearProperty(TEST_PROP.getKey());
+ System.clearProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey());
}
}
@@ -79,12 +103,12 @@ public class CassandraRelevantPropertiesTest
{
try
{
- System.setProperty(TEST_PROP.getKey(), "123456789");
- Assertions.assertThat(TEST_PROP.getInt()).isEqualTo(123456789);
+ System.setProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey(), "123456789");
+ Assertions.assertThat(TEST_CASSANDRA_RELEVANT_PROPERTIES.getInt()).isEqualTo(123456789);
}
finally
{
- System.clearProperty(TEST_PROP.getKey());
+ System.clearProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey());
}
}
@@ -93,12 +117,12 @@ public class CassandraRelevantPropertiesTest
{
try
{
- System.setProperty(TEST_PROP.getKey(), "0x1234567a");
- Assertions.assertThat(TEST_PROP.getInt()).isEqualTo(305419898);
+ System.setProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey(), "0x1234567a");
+ Assertions.assertThat(TEST_CASSANDRA_RELEVANT_PROPERTIES.getInt()).isEqualTo(305419898);
}
finally
{
- System.clearProperty(TEST_PROP.getKey());
+ System.clearProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey());
}
}
@@ -107,12 +131,12 @@ public class CassandraRelevantPropertiesTest
{
try
{
- System.setProperty(TEST_PROP.getKey(), "01234567");
- Assertions.assertThat(TEST_PROP.getInt()).isEqualTo(342391);
+ System.setProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey(), "01234567");
+ Assertions.assertThat(TEST_CASSANDRA_RELEVANT_PROPERTIES.getInt()).isEqualTo(342391);
}
finally
{
- System.clearProperty(TEST_PROP.getKey());
+ System.clearProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey());
}
}
@@ -121,25 +145,35 @@ public class CassandraRelevantPropertiesTest
{
try
{
- System.setProperty(TEST_PROP.getKey(), "");
- Assertions.assertThat(TEST_PROP.getInt()).isEqualTo(342391);
+ System.setProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey(), "");
+ Assertions.assertThat(TEST_CASSANDRA_RELEVANT_PROPERTIES.getInt()).isEqualTo(342391);
}
finally
{
- System.clearProperty(TEST_PROP.getKey());
+ System.clearProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey());
}
}
- @Test(expected = NullPointerException.class)
+ @Test(expected = ConfigurationException.class)
public void testInteger_null()
{
try
{
- TEST_PROP.getInt();
+ TEST_CASSANDRA_RELEVANT_PROPERTIES.getInt();
}
finally
{
- System.clearProperty(TEST_PROP.getKey());
+ System.clearProperty(TEST_CASSANDRA_RELEVANT_PROPERTIES.getKey());
}
}
+
+ @Test
+ public void testClearProperty()
+ {
+ assertNull(TEST_CASSANDRA_RELEVANT_PROPERTIES.getString());
+ TEST_CASSANDRA_RELEVANT_PROPERTIES.setString("test");
+ assertEquals("test", TEST_CASSANDRA_RELEVANT_PROPERTIES.getString());
+ TEST_CASSANDRA_RELEVANT_PROPERTIES.clearValue();
+ assertNull(TEST_CASSANDRA_RELEVANT_PROPERTIES.getString());
+ }
}
diff --git a/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java b/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
index d4a6feb689..e4a44452e6 100644
--- a/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
+++ b/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
@@ -37,6 +37,9 @@ import org.apache.cassandra.db.Keyspace;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.assertj.core.api.Assertions;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_UNLIMITED_CONCURRENT_VALIDATIONS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CONFIG_LOADER;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PARTITIONER;
import static org.apache.cassandra.config.DataStorageSpec.DataStorageUnit.KIBIBYTES;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -63,7 +66,7 @@ public class DatabaseDescriptorTest
// Now try custom loader
ConfigurationLoader testLoader = new TestLoader();
- System.setProperty("cassandra.config.loader", testLoader.getClass().getName());
+ CONFIG_LOADER.setString(testLoader.getClass().getName());
config = DatabaseDescriptor.loadConfig();
assertEquals("ConfigurationLoader Test", config.cluster_name);
@@ -233,11 +236,9 @@ public class DatabaseDescriptorTest
@Test
public void testInvalidPartitionPropertyOverride() throws Exception
{
- String key = Config.PROPERTY_PREFIX + "partitioner";
- String previous = System.getProperty(key);
+ String previous = PARTITIONER.setString("ThisDoesNotExist");
try
{
- System.setProperty(key, "ThisDoesNotExist");
Config testConfig = DatabaseDescriptor.loadConfig();
testConfig.partitioner = "Murmur3Partitioner";
@@ -259,13 +260,9 @@ public class DatabaseDescriptorTest
finally
{
if (previous == null)
- {
- System.getProperties().remove(key);
- }
+ PARTITIONER.clearValue();
else
- {
- System.setProperty(key, previous);
- }
+ PARTITIONER.setString(previous);
}
}
@@ -504,7 +501,7 @@ public class DatabaseDescriptorTest
catch (ConfigurationException e)
{
assertThat(e.getMessage()).isEqualTo("To set concurrent_validations > concurrent_compactors, " +
- "set the system property cassandra.allow_unlimited_concurrent_validations=true");
+ "set the system property -D" + ALLOW_UNLIMITED_CONCURRENT_VALIDATIONS.getKey() + "=true");
}
// unless we disable that check (done with a system property at startup or via JMX)
diff --git a/test/unit/org/apache/cassandra/config/LoadOldYAMLBackwardCompatibilityTest.java b/test/unit/org/apache/cassandra/config/LoadOldYAMLBackwardCompatibilityTest.java
index e0ce161fed..8554ed4b20 100644
--- a/test/unit/org/apache/cassandra/config/LoadOldYAMLBackwardCompatibilityTest.java
+++ b/test/unit/org/apache/cassandra/config/LoadOldYAMLBackwardCompatibilityTest.java
@@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;
import org.junit.BeforeClass;
import org.junit.Test;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
@@ -33,7 +34,7 @@ public class LoadOldYAMLBackwardCompatibilityTest
@BeforeClass
public static void setupDatabaseDescriptor()
{
- System.setProperty("cassandra.config", "cassandra-old.yaml");
+ CASSANDRA_CONFIG.setString("cassandra-old.yaml");
DatabaseDescriptor.daemonInitialization();
}
diff --git a/test/unit/org/apache/cassandra/config/OverrideConfigurationLoader.java b/test/unit/org/apache/cassandra/config/OverrideConfigurationLoader.java
index 2ffe91b439..7a8b14ecbd 100644
--- a/test/unit/org/apache/cassandra/config/OverrideConfigurationLoader.java
+++ b/test/unit/org/apache/cassandra/config/OverrideConfigurationLoader.java
@@ -22,6 +22,8 @@ import java.util.function.Consumer;
import org.apache.cassandra.exceptions.ConfigurationException;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CONFIG_LOADER;
+
/**
* Helper class for programmatically overriding individual config values before DatabaseDescriptor is bootstrapped.
*/
@@ -40,7 +42,7 @@ public class OverrideConfigurationLoader implements ConfigurationLoader
public static void override(Consumer<Config> modifier)
{
- System.setProperty(Config.PROPERTY_PREFIX + "config.loader", OverrideConfigurationLoader.class.getName());
+ CONFIG_LOADER.setString(OverrideConfigurationLoader.class.getName());
configModifier = modifier;
}
}
diff --git a/test/unit/org/apache/cassandra/config/YamlConfigurationLoaderTest.java b/test/unit/org/apache/cassandra/config/YamlConfigurationLoaderTest.java
index 06be1dc209..b46d2ea424 100644
--- a/test/unit/org/apache/cassandra/config/YamlConfigurationLoaderTest.java
+++ b/test/unit/org/apache/cassandra/config/YamlConfigurationLoaderTest.java
@@ -91,21 +91,19 @@ public class YamlConfigurationLoaderTest
// the reason is that its not a scalar but a complex type (collection type), so the map we use needs to have a collection to match.
// It is possible that we define a common string representation for these types so they can be written to; this
// is an issue that SettingsTable may need to worry about.
- try (WithProperties ignore = new WithProperties(CONFIG_ALLOW_SYSTEM_PROPERTIES.getKey(), "true",
- SYSTEM_PROPERTY_PREFIX + "storage_port", "123",
- SYSTEM_PROPERTY_PREFIX + "commitlog_sync", "batch",
- SYSTEM_PROPERTY_PREFIX + "seed_provider.class_name", "org.apache.cassandra.locator.SimpleSeedProvider",
-// PROPERTY_PREFIX + "client_encryption_options.cipher_suites", "[\"FakeCipher\"]",
- SYSTEM_PROPERTY_PREFIX + "client_encryption_options.optional", "false",
- SYSTEM_PROPERTY_PREFIX + "client_encryption_options.enabled", "true",
- SYSTEM_PROPERTY_PREFIX + "doesnotexist", "true"
- ))
+ try (WithProperties ignore = new WithProperties()
+ .set(CONFIG_ALLOW_SYSTEM_PROPERTIES, true)
+ .with(SYSTEM_PROPERTY_PREFIX + "storage_port", "123",
+ SYSTEM_PROPERTY_PREFIX + "commitlog_sync", "batch",
+ SYSTEM_PROPERTY_PREFIX + "seed_provider.class_name", "org.apache.cassandra.locator.SimpleSeedProvider",
+ SYSTEM_PROPERTY_PREFIX + "client_encryption_options.optional", Boolean.FALSE.toString(),
+ SYSTEM_PROPERTY_PREFIX + "client_encryption_options.enabled", Boolean.TRUE.toString(),
+ SYSTEM_PROPERTY_PREFIX + "doesnotexist", Boolean.TRUE.toString()))
{
Config config = YamlConfigurationLoader.fromMap(Collections.emptyMap(), true, Config.class);
assertThat(config.storage_port).isEqualTo(123);
assertThat(config.commitlog_sync).isEqualTo(Config.CommitLogSync.batch);
assertThat(config.seed_provider.class_name).isEqualTo("org.apache.cassandra.locator.SimpleSeedProvider");
-// assertThat(config.client_encryption_options.cipher_suites).isEqualTo(Collections.singletonList("FakeCipher"));
assertThat(config.client_encryption_options.optional).isFalse();
assertThat(config.client_encryption_options.enabled).isTrue();
}
diff --git a/test/unit/org/apache/cassandra/cql3/CQLTester.java b/test/unit/org/apache/cassandra/cql3/CQLTester.java
index 7998d4bd56..0eb97d37bc 100644
--- a/test/unit/org/apache/cassandra/cql3/CQLTester.java
+++ b/test/unit/org/apache/cassandra/cql3/CQLTester.java
@@ -26,7 +26,21 @@ import java.net.MalformedURLException;
import java.net.ServerSocket;
import java.nio.ByteBuffer;
import java.rmi.server.RMISocketFactory;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.UUID;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
@@ -34,7 +48,6 @@ import java.util.function.Consumer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
-
import javax.management.MBeanServerConnection;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
@@ -46,18 +59,27 @@ import com.google.common.base.Objects;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
-
-import org.junit.*;
-
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.codahale.metrics.Gauge;
-import com.datastax.driver.core.*;
+import com.datastax.driver.core.CloseFuture;
+import com.datastax.driver.core.Cluster;
+import com.datastax.driver.core.ColumnDefinitions;
import com.datastax.driver.core.DataType;
+import com.datastax.driver.core.NettyOptions;
import com.datastax.driver.core.ResultSet;
+import com.datastax.driver.core.Row;
+import com.datastax.driver.core.Session;
+import com.datastax.driver.core.SimpleStatement;
+import com.datastax.driver.core.SocketOptions;
+import com.datastax.driver.core.Statement;
import com.datastax.driver.core.exceptions.UnauthorizedException;
-
import com.datastax.shaded.netty.channel.EventLoopGroup;
import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.ServerTestUtils;
@@ -71,52 +93,84 @@ import org.apache.cassandra.concurrent.ScheduledExecutors;
import org.apache.cassandra.concurrent.Stage;
import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.config.DataStorageSpec;
+import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.EncryptionOptions;
+import org.apache.cassandra.cql3.functions.FunctionName;
+import org.apache.cassandra.db.ColumnFamilyStore;
+import org.apache.cassandra.db.Directories;
+import org.apache.cassandra.db.Keyspace;
+import org.apache.cassandra.db.SystemKeyspace;
+import org.apache.cassandra.db.marshal.AbstractType;
+import org.apache.cassandra.db.marshal.BooleanType;
+import org.apache.cassandra.db.marshal.ByteType;
+import org.apache.cassandra.db.marshal.BytesType;
+import org.apache.cassandra.db.marshal.CollectionType;
+import org.apache.cassandra.db.marshal.DecimalType;
+import org.apache.cassandra.db.marshal.DoubleType;
+import org.apache.cassandra.db.marshal.DurationType;
+import org.apache.cassandra.db.marshal.FloatType;
+import org.apache.cassandra.db.marshal.InetAddressType;
+import org.apache.cassandra.db.marshal.Int32Type;
+import org.apache.cassandra.db.marshal.IntegerType;
+import org.apache.cassandra.db.marshal.ListType;
+import org.apache.cassandra.db.marshal.LongType;
+import org.apache.cassandra.db.marshal.MapType;
+import org.apache.cassandra.db.marshal.SetType;
+import org.apache.cassandra.db.marshal.ShortType;
+import org.apache.cassandra.db.marshal.TimeUUIDType;
+import org.apache.cassandra.db.marshal.TimestampType;
+import org.apache.cassandra.db.marshal.TupleType;
+import org.apache.cassandra.db.marshal.UTF8Type;
+import org.apache.cassandra.db.marshal.UUIDType;
import org.apache.cassandra.db.virtual.VirtualKeyspaceRegistry;
import org.apache.cassandra.db.virtual.VirtualSchemaKeyspace;
+import org.apache.cassandra.dht.Murmur3Partitioner;
+import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.exceptions.SyntaxException;
import org.apache.cassandra.index.SecondaryIndexManager;
import org.apache.cassandra.io.filesystem.ListenableFileSystem;
import org.apache.cassandra.io.sstable.Descriptor;
import org.apache.cassandra.io.util.File;
import org.apache.cassandra.io.util.FileSystems;
+import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.locator.InetAddressAndPort;
import org.apache.cassandra.locator.TokenMetadata;
import org.apache.cassandra.metrics.CassandraMetricsRegistry;
import org.apache.cassandra.metrics.ClientMetrics;
-import org.apache.cassandra.schema.*;
-import org.apache.cassandra.config.DatabaseDescriptor;
-import org.apache.cassandra.cql3.functions.FunctionName;
-import org.apache.cassandra.db.*;
-import org.apache.cassandra.db.marshal.*;
-import org.apache.cassandra.db.marshal.TupleType;
-import org.apache.cassandra.dht.Murmur3Partitioner;
-import org.apache.cassandra.exceptions.ConfigurationException;
-import org.apache.cassandra.exceptions.SyntaxException;
-import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.schema.IndexMetadata;
import org.apache.cassandra.schema.KeyspaceMetadata;
+import org.apache.cassandra.schema.Schema;
+import org.apache.cassandra.schema.SchemaConstants;
+import org.apache.cassandra.schema.SchemaTestUtil;
import org.apache.cassandra.schema.TableMetadata;
import org.apache.cassandra.serializers.TypeSerializer;
import org.apache.cassandra.service.ClientState;
import org.apache.cassandra.service.QueryState;
import org.apache.cassandra.service.StorageService;
-import org.apache.cassandra.transport.*;
+import org.apache.cassandra.transport.Event;
+import org.apache.cassandra.transport.Message;
import org.apache.cassandra.transport.ProtocolVersion;
+import org.apache.cassandra.transport.Server;
+import org.apache.cassandra.transport.SimpleClient;
import org.apache.cassandra.transport.messages.ResultMessage;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.JMXServerUtils;
+import org.apache.cassandra.utils.Pair;
import org.apache.cassandra.utils.TimeUUID;
import org.assertj.core.api.Assertions;
-import org.apache.cassandra.utils.Pair;
import org.awaitility.Awaitility;
-import static com.datastax.driver.core.SocketOptions.DEFAULT_CONNECT_TIMEOUT_MILLIS;
-import static com.datastax.driver.core.SocketOptions.DEFAULT_READ_TIMEOUT_MILLIS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_JMX_LOCAL_PORT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_DRIVER_CONNECTION_TIMEOUT_MS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_DRIVER_READ_TIMEOUT_MS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_REUSE_PREPARED;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_ROW_CACHE_SIZE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_USE_PREPARED;
import static org.apache.cassandra.utils.Clock.Global.currentTimeMillis;
-import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -134,9 +188,9 @@ public abstract class CQLTester
public static final String KEYSPACE = "cql_test_keyspace";
public static final String KEYSPACE_PER_TEST = "cql_test_keyspace_alt";
- protected static final boolean USE_PREPARED_VALUES = Boolean.valueOf(System.getProperty("cassandra.test.use_prepared", "true"));
- protected static final boolean REUSE_PREPARED = Boolean.valueOf(System.getProperty("cassandra.test.reuse_prepared", "true"));
- protected static final long ROW_CACHE_SIZE_IN_MIB = new DataStorageSpec.LongMebibytesBound(System.getProperty("cassandra.test.row_cache_size", "0MiB")).toMebibytes();
+ protected static final boolean USE_PREPARED_VALUES = TEST_USE_PREPARED.getBoolean();
+ protected static final boolean REUSE_PREPARED = TEST_REUSE_PREPARED.getBoolean();
+ protected static final long ROW_CACHE_SIZE_IN_MIB = new DataStorageSpec.LongMebibytesBound(TEST_ROW_CACHE_SIZE.getString("0MiB")).toMebibytes();
private static final AtomicInteger seqNumber = new AtomicInteger();
protected static final ByteBuffer TOO_BIG = ByteBuffer.allocate(FBUtilities.MAX_UNSIGNED_SHORT + 1024);
public static final String DATA_CENTER = ServerTestUtils.DATA_CENTER;
@@ -444,7 +498,7 @@ public abstract class CQLTester
public static List<String> buildNodetoolArgs(List<String> args)
{
- int port = jmxPort == 0 ? Integer.getInteger("cassandra.jmx.local.port", 7199) : jmxPort;
+ int port = jmxPort == 0 ? CASSANDRA_JMX_LOCAL_PORT.getInt(7199) : jmxPort;
String host = jmxHost == null ? "127.0.0.1" : jmxHost;
List<String> allArgs = new ArrayList<>();
allArgs.add("bin/nodetool");
@@ -577,10 +631,8 @@ public abstract class CQLTester
private static Cluster initClientCluster(User user, ProtocolVersion version)
{
SocketOptions socketOptions =
- new SocketOptions().setConnectTimeoutMillis(Integer.getInteger("cassandra.test.driver.connection_timeout_ms",
- DEFAULT_CONNECT_TIMEOUT_MILLIS)) // default is 5000
- .setReadTimeoutMillis(Integer.getInteger("cassandra.test.driver.read_timeout_ms",
- DEFAULT_READ_TIMEOUT_MILLIS)); // default is 12000
+ new SocketOptions().setConnectTimeoutMillis(TEST_DRIVER_CONNECTION_TIMEOUT_MS.getInt()) // default is 5000
+ .setReadTimeoutMillis(TEST_DRIVER_READ_TIMEOUT_MS.getInt()); // default is 12000
logger.info("Timeouts: {} / {}", socketOptions.getConnectTimeoutMillis(), socketOptions.getReadTimeoutMillis());
diff --git a/test/unit/org/apache/cassandra/cql3/PagingTest.java b/test/unit/org/apache/cassandra/cql3/PagingTest.java
index a3387c4e20..75d73e5d0d 100644
--- a/test/unit/org/apache/cassandra/cql3/PagingTest.java
+++ b/test/unit/org/apache/cassandra/cql3/PagingTest.java
@@ -38,6 +38,7 @@ import org.apache.cassandra.service.EmbeddedCassandraService;
import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertEquals;
@@ -57,7 +58,7 @@ public class PagingTest
@BeforeClass
public static void setup() throws Exception
{
- System.setProperty("cassandra.config", "cassandra-murmur.yaml");
+ CASSANDRA_CONFIG.setString("cassandra-murmur.yaml");
cassandra = ServerTestUtils.startEmbeddedCassandraService();
diff --git a/test/unit/org/apache/cassandra/cql3/ViewFiltering1Test.java b/test/unit/org/apache/cassandra/cql3/ViewFiltering1Test.java
index dac730cb16..93b09241ae 100644
--- a/test/unit/org/apache/cassandra/cql3/ViewFiltering1Test.java
+++ b/test/unit/org/apache/cassandra/cql3/ViewFiltering1Test.java
@@ -31,6 +31,8 @@ import org.apache.cassandra.Util;
import org.apache.cassandra.db.Keyspace;
import org.apache.cassandra.exceptions.InvalidRequestException;
+import static org.apache.cassandra.config.CassandraRelevantProperties.MV_ALLOW_FILTERING_NONKEY_COLUMNS_UNSAFE;
+
/* ViewFilteringTest class has been split into multiple ones because of timeout issues (CASSANDRA-16670, CASSANDRA-17167)
* Any changes here check if they apply to the other classes
* - ViewFilteringPKTest
@@ -46,13 +48,13 @@ public class ViewFiltering1Test extends ViewAbstractParameterizedTest
public static void startup()
{
ViewAbstractParameterizedTest.startup();
- System.setProperty("cassandra.mv.allow_filtering_nonkey_columns_unsafe", "true");
+ MV_ALLOW_FILTERING_NONKEY_COLUMNS_UNSAFE.setBoolean(true);
}
@AfterClass
public static void tearDown()
{
- System.setProperty("cassandra.mv.allow_filtering_nonkey_columns_unsafe", "false");
+ MV_ALLOW_FILTERING_NONKEY_COLUMNS_UNSAFE.setBoolean(false);
}
// TODO will revise the non-pk filter condition in MV, see CASSANDRA-11500
diff --git a/test/unit/org/apache/cassandra/cql3/validation/entities/UFSecurityTest.java b/test/unit/org/apache/cassandra/cql3/validation/entities/UFSecurityTest.java
index 96a0cbc329..fe1ec706e2 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/entities/UFSecurityTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/entities/UFSecurityTest.java
@@ -48,13 +48,13 @@ public class UFSecurityTest extends CQLTester
"RETURNS NULL ON NULL INPUT " +
"RETURNS double " +
"LANGUAGE JAVA\n" +
- "AS 'System.getProperty(\"foo.bar.baz\"); return 0d;';");
+ "AS 'System.getProperty(\"foo.bar.baz\"); return 0d;';"); // checkstyle: suppress nearby 'blockSystemPropertyUsage'
execute("SELECT " + fName + "(dval) FROM %s WHERE key=1");
Assert.fail();
}
catch (FunctionExecutionException e)
{
- assertAccessControlException("System.getProperty(\"foo.bar.baz\"); return 0d;", e);
+ assertAccessControlException("System.getProperty(\"foo.bar.baz\"); return 0d;", e); // checkstyle: suppress nearby 'blockSystemPropertyUsage'
}
String[] cfnSources =
diff --git a/test/unit/org/apache/cassandra/cql3/validation/operations/TTLTest.java b/test/unit/org/apache/cassandra/cql3/validation/operations/TTLTest.java
index 014be9015d..9100a69b6f 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/operations/TTLTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/operations/TTLTest.java
@@ -45,6 +45,7 @@ import org.apache.cassandra.tools.ToolRunner;
import org.apache.cassandra.tools.ToolRunner.ToolResult;
import org.assertj.core.api.Assertions;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -403,8 +404,7 @@ public class TTLTest extends CQLTester
}
if (runSStableScrub)
{
- System.setProperty(org.apache.cassandra.tools.Util.ALLOW_TOOL_REINIT_FOR_TEST, "true"); // Necessary for testing
-
+ TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.setBoolean(true);
try
{
ToolResult tool;
@@ -422,7 +422,7 @@ public class TTLTest extends CQLTester
}
finally
{
- System.clearProperty(org.apache.cassandra.tools.Util.ALLOW_TOOL_REINIT_FOR_TEST);
+ TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.clearValue();
}
}
diff --git a/test/unit/org/apache/cassandra/db/RowCacheTest.java b/test/unit/org/apache/cassandra/db/RowCacheTest.java
index 0bf8c5df08..4b37e69414 100644
--- a/test/unit/org/apache/cassandra/db/RowCacheTest.java
+++ b/test/unit/org/apache/cassandra/db/RowCacheTest.java
@@ -54,6 +54,7 @@ import org.apache.cassandra.service.CacheService;
import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.ByteBufferUtil;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_ORG_CAFFINITAS_OHC_SEGMENTCOUNT;
import static org.junit.Assert.*;
public class RowCacheTest
@@ -66,7 +67,7 @@ public class RowCacheTest
@BeforeClass
public static void defineSchema() throws ConfigurationException
{
- System.setProperty("org.caffinitas.ohc.segmentCount", "16");
+ TEST_ORG_CAFFINITAS_OHC_SEGMENTCOUNT.setInt(16);
SchemaLoader.prepareServer();
SchemaLoader.createKeyspace(KEYSPACE_CACHED,
KeyspaceParams.simple(1),
diff --git a/test/unit/org/apache/cassandra/db/commitlog/CommitLogFailurePolicyTest.java b/test/unit/org/apache/cassandra/db/commitlog/CommitLogFailurePolicyTest.java
index aadd2fda3b..3dc4e5f69e 100644
--- a/test/unit/org/apache/cassandra/db/commitlog/CommitLogFailurePolicyTest.java
+++ b/test/unit/org/apache/cassandra/db/commitlog/CommitLogFailurePolicyTest.java
@@ -32,13 +32,15 @@ import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.JVMStabilityInspector;
import org.apache.cassandra.utils.KillerForTests;
+import static org.apache.cassandra.config.CassandraRelevantProperties.COMMITLOG_STOP_ON_ERRORS;
+
public class CommitLogFailurePolicyTest
{
@BeforeClass
public static void defineSchema() throws ConfigurationException
{
SchemaLoader.prepareServer();
- System.setProperty("cassandra.commitlog.stop_on_errors", "true");
+ COMMITLOG_STOP_ON_ERRORS.setBoolean(true);
}
@Test
diff --git a/test/unit/org/apache/cassandra/db/commitlog/CommitLogTest.java b/test/unit/org/apache/cassandra/db/commitlog/CommitLogTest.java
index c2dc54ed45..764a497913 100644
--- a/test/unit/org/apache/cassandra/db/commitlog/CommitLogTest.java
+++ b/test/unit/org/apache/cassandra/db/commitlog/CommitLogTest.java
@@ -1,21 +1,21 @@
/*
-* 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.
-*/
+ * 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.db.commitlog;
import org.apache.cassandra.io.util.File;
@@ -41,6 +41,7 @@ import com.google.common.collect.Iterables;
import com.google.common.io.Files;
import org.apache.cassandra.io.util.FileOutputStreamPlus;
+
import org.junit.*;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -87,7 +88,7 @@ import org.apache.cassandra.utils.Pair;
import org.apache.cassandra.utils.vint.VIntCoding;
import static java.lang.String.format;
-import static java.lang.System.setProperty;
+import static org.apache.cassandra.config.CassandraRelevantProperties.COMMITLOG_IGNORE_REPLAY_ERRORS;
import static org.apache.cassandra.config.CassandraRelevantProperties.COMMIT_LOG_REPLAY_LIST;
import static org.apache.cassandra.db.commitlog.CommitLogSegment.ENTRY_OVERHEAD_SIZE;
import static org.apache.cassandra.utils.ByteBufferUtil.bytes;
@@ -130,14 +131,14 @@ public abstract class CommitLogTest
public static Collection<Object[]> generateData() throws Exception
{
return Arrays.asList(new Object[][]
- {
- { null, EncryptionContextGenerator.createDisabledContext()}, // No compression, no encryption
- { null, newEncryptionContext() }, // Encryption
- { new ParameterizedClass(LZ4Compressor.class.getName(), Collections.emptyMap()), EncryptionContextGenerator.createDisabledContext() },
- { new ParameterizedClass(SnappyCompressor.class.getName(), Collections.emptyMap()), EncryptionContextGenerator.createDisabledContext()},
- { new ParameterizedClass(DeflateCompressor.class.getName(), Collections.emptyMap()), EncryptionContextGenerator.createDisabledContext()},
- { new ParameterizedClass(ZstdCompressor.class.getName(), Collections.emptyMap()), EncryptionContextGenerator.createDisabledContext()}
- });
+ {
+ { null, EncryptionContextGenerator.createDisabledContext() }, // No compression, no encryption
+ { null, newEncryptionContext() }, // Encryption
+ { new ParameterizedClass(LZ4Compressor.class.getName(), Collections.emptyMap()), EncryptionContextGenerator.createDisabledContext() },
+ { new ParameterizedClass(SnappyCompressor.class.getName(), Collections.emptyMap()), EncryptionContextGenerator.createDisabledContext() },
+ { new ParameterizedClass(DeflateCompressor.class.getName(), Collections.emptyMap()), EncryptionContextGenerator.createDisabledContext() },
+ { new ParameterizedClass(ZstdCompressor.class.getName(), Collections.emptyMap()), EncryptionContextGenerator.createDisabledContext() }
+ });
}
private static EncryptionContext newEncryptionContext() throws Exception
@@ -161,12 +162,12 @@ public abstract class CommitLogTest
MemtableParams skipListMemtable = MemtableParams.get("skiplist");
TableMetadata.Builder custom =
- TableMetadata.builder(KEYSPACE1, CUSTOM1)
- .addPartitionKeyColumn("k", IntegerType.instance)
- .addClusteringColumn("c1", MapType.getInstance(UTF8Type.instance, UTF8Type.instance, false))
- .addClusteringColumn("c2", SetType.getInstance(UTF8Type.instance, false))
- .addStaticColumn("s", IntegerType.instance)
- .memtable(skipListMemtable);
+ TableMetadata.builder(KEYSPACE1, CUSTOM1)
+ .addPartitionKeyColumn("k", IntegerType.instance)
+ .addClusteringColumn("c1", MapType.getInstance(UTF8Type.instance, UTF8Type.instance, false))
+ .addClusteringColumn("c2", SetType.getInstance(UTF8Type.instance, false))
+ .addStaticColumn("s", IntegerType.instance)
+ .memtable(skipListMemtable);
SchemaLoader.createKeyspace(KEYSPACE1,
KeyspaceParams.simple(1),
@@ -215,7 +216,7 @@ public abstract class CommitLogTest
public void afterTest()
{
CommitLogSegmentReader.setAllowSkipSyncMarkerCrc(false);
- System.clearProperty("cassandra.replayList");
+ COMMIT_LOG_REPLAY_LIST.clearValue();
testKiller.reset();
}
@@ -336,11 +337,14 @@ public abstract class CommitLogTest
@Test
public void testRecoveryWithGarbageLog_ignoredByProperty() throws Exception
{
- try {
- System.setProperty(CommitLogReplayer.IGNORE_REPLAY_ERRORS_PROPERTY, "true");
+ try
+ {
+ COMMITLOG_IGNORE_REPLAY_ERRORS.setBoolean(true);
testRecoveryWithGarbageLog();
- } finally {
- System.clearProperty(CommitLogReplayer.IGNORE_REPLAY_ERRORS_PROPERTY);
+ }
+ finally
+ {
+ COMMITLOG_IGNORE_REPLAY_ERRORS.clearValue();
}
}
@@ -403,10 +407,10 @@ public abstract class CommitLogTest
ColumnFamilyStore cfs2 = ks.getColumnFamilyStore(STANDARD2);
// Roughly 32 MiB mutation
- Mutation rm = new RowUpdateBuilder(cfs1.metadata(), 0, "k")
- .clustering("bytes")
- .add("val", ByteBuffer.allocate((DatabaseDescriptor.getCommitLogSegmentSize()/4) - 1))
- .build();
+ Mutation rm = new RowUpdateBuilder(cfs1.metadata(), 0, "k")
+ .clustering("bytes")
+ .add("val", ByteBuffer.allocate((DatabaseDescriptor.getCommitLogSegmentSize() / 4) - 1))
+ .build();
// Adding it twice (won't change segment)
CommitLog.instance.add(rm);
@@ -524,6 +528,7 @@ public abstract class CommitLogTest
}
throw new AssertionError("mutation larger than limit was accepted");
}
+
@Test
public void testExceedRecordLimitWithMultiplePartitions() throws Exception
{
@@ -558,9 +563,9 @@ public abstract class CommitLogTest
long mutationSize = mutation.serializedSize(MessagingService.current_version) + ENTRY_OVERHEAD_SIZE;
final String expectedMessagePrefix = format("Rejected an oversized mutation (%d/%d) for keyspace: %s.",
- mutationSize,
- DatabaseDescriptor.getMaxMutationSize(),
- KEYSPACE1);
+ mutationSize,
+ DatabaseDescriptor.getMaxMutationSize(),
+ KEYSPACE1);
assertTrue(message.startsWith(expectedMessagePrefix));
assertTrue(message.contains(format("%s.%s and 1 more.", STANDARD1, key)));
}
@@ -734,7 +739,7 @@ public abstract class CommitLogTest
.add("val", ByteBuffer.allocate(DatabaseDescriptor.getCommitLogSegmentSize() / 4))
.build();
- for (int i = 0 ; i < 5 ; i++)
+ for (int i = 0; i < 5; i++)
CommitLog.instance.add(m2);
assertEquals(2, CommitLog.instance.segmentManager.getActiveSegments().size());
@@ -815,43 +820,22 @@ public abstract class CommitLogTest
public void testReplayListProperty() throws Throwable
{
// only keyspace
- assertReplay(2, () -> setProperty(COMMIT_LOG_REPLAY_LIST.getKey(), KEYSPACE1_REPLAY));
+ assertReplay(2, () -> COMMIT_LOG_REPLAY_LIST.setString(KEYSPACE1_REPLAY));
// only keyspaces
- assertReplay(3, () -> setProperty(COMMIT_LOG_REPLAY_LIST.getKey(),
- format("%s,%s", KEYSPACE1_REPLAY, KEYSPACE2_REPLAY)));
+ assertReplay(3, () -> COMMIT_LOG_REPLAY_LIST.setString(format("%s,%s", KEYSPACE1_REPLAY, KEYSPACE2_REPLAY)));
// only table with keyspace
- assertReplay(1,
- () -> setProperty(COMMIT_LOG_REPLAY_LIST.getKey(),
- format("%s.%s",
- KEYSPACE1_REPLAY,
- KEYSPACE1_REPLAY_TABLE1)));
+ assertReplay(1, () -> COMMIT_LOG_REPLAY_LIST.setString(format("%s.%s", KEYSPACE1_REPLAY, KEYSPACE1_REPLAY_TABLE1)));
// mix of keyspace and tables with keyspaces
- assertReplay(2,
- () -> setProperty(COMMIT_LOG_REPLAY_LIST.getKey(),
- format("%s.%s,%s",
- KEYSPACE1_REPLAY,
- KEYSPACE1_REPLAY_TABLE1,
- KEYSPACE2_REPLAY)));
+ assertReplay(2, () -> COMMIT_LOG_REPLAY_LIST.setString(format("%s.%s,%s", KEYSPACE1_REPLAY, KEYSPACE1_REPLAY_TABLE1, KEYSPACE2_REPLAY)));
// only tables with keyspaces
- assertReplay(2,
- () -> setProperty(COMMIT_LOG_REPLAY_LIST.getKey(),
- format("%s.%s,%s.%s",
- KEYSPACE1_REPLAY,
- KEYSPACE1_REPLAY_TABLE1,
- KEYSPACE2_REPLAY,
- KEYSPACE2_REPLAY_TABLE2)));
+ assertReplay(2, () -> COMMIT_LOG_REPLAY_LIST.setString(format("%s.%s,%s.%s", KEYSPACE1_REPLAY, KEYSPACE1_REPLAY_TABLE1, KEYSPACE2_REPLAY, KEYSPACE2_REPLAY_TABLE2)));
// mix of keyspace and tables with keyspaces within same keyspace.
- assertReplay(2,
- () -> setProperty(COMMIT_LOG_REPLAY_LIST.getKey(),
- format("%s.%s,%s",
- KEYSPACE1_REPLAY,
- KEYSPACE1_REPLAY_TABLE1,
- KEYSPACE1_REPLAY)));
+ assertReplay(2, () -> COMMIT_LOG_REPLAY_LIST.setString(format("%s.%s,%s", KEYSPACE1_REPLAY, KEYSPACE1_REPLAY_TABLE1, KEYSPACE1_REPLAY)));
// test for wrong formats
@@ -860,7 +844,7 @@ public abstract class CommitLogTest
try
{
assertReplay(2,
- () -> setProperty(COMMIT_LOG_REPLAY_LIST.getKey(), invalidFormat));
+ () -> COMMIT_LOG_REPLAY_LIST.setString(invalidFormat));
fail(format("replay should fail on -D%s=%s as it is in invalid format",
COMMIT_LOG_REPLAY_LIST.getKey(), invalidFormat));
}
@@ -877,7 +861,7 @@ public abstract class CommitLogTest
try
{
assertReplay(2,
- () -> setProperty(COMMIT_LOG_REPLAY_LIST.getKey(), invalidFormat2));
+ () -> COMMIT_LOG_REPLAY_LIST.setString(invalidFormat2));
fail(format("replay should fail on -D%s=%s as it is in invalid format",
COMMIT_LOG_REPLAY_LIST.getKey(), invalidFormat2));
}
@@ -923,20 +907,21 @@ public abstract class CommitLogTest
ColumnFamilyStore ks2tb2 = Keyspace.open(KEYSPACE2_REPLAY).getColumnFamilyStore(KEYSPACE2_REPLAY_TABLE2);
Mutation mutation1 = new RowUpdateBuilder(ks1tb1.metadata(), 0, "key1")
- .clustering("c1").add("val", ByteBuffer.allocate(100)).build();
+ .clustering("c1").add("val", ByteBuffer.allocate(100)).build();
Mutation mutation2 = new RowUpdateBuilder(ks1tb2.metadata(), 0, "key2")
- .clustering("c2").add("val", ByteBuffer.allocate(100)).build();
+ .clustering("c2").add("val", ByteBuffer.allocate(100)).build();
Mutation mutation3 = new RowUpdateBuilder(ks2tb2.metadata(), 0, "key3")
- .clustering("c3").add("val", ByteBuffer.allocate(100)).build();
+ .clustering("c3").add("val", ByteBuffer.allocate(100)).build();
CommitLog.instance.add(mutation1);
CommitLog.instance.add(mutation2);
CommitLog.instance.add(mutation3);
CommitLog.instance.sync(true);
- Map<TableId, IntervalSet<CommitLogPosition>> cfPersisted = new HashMap<TableId, IntervalSet<CommitLogPosition>>() {{
+ Map<TableId, IntervalSet<CommitLogPosition>> cfPersisted = new HashMap<TableId, IntervalSet<CommitLogPosition>>()
+ {{
put(ks1tb1.metadata().id, IntervalSet.empty());
put(ks1tb2.metadata().id, IntervalSet.empty());
put(ks2tb2.metadata().id, IntervalSet.empty());
@@ -1028,7 +1013,7 @@ public abstract class CommitLogTest
{
int cellCount = 0;
int max = 1024;
- int discardPosition = (int)(max * .8); // an arbitrary number of entries that we'll skip on the replay
+ int discardPosition = (int) (max * .8); // an arbitrary number of entries that we'll skip on the replay
CommitLogPosition commitLogPosition = null;
ColumnFamilyStore cfs = Keyspace.open(KEYSPACE1).getColumnFamilyStore(STANDARD1);
@@ -1113,12 +1098,12 @@ public abstract class CommitLogTest
{
DatabaseDescriptor.setDiskFailurePolicy(DiskFailurePolicy.ignore);
- for (int i = 0 ; i < 5 ; i++)
+ for (int i = 0; i < 5; i++)
{
new RowUpdateBuilder(cfs.metadata(), 0, "k")
- .clustering("c" + i).add("val", ByteBuffer.allocate(100))
- .build()
- .apply();
+ .clustering("c" + i).add("val", ByteBuffer.allocate(100))
+ .build()
+ .apply();
if (i == 2)
{
@@ -1143,26 +1128,26 @@ public abstract class CommitLogTest
}
CommitLog.instance.sync(true);
- System.setProperty("cassandra.replayList", KEYSPACE1 + "." + STANDARD1);
+ COMMIT_LOG_REPLAY_LIST.setString(KEYSPACE1 + '.' + STANDARD1);
// Currently we don't attempt to re-flush a memtable that failed, thus make sure data is replayed by commitlog.
// If retries work subsequent flushes should clear up error and this should change to expect 0.
assertEquals(1, CommitLog.instance.resetUnsafe(false));
- System.clearProperty("cassandra.replayList");
+ COMMIT_LOG_REPLAY_LIST.clearValue();
}
public void testOutOfOrderFlushRecovery(BiConsumer<ColumnFamilyStore, Memtable> flushAction, boolean performCompaction)
- throws ExecutionException, InterruptedException, IOException
+ throws ExecutionException, InterruptedException, IOException
{
CommitLog.instance.resetUnsafe(true);
ColumnFamilyStore cfs = Keyspace.open(KEYSPACE1).getColumnFamilyStore(STANDARD1);
- for (int i = 0 ; i < 5 ; i++)
+ for (int i = 0; i < 5; i++)
{
new RowUpdateBuilder(cfs.metadata(), 0, "k")
- .clustering("c" + i).add("val", ByteBuffer.allocate(100))
- .build()
- .apply();
+ .clustering("c" + i).add("val", ByteBuffer.allocate(100))
+ .build()
+ .apply();
Memtable current = cfs.getTracker().getView().getCurrentMemtable();
if (i == 2)
@@ -1177,7 +1162,7 @@ public abstract class CommitLogTest
reader.reloadSSTableMetadata();
CommitLog.instance.sync(true);
- System.setProperty("cassandra.replayList", KEYSPACE1 + "." + STANDARD1);
+ COMMIT_LOG_REPLAY_LIST.setString(KEYSPACE1 + '.' + STANDARD1);
// In the absence of error, this should be 0 because forceBlockingFlush/forceRecycleAllSegments would have
// persisted all data in the commit log. Because we know there was an error, there must be something left to
// replay.
@@ -1256,12 +1241,12 @@ public abstract class CommitLogTest
try
{
- System.setProperty(CommitLogReplayer.IGNORE_REPLAY_ERRORS_PROPERTY, "true");
+ COMMITLOG_IGNORE_REPLAY_ERRORS.setBoolean(true);
replayed = CommitLog.instance.resetUnsafe(false);
}
finally
{
- System.clearProperty(CommitLogReplayer.IGNORE_REPLAY_ERRORS_PROPERTY);
+ COMMITLOG_IGNORE_REPLAY_ERRORS.clearValue();
}
assertEquals(replayed, 1);
diff --git a/test/unit/org/apache/cassandra/db/compaction/CompactionIteratorTest.java b/test/unit/org/apache/cassandra/db/compaction/CompactionIteratorTest.java
index d170e49811..330e1c5200 100644
--- a/test/unit/org/apache/cassandra/db/compaction/CompactionIteratorTest.java
+++ b/test/unit/org/apache/cassandra/db/compaction/CompactionIteratorTest.java
@@ -17,6 +17,7 @@
*/
package org.apache.cassandra.db.compaction;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DIAGNOSTIC_SNAPSHOT_INTERVAL_NANOS;
import static org.apache.cassandra.db.transform.DuplicateRowCheckerTest.assertCommandIssued;
import static org.apache.cassandra.db.transform.DuplicateRowCheckerTest.makeRow;
import static org.apache.cassandra.db.transform.DuplicateRowCheckerTest.partition;
@@ -460,7 +461,7 @@ public class CompactionIteratorTest extends CQLTester
@Test
public void duplicateRowsTest() throws Throwable
{
- System.setProperty("cassandra.diagnostic_snapshot_interval_nanos", "0");
+ DIAGNOSTIC_SNAPSHOT_INTERVAL_NANOS.setLong(0);
// Create a table and insert some data. The actual rows read in the test will be synthetic
// but this creates an sstable on disk to be snapshotted.
createTable("CREATE TABLE %s (pk text, ck1 int, ck2 int, v int, PRIMARY KEY (pk, ck1, ck2))");
diff --git a/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java b/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java
index 8745b908a5..e4a983f92e 100644
--- a/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java
+++ b/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java
@@ -95,7 +95,7 @@ public class CompactionsTest
compactionOptions.put("tombstone_compaction_interval", "1");
// Disable tombstone histogram rounding for tests
- CassandraRelevantProperties.TOMBSTONE_HISTOGRAM_TTL_ROUND_SECONDS.setInt(1);
+ CassandraRelevantProperties.STREAMING_HISTOGRAM_ROUND_SECONDS.setInt(1);
SchemaLoader.prepareServer();
diff --git a/test/unit/org/apache/cassandra/db/compaction/LeveledCompactionStrategyTest.java b/test/unit/org/apache/cassandra/db/compaction/LeveledCompactionStrategyTest.java
index d6dfcd6c64..49f257b58a 100644
--- a/test/unit/org/apache/cassandra/db/compaction/LeveledCompactionStrategyTest.java
+++ b/test/unit/org/apache/cassandra/db/compaction/LeveledCompactionStrategyTest.java
@@ -93,7 +93,7 @@ public class LeveledCompactionStrategyTest
public static void defineSchema() throws ConfigurationException
{
// Disable tombstone histogram rounding for tests
- CassandraRelevantProperties.TOMBSTONE_HISTOGRAM_TTL_ROUND_SECONDS.setInt(1);
+ CassandraRelevantProperties.STREAMING_HISTOGRAM_ROUND_SECONDS.setInt(1);
SchemaLoader.prepareServer();
diff --git a/test/unit/org/apache/cassandra/db/compaction/NeverPurgeTest.java b/test/unit/org/apache/cassandra/db/compaction/NeverPurgeTest.java
index 42537319ff..3f5e4b6f5d 100644
--- a/test/unit/org/apache/cassandra/db/compaction/NeverPurgeTest.java
+++ b/test/unit/org/apache/cassandra/db/compaction/NeverPurgeTest.java
@@ -34,6 +34,7 @@ import org.apache.cassandra.db.rows.UnfilteredRowIterator;
import org.apache.cassandra.io.sstable.ISSTableScanner;
import org.apache.cassandra.io.sstable.format.SSTableReader;
+import static org.apache.cassandra.config.CassandraRelevantProperties.NEVER_PURGE_TOMBSTONES;
import static org.junit.Assert.assertEquals;
public class NeverPurgeTest extends CQLTester
@@ -41,7 +42,7 @@ public class NeverPurgeTest extends CQLTester
@BeforeClass
public static void setUpClass() // method name must match the @BeforeClass annotated method in CQLTester
{
- System.setProperty("cassandra.never_purge_tombstones", "true");
+ NEVER_PURGE_TOMBSTONES.setBoolean(true);
CQLTester.setUpClass();
}
diff --git a/test/unit/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategyTest.java b/test/unit/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategyTest.java
index da017092f1..dac331e117 100644
--- a/test/unit/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategyTest.java
+++ b/test/unit/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategyTest.java
@@ -56,7 +56,7 @@ public class SizeTieredCompactionStrategyTest
public static void defineSchema() throws ConfigurationException
{
// Disable tombstone histogram rounding for tests
- CassandraRelevantProperties.TOMBSTONE_HISTOGRAM_TTL_ROUND_SECONDS.setInt(1);
+ CassandraRelevantProperties.STREAMING_HISTOGRAM_ROUND_SECONDS.setInt(1);
SchemaLoader.prepareServer();
diff --git a/test/unit/org/apache/cassandra/db/compaction/TTLExpiryTest.java b/test/unit/org/apache/cassandra/db/compaction/TTLExpiryTest.java
index 01bb60965c..7c7cdb61b8 100644
--- a/test/unit/org/apache/cassandra/db/compaction/TTLExpiryTest.java
+++ b/test/unit/org/apache/cassandra/db/compaction/TTLExpiryTest.java
@@ -61,7 +61,7 @@ public class TTLExpiryTest
public static void defineSchema() throws ConfigurationException
{
// Disable tombstone histogram rounding for tests
- CassandraRelevantProperties.TOMBSTONE_HISTOGRAM_TTL_ROUND_SECONDS.setInt(1);
+ CassandraRelevantProperties.STREAMING_HISTOGRAM_ROUND_SECONDS.setInt(1);
SchemaLoader.prepareServer();
diff --git a/test/unit/org/apache/cassandra/db/compaction/TimeWindowCompactionStrategyTest.java b/test/unit/org/apache/cassandra/db/compaction/TimeWindowCompactionStrategyTest.java
index add3ec0e15..41a4c47578 100644
--- a/test/unit/org/apache/cassandra/db/compaction/TimeWindowCompactionStrategyTest.java
+++ b/test/unit/org/apache/cassandra/db/compaction/TimeWindowCompactionStrategyTest.java
@@ -44,6 +44,7 @@ import org.apache.cassandra.schema.KeyspaceParams;
import org.apache.cassandra.schema.MockSchema;
import org.apache.cassandra.utils.Pair;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ALLOW_UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION;
import static org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy.getWindowBoundsInMillis;
import static org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy.newestBucket;
import static org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy.validateOptions;
@@ -65,8 +66,9 @@ public class TimeWindowCompactionStrategyTest extends SchemaLoader
public static void defineSchema() throws ConfigurationException
{
// Disable tombstone histogram rounding for tests
- CassandraRelevantProperties.TOMBSTONE_HISTOGRAM_TTL_ROUND_SECONDS.setInt(1);
- System.setProperty(TimeWindowCompactionStrategyOptions.UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION_PROPERTY, "true");
+ CassandraRelevantProperties.STREAMING_HISTOGRAM_ROUND_SECONDS.setInt(1);
+ ALLOW_UNSAFE_AGGRESSIVE_SSTABLE_EXPIRATION.setBoolean(true);
+
SchemaLoader.prepareServer();
diff --git a/test/unit/org/apache/cassandra/db/rows/RowsMergingTest.java b/test/unit/org/apache/cassandra/db/rows/RowsMergingTest.java
index 8049af37a8..01e335d8e9 100644
--- a/test/unit/org/apache/cassandra/db/rows/RowsMergingTest.java
+++ b/test/unit/org/apache/cassandra/db/rows/RowsMergingTest.java
@@ -26,12 +26,14 @@ import org.junit.Test;
import com.google.common.base.Joiner;
+import static org.apache.cassandra.config.CassandraRelevantProperties.BTREE_BRANCH_SHIFT;
+
public class RowsMergingTest extends CQLTester
{
@BeforeClass
public static void setUpClass()
{
- System.setProperty("cassandra.btree.branchshift", "2");
+ BTREE_BRANCH_SHIFT.setInt(2);
CQLTester.setUpClass();
}
diff --git a/test/unit/org/apache/cassandra/db/transform/DuplicateRowCheckerTest.java b/test/unit/org/apache/cassandra/db/transform/DuplicateRowCheckerTest.java
index 671d36b035..e7f04b1e8e 100644
--- a/test/unit/org/apache/cassandra/db/transform/DuplicateRowCheckerTest.java
+++ b/test/unit/org/apache/cassandra/db/transform/DuplicateRowCheckerTest.java
@@ -38,6 +38,7 @@ import org.apache.cassandra.schema.TableMetadata;
import org.apache.cassandra.utils.DiagnosticSnapshotService;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DIAGNOSTIC_SNAPSHOT_INTERVAL_NANOS;
import static org.apache.cassandra.utils.ByteBufferUtil.bytes;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -59,7 +60,7 @@ public class DuplicateRowCheckerTest extends CQLTester
public void setup() throws Throwable
{
DatabaseDescriptor.setSnapshotOnDuplicateRowDetection(true);
- System.setProperty("cassandra.diagnostic_snapshot_interval_nanos", "0");
+ DIAGNOSTIC_SNAPSHOT_INTERVAL_NANOS.setLong(0);
// Create a table and insert some data. The actual rows read in the test will be synthetic
// but this creates an sstable on disk to be snapshotted.
createTable("CREATE TABLE %s (pk text, ck1 int, ck2 int, v int, PRIMARY KEY (pk, ck1, ck2))");
diff --git a/test/unit/org/apache/cassandra/db/virtual/LogMessagesTableTest.java b/test/unit/org/apache/cassandra/db/virtual/LogMessagesTableTest.java
index 2225c4a1dc..f3655a4f40 100644
--- a/test/unit/org/apache/cassandra/db/virtual/LogMessagesTableTest.java
+++ b/test/unit/org/apache/cassandra/db/virtual/LogMessagesTableTest.java
@@ -125,19 +125,19 @@ public class LogMessagesTableTest extends CQLTester
@Test
public void testResolvingBufferSize()
{
- System.setProperty(LOGS_VIRTUAL_TABLE_MAX_ROWS.getKey(), "-1");
+ LOGS_VIRTUAL_TABLE_MAX_ROWS.setInt(-1);
assertEquals(LogMessagesTable.LOGS_VIRTUAL_TABLE_DEFAULT_ROWS, LogMessagesTable.resolveBufferSize());
- System.setProperty(LOGS_VIRTUAL_TABLE_MAX_ROWS.getKey(), "0");
+ LOGS_VIRTUAL_TABLE_MAX_ROWS.setInt(0);
assertEquals(LogMessagesTable.LOGS_VIRTUAL_TABLE_DEFAULT_ROWS, LogMessagesTable.resolveBufferSize());
- System.setProperty(LOGS_VIRTUAL_TABLE_MAX_ROWS.getKey(), "1000001");
+ LOGS_VIRTUAL_TABLE_MAX_ROWS.setInt(1000001);
assertEquals(LogMessagesTable.LOGS_VIRTUAL_TABLE_DEFAULT_ROWS, LogMessagesTable.resolveBufferSize());
- System.setProperty(LOGS_VIRTUAL_TABLE_MAX_ROWS.getKey(), "999");
+ LOGS_VIRTUAL_TABLE_MAX_ROWS.setInt(999);
assertEquals(LogMessagesTable.LOGS_VIRTUAL_TABLE_DEFAULT_ROWS, LogMessagesTable.resolveBufferSize());
- System.setProperty(LOGS_VIRTUAL_TABLE_MAX_ROWS.getKey(), "50001");
+ LOGS_VIRTUAL_TABLE_MAX_ROWS.setInt(50001);
assertEquals(50001, LogMessagesTable.resolveBufferSize());
}
diff --git a/test/unit/org/apache/cassandra/db/virtual/SystemPropertiesTableTest.java b/test/unit/org/apache/cassandra/db/virtual/SystemPropertiesTableTest.java
index 5242d552e6..c8ca9ba8fa 100644
--- a/test/unit/org/apache/cassandra/db/virtual/SystemPropertiesTableTest.java
+++ b/test/unit/org/apache/cassandra/db/virtual/SystemPropertiesTableTest.java
@@ -37,11 +37,13 @@ import org.apache.cassandra.cql3.CQLTester;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Maps;
+// checkstyle: suppress below 'blockSystemPropertyUsage'
+
public class SystemPropertiesTableTest extends CQLTester
{
private static final String KS_NAME = "vts";
private static final Map<String, String> ORIGINAL_ENV_MAP = System.getenv();
- private static final String TEST_PROP = "org.apache.cassandra.db.virtual.SystemPropertiesTableTest";
+ private static final String TEST_PROP = "cassandra.SystemPropertiesTableTest";
private SystemPropertiesTable table;
diff --git a/test/unit/org/apache/cassandra/gms/FailureDetectorTest.java b/test/unit/org/apache/cassandra/gms/FailureDetectorTest.java
index 77fabef914..8ec3dae913 100644
--- a/test/unit/org/apache/cassandra/gms/FailureDetectorTest.java
+++ b/test/unit/org/apache/cassandra/gms/FailureDetectorTest.java
@@ -37,6 +37,7 @@ import org.apache.cassandra.locator.InetAddressAndPort;
import org.apache.cassandra.locator.TokenMetadata;
import org.apache.cassandra.service.StorageService;
+import static org.apache.cassandra.config.CassandraRelevantProperties.MAX_LOCAL_PAUSE_IN_MS;
import static org.junit.Assert.assertFalse;
public class FailureDetectorTest
@@ -45,7 +46,7 @@ public class FailureDetectorTest
public static void setup()
{
// slow unit tests can cause problems with FailureDetector's GC pause handling
- System.setProperty("cassandra.max_local_pause_in_ms", "20000");
+ MAX_LOCAL_PAUSE_IN_MS.setLong(20000);
DatabaseDescriptor.daemonInitialization();
CommitLog.instance.start();
diff --git a/test/unit/org/apache/cassandra/gms/GossiperTest.java b/test/unit/org/apache/cassandra/gms/GossiperTest.java
index 8921b13c07..461483643a 100644
--- a/test/unit/org/apache/cassandra/gms/GossiperTest.java
+++ b/test/unit/org/apache/cassandra/gms/GossiperTest.java
@@ -56,6 +56,7 @@ import org.assertj.core.api.Assertions;
import org.quicktheories.core.Gen;
import org.quicktheories.impl.Constraint;
+import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIP_DISABLE_THREAD_VALIDATION;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
@@ -67,7 +68,7 @@ public class GossiperTest
{
static
{
- System.setProperty(Gossiper.Props.DISABLE_THREAD_VALIDATION, "true");
+ GOSSIP_DISABLE_THREAD_VALIDATION.setBoolean(true);
DatabaseDescriptor.daemonInitialization();
CommitLog.instance.start();
}
diff --git a/test/unit/org/apache/cassandra/gms/PendingRangeCalculatorServiceTest.java b/test/unit/org/apache/cassandra/gms/PendingRangeCalculatorServiceTest.java
index 0d6d1994aa..1f7587668e 100644
--- a/test/unit/org/apache/cassandra/gms/PendingRangeCalculatorServiceTest.java
+++ b/test/unit/org/apache/cassandra/gms/PendingRangeCalculatorServiceTest.java
@@ -39,6 +39,7 @@ import org.apache.cassandra.service.StorageService;
import org.jboss.byteman.contrib.bmunit.BMRule;
import org.jboss.byteman.contrib.bmunit.BMUnitRunner;
+import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIP_DISABLE_THREAD_VALIDATION;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -54,7 +55,7 @@ public class PendingRangeCalculatorServiceTest
@BeforeClass
public static void setUp() throws ConfigurationException
{
- System.setProperty(Gossiper.Props.DISABLE_THREAD_VALIDATION, "true");
+ GOSSIP_DISABLE_THREAD_VALIDATION.setBoolean(true);
SchemaLoader.prepareServer();
StorageService.instance.initServer();
}
diff --git a/test/unit/org/apache/cassandra/gms/ShadowRoundTest.java b/test/unit/org/apache/cassandra/gms/ShadowRoundTest.java
index 381edb8a7c..b948dd5bbf 100644
--- a/test/unit/org/apache/cassandra/gms/ShadowRoundTest.java
+++ b/test/unit/org/apache/cassandra/gms/ShadowRoundTest.java
@@ -33,7 +33,6 @@ import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.Keyspace;
import org.apache.cassandra.db.SystemKeyspace;
@@ -49,6 +48,8 @@ import org.apache.cassandra.net.Verb;
import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.AUTO_BOOTSTRAP;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
import static org.apache.cassandra.net.MockMessagingService.verb;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
@@ -61,7 +62,7 @@ public class ShadowRoundTest
@BeforeClass
public static void setUp() throws ConfigurationException
{
- System.setProperty("cassandra.config", "cassandra-seeds.yaml");
+ CASSANDRA_CONFIG.setString("cassandra-seeds.yaml");
DatabaseDescriptor.daemonInitialization();
CommitLog.instance.start();
@@ -171,7 +172,7 @@ public class ShadowRoundTest
}, 1);
- System.setProperty(Config.PROPERTY_PREFIX + "auto_bootstrap", "false");
+ AUTO_BOOTSTRAP.setBoolean(false);
try
{
StorageService.instance.checkForEndpointCollision(SystemKeyspace.getOrInitializeLocalHostId(), SystemKeyspace.loadHostIds().keySet());
@@ -180,7 +181,10 @@ public class ShadowRoundTest
{
assertEquals("Unable to gossip with any peers", e.getMessage());
}
- System.clearProperty(Config.PROPERTY_PREFIX + "auto_bootstrap");
+ finally
+ {
+ AUTO_BOOTSTRAP.clearValue();
+ }
}
@Test
@@ -209,9 +213,15 @@ public class ShadowRoundTest
}, 1);
- System.setProperty(Config.PROPERTY_PREFIX + "auto_bootstrap", "false");
- StorageService.instance.checkForEndpointCollision(SystemKeyspace.getOrInitializeLocalHostId(), SystemKeyspace.loadHostIds().keySet());
- System.clearProperty(Config.PROPERTY_PREFIX + "auto_bootstrap");
+ AUTO_BOOTSTRAP.setBoolean(false);
+ try
+ {
+ StorageService.instance.checkForEndpointCollision(SystemKeyspace.getOrInitializeLocalHostId(), SystemKeyspace.loadHostIds().keySet());
+ }
+ finally
+ {
+ AUTO_BOOTSTRAP.clearValue();
+ }
}
}
diff --git a/test/unit/org/apache/cassandra/hints/HintWriteTTLTest.java b/test/unit/org/apache/cassandra/hints/HintWriteTTLTest.java
index e24ff76e9a..f814245426 100644
--- a/test/unit/org/apache/cassandra/hints/HintWriteTTLTest.java
+++ b/test/unit/org/apache/cassandra/hints/HintWriteTTLTest.java
@@ -44,6 +44,8 @@ import org.apache.cassandra.schema.TableMetadata;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.FBUtilities;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_MAX_HINT_TTL;
+
public class HintWriteTTLTest
{
private static int TTL = 500;
@@ -84,7 +86,7 @@ public class HintWriteTTLTest
@BeforeClass
public static void setupClass() throws Exception
{
- System.setProperty("cassandra.maxHintTTL", Integer.toString(TTL));
+ CASSANDRA_MAX_HINT_TTL.setInt(TTL);
SchemaLoader.prepareServer();
TableMetadata tbm = CreateTableStatement.parse("CREATE TABLE tbl (k INT PRIMARY KEY, v INT)", "ks").gcGraceSeconds(GC_GRACE).build();
SchemaLoader.createKeyspace("ks", KeyspaceParams.simple(1), tbm);
diff --git a/test/unit/org/apache/cassandra/index/sasi/SASIIndexTest.java b/test/unit/org/apache/cassandra/index/sasi/SASIIndexTest.java
index eefb1e3670..c97a367d37 100644
--- a/test/unit/org/apache/cassandra/index/sasi/SASIIndexTest.java
+++ b/test/unit/org/apache/cassandra/index/sasi/SASIIndexTest.java
@@ -134,6 +134,7 @@ import org.apache.cassandra.utils.Pair;
import org.assertj.core.api.Assertions;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
import static org.apache.cassandra.db.ColumnFamilyStoreTest.getSnapshotManifestAndSchemaFileSizes;
public class SASIIndexTest
@@ -141,7 +142,7 @@ public class SASIIndexTest
private static final IPartitioner PARTITIONER;
static {
- System.setProperty("cassandra.config", "cassandra-murmur.yaml");
+ CASSANDRA_CONFIG.setString("cassandra-murmur.yaml");
PARTITIONER = Murmur3Partitioner.instance;
}
diff --git a/test/unit/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriterTest.java b/test/unit/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriterTest.java
index 2886db4fb7..6707aa592e 100644
--- a/test/unit/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriterTest.java
+++ b/test/unit/org/apache/cassandra/index/sasi/disk/PerSSTableIndexWriterTest.java
@@ -62,6 +62,8 @@ import org.apache.cassandra.schema.TableMetadata;
import org.apache.cassandra.schema.Tables;
import org.apache.cassandra.utils.ByteBufferUtil;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
+
public class PerSSTableIndexWriterTest extends SchemaLoader
{
private static final String KS_NAME = "sasi";
@@ -70,7 +72,7 @@ public class PerSSTableIndexWriterTest extends SchemaLoader
@BeforeClass
public static void loadSchema() throws ConfigurationException
{
- System.setProperty("cassandra.config", "cassandra-murmur.yaml");
+ CASSANDRA_CONFIG.setString("cassandra-murmur.yaml");
SchemaLoader.loadSchema();
SchemaTestUtil.announceNewKeyspace(KeyspaceMetadata.create(KS_NAME,
KeyspaceParams.simpleTransient(1),
diff --git a/test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java b/test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java
index 8620f5c358..5ffebccc22 100644
--- a/test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java
+++ b/test/unit/org/apache/cassandra/index/sasi/plan/OperationTest.java
@@ -43,6 +43,8 @@ import org.apache.cassandra.utils.FBUtilities;
import org.junit.*;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
+
public class OperationTest extends SchemaLoader
{
private static final String KS_NAME = "sasi";
@@ -57,7 +59,7 @@ public class OperationTest extends SchemaLoader
@BeforeClass
public static void loadSchema() throws ConfigurationException
{
- System.setProperty("cassandra.config", "cassandra-murmur.yaml");
+ CASSANDRA_CONFIG.setString("cassandra-murmur.yaml");
SchemaLoader.loadSchema();
SchemaLoader.createKeyspace(KS_NAME,
KeyspaceParams.simpleTransient(1),
diff --git a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
index 6c534cd603..2cef163c7c 100644
--- a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
@@ -69,6 +69,7 @@ import org.apache.cassandra.utils.OutputHandler;
import org.apache.cassandra.utils.TimeUUID;
import static java.util.Collections.singleton;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_LEGACY_SSTABLE_ROOT;
import static org.apache.cassandra.service.ActiveRepairService.NO_PENDING_REPAIR;
import static org.apache.cassandra.service.ActiveRepairService.UNREPAIRED_SSTABLE;
import static org.apache.cassandra.utils.TimeUUID.Generator.nextTimeUUID;
@@ -83,8 +84,6 @@ public class LegacySSTableTest
{
private static final Logger logger = LoggerFactory.getLogger(LegacySSTableTest.class);
- public static final String LEGACY_SSTABLE_PROP = "legacy-sstable-root";
-
public static File LEGACY_SSTABLE_ROOT;
/**
@@ -111,8 +110,8 @@ public class LegacySSTableTest
@BeforeClass
public static void defineSchema() throws ConfigurationException
{
- String scp = System.getProperty(LEGACY_SSTABLE_PROP);
- Assert.assertNotNull("System property " + LEGACY_SSTABLE_PROP + " not set", scp);
+ String scp = TEST_LEGACY_SSTABLE_ROOT.getString();
+ Assert.assertNotNull("System property " + TEST_LEGACY_SSTABLE_ROOT.getKey() + " not set", scp);
LEGACY_SSTABLE_ROOT = new File(scp).toAbsolute();
Assert.assertTrue("System property " + LEGACY_SSTABLE_ROOT + " does not specify a directory", LEGACY_SSTABLE_ROOT.isDirectory());
diff --git a/test/unit/org/apache/cassandra/io/sstable/ScrubTest.java b/test/unit/org/apache/cassandra/io/sstable/ScrubTest.java
index ce3b2c2afa..bb024aaa5c 100644
--- a/test/unit/org/apache/cassandra/io/sstable/ScrubTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/ScrubTest.java
@@ -103,6 +103,8 @@ import static org.apache.cassandra.SchemaLoader.createKeyspace;
import static org.apache.cassandra.SchemaLoader.getCompressionParameters;
import static org.apache.cassandra.SchemaLoader.loadSchema;
import static org.apache.cassandra.SchemaLoader.standardCFMD;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_INVALID_LEGACY_SSTABLE_ROOT;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -116,8 +118,6 @@ public class ScrubTest
{
private final static Logger logger = LoggerFactory.getLogger(ScrubTest.class);
- public static final String INVALID_LEGACY_SSTABLE_ROOT_PROP = "invalid-legacy-sstable-root";
-
public static final String CF = "Standard1";
public static final String COUNTER_CF = "Counter1";
public static final String CF_UUID = "UUIDKeys";
@@ -160,13 +160,13 @@ public class ScrubTest
keyspace = Keyspace.open(ksName);
CompactionManager.instance.disableAutoCompaction();
- System.setProperty(org.apache.cassandra.tools.Util.ALLOW_TOOL_REINIT_FOR_TEST, "true"); // Necessary for testing
+ TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.setBoolean(true);
}
@AfterClass
public static void clearClassEnv()
{
- System.clearProperty(org.apache.cassandra.tools.Util.ALLOW_TOOL_REINIT_FOR_TEST);
+ TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.clearValue();
}
@Test
@@ -860,7 +860,7 @@ public class ScrubTest
ColumnFamilyStore cfs = keyspace.getColumnFamilyStore("cf_with_duplicates_3_0");
- Path legacySSTableRoot = Paths.get(System.getProperty(INVALID_LEGACY_SSTABLE_ROOT_PROP),
+ Path legacySSTableRoot = Paths.get(TEST_INVALID_LEGACY_SSTABLE_ROOT.getString(),
"Keyspace1",
"cf_with_duplicates_3_0");
diff --git a/test/unit/org/apache/cassandra/io/sstable/indexsummary/IndexSummaryTest.java b/test/unit/org/apache/cassandra/io/sstable/indexsummary/IndexSummaryTest.java
index faa14c416d..aea166aa3e 100644
--- a/test/unit/org/apache/cassandra/io/sstable/indexsummary/IndexSummaryTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/indexsummary/IndexSummaryTest.java
@@ -45,6 +45,7 @@ import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.Pair;
+import static org.apache.cassandra.config.CassandraRelevantEnv.CIRCLECI;
import static org.apache.cassandra.io.sstable.Downsampling.BASE_SAMPLING_LEVEL;
import static org.apache.cassandra.io.sstable.indexsummary.IndexSummaryBuilder.downsample;
import static org.apache.cassandra.io.sstable.indexsummary.IndexSummaryBuilder.entriesAtSamplingLevel;
@@ -81,7 +82,7 @@ public class IndexSummaryTest
public void testIndexSummaryKeySizes() throws IOException
{
// On Circle CI we normally don't have enough off-heap memory for this test so ignore it
- Assume.assumeTrue(System.getenv("CIRCLECI") == null);
+ Assume.assumeTrue(CIRCLECI.getString() == null);
testIndexSummaryProperties(32, 100);
testIndexSummaryProperties(64, 100);
@@ -128,7 +129,7 @@ public class IndexSummaryTest
public void testLargeIndexSummary() throws IOException
{
// On Circle CI we normally don't have enough off-heap memory for this test so ignore it
- Assume.assumeTrue(System.getenv("CIRCLECI") == null);
+ Assume.assumeTrue(CIRCLECI.getString() == null);
final int numKeys = 1000000;
final int keySize = 3000;
@@ -162,7 +163,7 @@ public class IndexSummaryTest
public void testLargeIndexSummaryWithExpectedSizeMatching() throws IOException
{
// On Circle CI we normally don't have enough off-heap memory for this test so ignore it
- Assume.assumeTrue(System.getenv("CIRCLECI") == null);
+ Assume.assumeTrue(CIRCLECI.getString() == null);
final int numKeys = 1000000;
final int keySize = 3000;
diff --git a/test/unit/org/apache/cassandra/locator/AlibabaCloudSnitchTest.java b/test/unit/org/apache/cassandra/locator/AlibabaCloudSnitchTest.java
index 04540cfdc5..82108f29c6 100644
--- a/test/unit/org/apache/cassandra/locator/AlibabaCloudSnitchTest.java
+++ b/test/unit/org/apache/cassandra/locator/AlibabaCloudSnitchTest.java
@@ -36,6 +36,7 @@ import org.apache.cassandra.service.StorageService;
import static org.apache.cassandra.ServerTestUtils.cleanup;
import static org.apache.cassandra.ServerTestUtils.mkdirs;
+import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIP_DISABLE_THREAD_VALIDATION;
import static org.junit.Assert.assertEquals;
public class AlibabaCloudSnitchTest
@@ -45,7 +46,7 @@ public class AlibabaCloudSnitchTest
@BeforeClass
public static void setup() throws Exception
{
- System.setProperty(Gossiper.Props.DISABLE_THREAD_VALIDATION, "true");
+ GOSSIP_DISABLE_THREAD_VALIDATION.setBoolean(true);
DatabaseDescriptor.daemonInitialization();
CommitLog.instance.start();
CommitLog.instance.segmentManager.awaitManagementTasksCompletion();
diff --git a/test/unit/org/apache/cassandra/locator/CloudstackSnitchTest.java b/test/unit/org/apache/cassandra/locator/CloudstackSnitchTest.java
index 51e8371882..e167e99ce1 100644
--- a/test/unit/org/apache/cassandra/locator/CloudstackSnitchTest.java
+++ b/test/unit/org/apache/cassandra/locator/CloudstackSnitchTest.java
@@ -37,6 +37,7 @@ import org.apache.cassandra.service.StorageService;
import static org.apache.cassandra.ServerTestUtils.cleanup;
import static org.apache.cassandra.ServerTestUtils.mkdirs;
+import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIP_DISABLE_THREAD_VALIDATION;
import static org.junit.Assert.assertEquals;
public class CloudstackSnitchTest
@@ -46,7 +47,7 @@ public class CloudstackSnitchTest
@BeforeClass
public static void setup() throws Exception
{
- System.setProperty(Gossiper.Props.DISABLE_THREAD_VALIDATION, "true");
+ GOSSIP_DISABLE_THREAD_VALIDATION.setBoolean(true);
DatabaseDescriptor.daemonInitialization();
CommitLog.instance.start();
CommitLog.instance.segmentManager.awaitManagementTasksCompletion();
diff --git a/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java b/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java
index 69c1287918..78c5d40dfc 100644
--- a/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java
+++ b/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java
@@ -42,6 +42,7 @@ import org.apache.cassandra.service.StorageService;
import static org.apache.cassandra.ServerTestUtils.cleanup;
import static org.apache.cassandra.ServerTestUtils.mkdirs;
+import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIP_DISABLE_THREAD_VALIDATION;
import static org.apache.cassandra.locator.Ec2Snitch.EC2_NAMING_LEGACY;
import static org.junit.Assert.assertEquals;
@@ -60,7 +61,7 @@ public class EC2SnitchTest
@BeforeClass
public static void setup() throws Exception
{
- System.setProperty(Gossiper.Props.DISABLE_THREAD_VALIDATION, "true");
+ GOSSIP_DISABLE_THREAD_VALIDATION.setBoolean(true);
DatabaseDescriptor.daemonInitialization();
CommitLog.instance.start();
CommitLog.instance.segmentManager.awaitManagementTasksCompletion();
diff --git a/test/unit/org/apache/cassandra/locator/GoogleCloudSnitchTest.java b/test/unit/org/apache/cassandra/locator/GoogleCloudSnitchTest.java
index 67192bdfa5..1fdfd1cb62 100644
--- a/test/unit/org/apache/cassandra/locator/GoogleCloudSnitchTest.java
+++ b/test/unit/org/apache/cassandra/locator/GoogleCloudSnitchTest.java
@@ -38,6 +38,7 @@ import org.apache.cassandra.service.StorageService;
import static org.apache.cassandra.ServerTestUtils.cleanup;
import static org.apache.cassandra.ServerTestUtils.mkdirs;
+import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIP_DISABLE_THREAD_VALIDATION;
import static org.junit.Assert.assertEquals;
public class GoogleCloudSnitchTest
@@ -47,7 +48,7 @@ public class GoogleCloudSnitchTest
@BeforeClass
public static void setup() throws Exception
{
- System.setProperty(Gossiper.Props.DISABLE_THREAD_VALIDATION, "true");
+ GOSSIP_DISABLE_THREAD_VALIDATION.setBoolean(true);
DatabaseDescriptor.daemonInitialization();
CommitLog.instance.start();
CommitLog.instance.segmentManager.awaitManagementTasksCompletion();
diff --git a/test/unit/org/apache/cassandra/locator/PropertyFileSnitchTest.java b/test/unit/org/apache/cassandra/locator/PropertyFileSnitchTest.java
index 23bcf1bd8a..af9e9704cf 100644
--- a/test/unit/org/apache/cassandra/locator/PropertyFileSnitchTest.java
+++ b/test/unit/org/apache/cassandra/locator/PropertyFileSnitchTest.java
@@ -49,6 +49,7 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
+import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIP_DISABLE_THREAD_VALIDATION;
import static org.junit.Assert.*;
/**
@@ -71,7 +72,7 @@ public class PropertyFileSnitchTest
@Before
public void setup() throws ConfigurationException, IOException
{
- System.setProperty(Gossiper.Props.DISABLE_THREAD_VALIDATION, "true");
+ GOSSIP_DISABLE_THREAD_VALIDATION.setBoolean(true);
String confFile = FBUtilities.resourceToFile(PropertyFileSnitch.SNITCH_PROPERTIES_FILENAME);
effectiveFile = Paths.get(confFile);
backupFile = Paths.get(confFile + ".bak");
diff --git a/test/unit/org/apache/cassandra/metrics/TrieMemtableMetricsTest.java b/test/unit/org/apache/cassandra/metrics/TrieMemtableMetricsTest.java
index b2018498ec..62d8f7c754 100644
--- a/test/unit/org/apache/cassandra/metrics/TrieMemtableMetricsTest.java
+++ b/test/unit/org/apache/cassandra/metrics/TrieMemtableMetricsTest.java
@@ -39,7 +39,6 @@ import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.OverrideConfigurationLoader;
import org.apache.cassandra.db.ColumnFamilyStore;
-import org.apache.cassandra.db.memtable.AbstractShardedMemtable;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.service.EmbeddedCassandraService;
import org.apache.cassandra.service.StorageService;
@@ -47,6 +46,7 @@ import org.jboss.byteman.contrib.bmunit.BMRule;
import org.jboss.byteman.contrib.bmunit.BMRules;
import org.jboss.byteman.contrib.bmunit.BMUnitRunner;
+import static org.apache.cassandra.config.CassandraRelevantProperties.MEMTABLE_SHARD_COUNT;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
@@ -76,7 +76,7 @@ public class TrieMemtableMetricsTest extends SchemaLoader
OverrideConfigurationLoader.override((config) -> {
config.partitioner = "Murmur3Partitioner";
});
- System.setProperty(AbstractShardedMemtable.DEFAULT_SHARD_COUNT_PROPERTY, "" + NUM_SHARDS);
+ MEMTABLE_SHARD_COUNT.setInt(NUM_SHARDS);
SchemaLoader.loadSchema();
diff --git a/test/unit/org/apache/cassandra/net/ConnectionTest.java b/test/unit/org/apache/cassandra/net/ConnectionTest.java
index ec447aad83..a0bd2a56e1 100644
--- a/test/unit/org/apache/cassandra/net/ConnectionTest.java
+++ b/test/unit/org/apache/cassandra/net/ConnectionTest.java
@@ -55,7 +55,6 @@ import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelOutboundHandlerAdapter;
import io.netty.channel.ChannelPromise;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.EncryptionOptions;
import org.apache.cassandra.db.commitlog.CommitLog;
@@ -71,6 +70,7 @@ import org.apache.cassandra.utils.FBUtilities;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.MINUTES;
import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SSL_STORAGE_PORT;
import static org.apache.cassandra.net.MessagingService.VERSION_30;
import static org.apache.cassandra.net.MessagingService.VERSION_3014;
import static org.apache.cassandra.net.MessagingService.VERSION_40;
@@ -573,8 +573,7 @@ public class ConnectionTest
@Test
public void testPendingOutboundConnectionUpdatesMessageVersionOnReconnectAttempt() throws Throwable
{
- final String storagePortProperty = Config.PROPERTY_PREFIX + "ssl_storage_port";
- final String originalStoragePort = System.getProperty(storagePortProperty);
+ final Integer originalStoragePort = SSL_STORAGE_PORT.setInt(7011);
try
{
// Set up an inbound connection listening *only* on the SSL storage port to
@@ -586,7 +585,6 @@ public class ConnectionTest
MessagingService.instance().versions.set(FBUtilities.getBroadcastAddressAndPort(),
MessagingService.VERSION_40);
- System.setProperty(storagePortProperty, "7011");
final InetAddressAndPort legacySSLAddrsAndPort = endpoint.withPort(DatabaseDescriptor.getSSLStoragePort());
InboundConnectionSettings inboundSettings = settings.inbound.apply(new InboundConnectionSettings().withEncryption(encryptionOptions))
.withBindAddress(legacySSLAddrsAndPort)
@@ -654,9 +652,9 @@ public class ConnectionTest
MessagingService.instance().versions.set(FBUtilities.getBroadcastAddressAndPort(),
current_version);
if (originalStoragePort != null)
- System.setProperty(storagePortProperty, originalStoragePort);
+ SSL_STORAGE_PORT.setInt(originalStoragePort);
else
- System.clearProperty(storagePortProperty);
+ SSL_STORAGE_PORT.clearValue();
}
}
diff --git a/test/unit/org/apache/cassandra/net/MessageSerializationPropertyTest.java b/test/unit/org/apache/cassandra/net/MessageSerializationPropertyTest.java
index 5a73cbd22c..4391d241c2 100644
--- a/test/unit/org/apache/cassandra/net/MessageSerializationPropertyTest.java
+++ b/test/unit/org/apache/cassandra/net/MessageSerializationPropertyTest.java
@@ -40,6 +40,9 @@ import org.apache.cassandra.utils.FixedMonotonicClock;
import org.assertj.core.api.Assertions;
import org.mockito.Mockito;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CLOCK_MONOTONIC_APPROX;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CLOCK_MONOTONIC_PRECISE;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION;
import static org.apache.cassandra.net.Message.serializer;
import static org.apache.cassandra.utils.CassandraGenerators.MESSAGE_GEN;
import static org.apache.cassandra.utils.FailingConsumer.orFail;
@@ -50,10 +53,10 @@ public class MessageSerializationPropertyTest implements Serializable
@BeforeClass
public static void beforeClass()
{
- System.setProperty("org.apache.cassandra.disable_mbean_registration", "true");
+ ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION.setBoolean(true);
// message serialization uses the MonotonicClock class for precise and approx timestamps, so mock it out
- System.setProperty("cassandra.monotonic_clock.precise", FixedMonotonicClock.class.getName());
- System.setProperty("cassandra.monotonic_clock.approx", FixedMonotonicClock.class.getName());
+ CLOCK_MONOTONIC_PRECISE.setString(FixedMonotonicClock.class.getName());
+ CLOCK_MONOTONIC_APPROX.setString(FixedMonotonicClock.class.getName());
DatabaseDescriptor.daemonInitialization();
}
diff --git a/test/unit/org/apache/cassandra/schema/RemoveWithoutDroppingTest.java b/test/unit/org/apache/cassandra/schema/RemoveWithoutDroppingTest.java
index fb9a3e13cf..683e52f40f 100644
--- a/test/unit/org/apache/cassandra/schema/RemoveWithoutDroppingTest.java
+++ b/test/unit/org/apache/cassandra/schema/RemoveWithoutDroppingTest.java
@@ -35,6 +35,7 @@ import org.apache.cassandra.io.util.File;
import org.apache.cassandra.schema.SchemaTransformation.SchemaTransformationResult;
import org.mockito.Mockito;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SCHEMA_UPDATE_HANDLER_FACTORY_CLASS;
import static org.apache.cassandra.cql3.QueryProcessor.executeInternal;
import static org.assertj.core.api.Assertions.assertThat;
@@ -49,7 +50,7 @@ public class RemoveWithoutDroppingTest
{
ServerTestUtils.daemonInitialization();
- System.setProperty(SchemaUpdateHandlerFactoryProvider.SUH_FACTORY_CLASS_PROPERTY, TestSchemaUpdateHandlerFactory.class.getName());
+ SCHEMA_UPDATE_HANDLER_FACTORY_CLASS.setString(TestSchemaUpdateHandlerFactory.class.getName());
CQLTester.prepareServer();
Schema.instance.registerListener(listener);
}
diff --git a/test/unit/org/apache/cassandra/security/CustomSslContextFactoryConfigTest.java b/test/unit/org/apache/cassandra/security/CustomSslContextFactoryConfigTest.java
index c1ab4a4a52..f7c391a402 100644
--- a/test/unit/org/apache/cassandra/security/CustomSslContextFactoryConfigTest.java
+++ b/test/unit/org/apache/cassandra/security/CustomSslContextFactoryConfigTest.java
@@ -27,17 +27,19 @@ import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.exceptions.ConfigurationException;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
+
public class CustomSslContextFactoryConfigTest
{
@BeforeClass
public static void setupDatabaseDescriptor()
{
- System.setProperty("cassandra.config", "cassandra-sslcontextfactory.yaml");
+ CASSANDRA_CONFIG.setString("cassandra-sslcontextfactory.yaml");
}
@AfterClass
public static void tearDownDatabaseDescriptor() {
- System.clearProperty("cassandra.config");
+ CASSANDRA_CONFIG.clearValue();
}
@Test
diff --git a/test/unit/org/apache/cassandra/security/CustomSslContextFactoryInvalidConfigTest.java b/test/unit/org/apache/cassandra/security/CustomSslContextFactoryInvalidConfigTest.java
index 79e7d52536..4e99e40fd1 100644
--- a/test/unit/org/apache/cassandra/security/CustomSslContextFactoryInvalidConfigTest.java
+++ b/test/unit/org/apache/cassandra/security/CustomSslContextFactoryInvalidConfigTest.java
@@ -25,17 +25,19 @@ import org.junit.Test;
import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
+
public class CustomSslContextFactoryInvalidConfigTest
{
@BeforeClass
public static void setupDatabaseDescriptor()
{
- System.setProperty("cassandra.config", "cassandra-sslcontextfactory-invalidconfiguration.yaml");
+ CASSANDRA_CONFIG.setString("cassandra-sslcontextfactory-invalidconfiguration.yaml");
}
@AfterClass
public static void tearDownDatabaseDescriptor() {
- System.clearProperty("cassandra.config");
+ CASSANDRA_CONFIG.clearValue();
}
@Test(expected = IllegalArgumentException.class)
diff --git a/test/unit/org/apache/cassandra/security/DefaultSslContextFactoryTest.java b/test/unit/org/apache/cassandra/security/DefaultSslContextFactoryTest.java
index 90eab980e4..d6bd258942 100644
--- a/test/unit/org/apache/cassandra/security/DefaultSslContextFactoryTest.java
+++ b/test/unit/org/apache/cassandra/security/DefaultSslContextFactoryTest.java
@@ -34,6 +34,8 @@ import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.SslProvider;
import org.apache.cassandra.config.EncryptionOptions;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_TCACTIVE_OPENSSL;
+
public class DefaultSslContextFactoryTest
{
private Map<String,Object> commonConfig = new HashMap<>();
@@ -218,12 +220,12 @@ public class DefaultSslContextFactoryTest
public void testDisableOpenSslForInJvmDtests() {
// The configuration name below is hard-coded intentionally to make sure we don't break the contract without
// changing the documentation appropriately
- System.setProperty("cassandra.disable_tcactive_openssl","true");
+ DISABLE_TCACTIVE_OPENSSL.setBoolean(true);
Map<String,Object> config = new HashMap<>();
config.putAll(commonConfig);
DefaultSslContextFactory defaultSslContextFactoryImpl = new DefaultSslContextFactory(config);
Assert.assertEquals(SslProvider.JDK, defaultSslContextFactoryImpl.getSslProvider());
- System.clearProperty("cassandra.disable_tcactive_openssl");
+ DISABLE_TCACTIVE_OPENSSL.clearValue();
}
}
diff --git a/test/unit/org/apache/cassandra/security/FileBasedSslContextFactoryTest.java b/test/unit/org/apache/cassandra/security/FileBasedSslContextFactoryTest.java
index 74811e66b2..5641a17b0a 100644
--- a/test/unit/org/apache/cassandra/security/FileBasedSslContextFactoryTest.java
+++ b/test/unit/org/apache/cassandra/security/FileBasedSslContextFactoryTest.java
@@ -33,6 +33,8 @@ import org.slf4j.LoggerFactory;
import org.apache.cassandra.config.EncryptionOptions;
import org.apache.cassandra.config.ParameterizedClass;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
+
public class FileBasedSslContextFactoryTest
{
private static final Logger logger = LoggerFactory.getLogger(FileBasedSslContextFactoryTest.class);
@@ -42,13 +44,13 @@ public class FileBasedSslContextFactoryTest
@BeforeClass
public static void setupDatabaseDescriptor()
{
- System.setProperty("cassandra.config", "cassandra.yaml");
+ CASSANDRA_CONFIG.reset();
}
@AfterClass
public static void tearDownDatabaseDescriptor()
{
- System.clearProperty("cassandra.config");
+ CASSANDRA_CONFIG.clearValue();
}
@Before
diff --git a/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigTest.java b/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigTest.java
index ab6b00a982..206908dfc6 100644
--- a/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigTest.java
+++ b/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigTest.java
@@ -28,18 +28,20 @@ import org.junit.Test;
import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
+
public class PEMBasedSslContextFactoryConfigTest
{
@BeforeClass
public static void setupDatabaseDescriptor()
{
- System.setProperty("cassandra.config", "cassandra-pem-sslcontextfactory.yaml");
+ CASSANDRA_CONFIG.setString("cassandra-pem-sslcontextfactory.yaml");
}
@AfterClass
public static void tearDownDatabaseDescriptor()
{
- System.clearProperty("cassandra.config");
+ CASSANDRA_CONFIG.clearValue();
}
@Test
diff --git a/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigWithMismatchingPasswordsTest.java b/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigWithMismatchingPasswordsTest.java
index c1e2dbe217..7eadba5a35 100644
--- a/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigWithMismatchingPasswordsTest.java
+++ b/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigWithMismatchingPasswordsTest.java
@@ -29,18 +29,20 @@ import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.exceptions.ConfigurationException;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
+
public class PEMBasedSslContextFactoryConfigWithMismatchingPasswordsTest
{
@BeforeClass
public static void setupDatabaseDescriptor()
{
- System.setProperty("cassandra.config", "cassandra-pem-sslcontextfactory-mismatching-passwords.yaml");
+ CASSANDRA_CONFIG.setString("cassandra-pem-sslcontextfactory-mismatching-passwords.yaml");
}
@AfterClass
public static void tearDownDatabaseDescriptor()
{
- System.clearProperty("cassandra.config");
+ CASSANDRA_CONFIG.clearValue();
}
@Test(expected = ConfigurationException.class)
diff --git a/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigWithUnencryptedKeysTest.java b/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigWithUnencryptedKeysTest.java
index 066de8fea5..2d816ca51b 100644
--- a/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigWithUnencryptedKeysTest.java
+++ b/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryConfigWithUnencryptedKeysTest.java
@@ -28,19 +28,23 @@ import org.junit.Test;
import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_TCACTIVE_OPENSSL;
+
public class PEMBasedSslContextFactoryConfigWithUnencryptedKeysTest
{
@BeforeClass
public static void setupDatabaseDescriptor()
{
- System.setProperty("cassandra.config", "cassandra-pem-sslcontextfactory-unencryptedkeys.yaml");
- System.setProperty("cassandra.disable_tcactive_openssl", "true");
+ CASSANDRA_CONFIG.setString("cassandra-pem-sslcontextfactory-unencryptedkeys.yaml");
+ DISABLE_TCACTIVE_OPENSSL.setBoolean(true);
}
@AfterClass
public static void tearDownDatabaseDescriptor()
{
- System.clearProperty("cassandra.config");
+ CASSANDRA_CONFIG.clearValue();
+ DISABLE_TCACTIVE_OPENSSL.clearValue();
}
@Test
diff --git a/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryInvalidConfigTest.java b/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryInvalidConfigTest.java
index 2281137a92..cd3040b35c 100644
--- a/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryInvalidConfigTest.java
+++ b/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryInvalidConfigTest.java
@@ -29,18 +29,20 @@ import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.exceptions.ConfigurationException;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
+
public class PEMBasedSslContextFactoryInvalidConfigTest
{
@BeforeClass
public static void setupDatabaseDescriptor()
{
- System.setProperty("cassandra.config", "cassandra-pem-sslcontextfactory-invalidconfiguration.yaml");
+ CASSANDRA_CONFIG.setString("cassandra-pem-sslcontextfactory-invalidconfiguration.yaml");
}
@AfterClass
public static void tearDownDatabaseDescriptor()
{
- System.clearProperty("cassandra.config");
+ CASSANDRA_CONFIG.clearValue();
}
@Test(expected = ConfigurationException.class)
diff --git a/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryTest.java b/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryTest.java
index f919a1994e..a0be3918d6 100644
--- a/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryTest.java
+++ b/test/unit/org/apache/cassandra/security/PEMBasedSslContextFactoryTest.java
@@ -36,6 +36,7 @@ import io.netty.handler.ssl.SslProvider;
import org.apache.cassandra.config.EncryptionOptions;
import org.apache.cassandra.config.ParameterizedClass;
+import static org.apache.cassandra.config.CassandraRelevantProperties.DISABLE_TCACTIVE_OPENSSL;
import static org.apache.cassandra.security.PEMBasedSslContextFactory.ConfigKey.ENCODED_CERTIFICATES;
import static org.apache.cassandra.security.PEMBasedSslContextFactory.ConfigKey.ENCODED_KEY;
import static org.apache.cassandra.security.PEMBasedSslContextFactory.ConfigKey.KEY_PASSWORD;
@@ -413,13 +414,13 @@ public class PEMBasedSslContextFactoryTest
{
// The configuration name below is hard-coded intentionally to make sure we don't break the contract without
// changing the documentation appropriately
- System.setProperty("cassandra.disable_tcactive_openssl", "true");
+ DISABLE_TCACTIVE_OPENSSL.setBoolean(true);
Map<String, Object> config = new HashMap<>();
config.putAll(commonConfig);
PEMBasedSslContextFactory sslContextFactory = new PEMBasedSslContextFactory(config);
Assert.assertEquals(SslProvider.JDK, sslContextFactory.getSslProvider());
- System.clearProperty("cassandra.disable_tcactive_openssl");
+ DISABLE_TCACTIVE_OPENSSL.clearValue();
}
@Test(expected = IllegalArgumentException.class)
diff --git a/test/unit/org/apache/cassandra/security/PEMJKSSslContextFactoryConfigTest.java b/test/unit/org/apache/cassandra/security/PEMJKSSslContextFactoryConfigTest.java
index 8efd3e4dee..834fe44b77 100644
--- a/test/unit/org/apache/cassandra/security/PEMJKSSslContextFactoryConfigTest.java
+++ b/test/unit/org/apache/cassandra/security/PEMJKSSslContextFactoryConfigTest.java
@@ -28,17 +28,19 @@ import org.junit.Test;
import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_CONFIG;
+
public class PEMJKSSslContextFactoryConfigTest
{
@BeforeClass
public static void setupDatabaseDescriptor()
{
- System.setProperty("cassandra.config", "cassandra-pem-jks-sslcontextfactory.yaml");
+ CASSANDRA_CONFIG.setString("cassandra-pem-jks-sslcontextfactory.yaml");
}
@AfterClass
public static void tearDownDatabaseDescriptor() {
- System.clearProperty("cassandra.config");
+ CASSANDRA_CONFIG.clearValue();
}
@Test
diff --git a/test/unit/org/apache/cassandra/service/AbstractFilesystemOwnershipCheckTest.java b/test/unit/org/apache/cassandra/service/AbstractFilesystemOwnershipCheckTest.java
index 0fc8559985..607dbd0b61 100644
--- a/test/unit/org/apache/cassandra/service/AbstractFilesystemOwnershipCheckTest.java
+++ b/test/unit/org/apache/cassandra/service/AbstractFilesystemOwnershipCheckTest.java
@@ -205,14 +205,14 @@ public abstract class AbstractFilesystemOwnershipCheckTest
{
// no exceptions thrown from the supplier because the check is skipped
options.enable(check_filesystem_ownership);
- System.setProperty(CassandraRelevantProperties.FILE_SYSTEM_CHECK_ENABLE.getKey(), "false");
+ CassandraRelevantProperties.FILE_SYSTEM_CHECK_ENABLE.setBoolean(false);
AbstractFilesystemOwnershipCheckTest.checker(() -> { throw new RuntimeException("FAIL"); }).execute(options);
}
@Test
public void checkEnabledButClusterPropertyIsEmpty()
{
- System.setProperty(CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN.getKey(), "");
+ CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN.setString("");
AbstractFilesystemOwnershipCheckTest.executeAndFail(AbstractFilesystemOwnershipCheckTest.checker(tempDir), options, MISSING_PROPERTY, CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN.getKey());
}
@@ -220,7 +220,7 @@ public abstract class AbstractFilesystemOwnershipCheckTest
public void checkEnabledButClusterPropertyIsUnset()
{
Assume.assumeFalse(options.getConfig(check_filesystem_ownership).containsKey("ownership_token"));
- System.clearProperty(CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN.getKey());
+ CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN.clearValue();
AbstractFilesystemOwnershipCheckTest.executeAndFail(AbstractFilesystemOwnershipCheckTest.checker(tempDir), options, MISSING_PROPERTY, CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN.getKey());
}
@@ -356,7 +356,7 @@ public abstract class AbstractFilesystemOwnershipCheckTest
File leafDir = AbstractFilesystemOwnershipCheckTest.mkdirs(tempDir, "cassandra/data");
writeFile(leafDir.parent(), "other_file", AbstractFilesystemOwnershipCheckTest.makeProperties(1, 1, token));
AbstractFilesystemOwnershipCheckTest.executeAndFail(AbstractFilesystemOwnershipCheckTest.checker(leafDir), options, NO_OWNERSHIP_FILE, quote(leafDir.absolutePath()));
- System.setProperty(CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_FILENAME.getKey(), "other_file");
+ CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_FILENAME.setString("other_file");
AbstractFilesystemOwnershipCheckTest.checker(leafDir).execute(options);
}
diff --git a/test/unit/org/apache/cassandra/service/ClientStateTest.java b/test/unit/org/apache/cassandra/service/ClientStateTest.java
index 56d0893356..6e8cfd799c 100644
--- a/test/unit/org/apache/cassandra/service/ClientStateTest.java
+++ b/test/unit/org/apache/cassandra/service/ClientStateTest.java
@@ -40,6 +40,7 @@ import org.apache.cassandra.schema.KeyspaceParams;
import org.apache.cassandra.schema.SchemaConstants;
import org.apache.cassandra.schema.TableMetadata;
+import static org.apache.cassandra.config.CassandraRelevantProperties.ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
@@ -48,7 +49,7 @@ public class ClientStateTest
@BeforeClass
public static void beforeClass()
{
- System.setProperty("org.apache.cassandra.disable_mbean_registration", "true");
+ ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION.setBoolean(true);
SchemaLoader.prepareServer();
DatabaseDescriptor.setAuthFromRoot(true);
// create the system_auth keyspace so the IRoleManager can function as normal
@@ -62,7 +63,7 @@ public class ClientStateTest
@AfterClass
public static void afterClass()
{
- System.clearProperty("org.apache.cassandra.disable_mbean_registration");
+ ORG_APACHE_CASSANDRA_DISABLE_MBEAN_REGISTRATION.clearValue();
}
@Test
diff --git a/test/unit/org/apache/cassandra/service/StartupChecksTest.java b/test/unit/org/apache/cassandra/service/StartupChecksTest.java
index 77c72530c4..6502e7d68d 100644
--- a/test/unit/org/apache/cassandra/service/StartupChecksTest.java
+++ b/test/unit/org/apache/cassandra/service/StartupChecksTest.java
@@ -37,6 +37,7 @@ import org.apache.cassandra.service.DataResurrectionCheck.Heartbeat;
import org.apache.cassandra.utils.Clock;
import static java.util.Collections.singletonList;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_INVALID_LEGACY_SSTABLE_ROOT;
import static org.apache.cassandra.io.util.FileUtils.createTempFile;
import static org.apache.cassandra.service.DataResurrectionCheck.HEARTBEAT_FILE_CONFIG_PROPERTY;
import static org.apache.cassandra.service.StartupChecks.StartupCheckType.check_data_resurrection;
@@ -46,7 +47,6 @@ import static org.junit.Assert.fail;
public class StartupChecksTest
{
- public static final String INVALID_LEGACY_SSTABLE_ROOT_PROP = "invalid-legacy-sstable-root";
StartupChecks startupChecks;
Path sstableDir;
static File heartbeatFile;
@@ -168,9 +168,9 @@ public class StartupChecksTest
private void copyLegacyNonSSTableFiles(Path targetDir) throws IOException
{
- Path legacySSTableRoot = Paths.get(System.getProperty(INVALID_LEGACY_SSTABLE_ROOT_PROP),
- "Keyspace1",
- "Standard1");
+ Path legacySSTableRoot = Paths.get(TEST_INVALID_LEGACY_SSTABLE_ROOT.getString(),
+ "Keyspace1",
+ "Standard1");
for (String filename : new String[]{"Keyspace1-Standard1-ic-0-TOC.txt",
"Keyspace1-Standard1-ic-0-Digest.sha1",
"legacyleveled.json"})
@@ -206,9 +206,9 @@ public class StartupChecksTest
private void copyInvalidLegacySSTables(Path targetDir) throws IOException
{
- File legacySSTableRoot = new File(Paths.get(System.getProperty(INVALID_LEGACY_SSTABLE_ROOT_PROP),
- "Keyspace1",
- "Standard1"));
+ File legacySSTableRoot = new File(Paths.get(TEST_INVALID_LEGACY_SSTABLE_ROOT.getString(),
+ "Keyspace1",
+ "Standard1"));
for (File f : legacySSTableRoot.tryList())
Files.copy(f.toPath(), targetDir.resolve(f.name()));
diff --git a/test/unit/org/apache/cassandra/service/StorageServiceServerM3PTest.java b/test/unit/org/apache/cassandra/service/StorageServiceServerM3PTest.java
index bb78c83e86..8c4ab9b869 100644
--- a/test/unit/org/apache/cassandra/service/StorageServiceServerM3PTest.java
+++ b/test/unit/org/apache/cassandra/service/StorageServiceServerM3PTest.java
@@ -26,13 +26,13 @@ import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.Keyspace;
import org.apache.cassandra.db.commitlog.CommitLog;
import org.apache.cassandra.exceptions.ConfigurationException;
-import org.apache.cassandra.gms.Gossiper;
import org.apache.cassandra.io.util.File;
import org.apache.cassandra.locator.IEndpointSnitch;
import org.apache.cassandra.locator.PropertyFileSnitch;
import static org.apache.cassandra.ServerTestUtils.cleanup;
import static org.apache.cassandra.ServerTestUtils.mkdirs;
+import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIP_DISABLE_THREAD_VALIDATION;
import static org.junit.Assert.assertTrue;
public class StorageServiceServerM3PTest
@@ -40,7 +40,7 @@ public class StorageServiceServerM3PTest
@BeforeClass
public static void setUp() throws ConfigurationException
{
- System.setProperty(Gossiper.Props.DISABLE_THREAD_VALIDATION, "true");
+ GOSSIP_DISABLE_THREAD_VALIDATION.setBoolean(true);
DatabaseDescriptor.daemonInitialization();
CommitLog.instance.start();
IEndpointSnitch snitch = new PropertyFileSnitch();
diff --git a/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java b/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java
index 119b8104d4..39f3216303 100644
--- a/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java
+++ b/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java
@@ -55,6 +55,8 @@ import org.assertj.core.api.Assertions;
import static org.apache.cassandra.ServerTestUtils.cleanup;
import static org.apache.cassandra.ServerTestUtils.mkdirs;
+import static org.apache.cassandra.config.CassandraRelevantProperties.GOSSIP_DISABLE_THREAD_VALIDATION;
+import static org.apache.cassandra.config.CassandraRelevantProperties.REPLACE_ADDRESS;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -63,7 +65,7 @@ public class StorageServiceServerTest
@BeforeClass
public static void setUp() throws ConfigurationException
{
- System.setProperty(Gossiper.Props.DISABLE_THREAD_VALIDATION, "true");
+ GOSSIP_DISABLE_THREAD_VALIDATION.setBoolean(true);
DatabaseDescriptor.daemonInitialization();
CommitLog.instance.start();
IEndpointSnitch snitch = new PropertyFileSnitch();
@@ -643,20 +645,20 @@ public class StorageServiceServerTest
Gossiper.instance.initializeNodeUnsafe(FBUtilities.getBroadcastAddressAndPort(), localHostId, 1);
// Check detects replacing the same host address with the same hostid
- System.setProperty("cassandra.replace_address", hostAddress);
+ REPLACE_ADDRESS.setString(hostAddress);
Assert.assertTrue(StorageService.instance.isReplacingSameHostAddressAndHostId(localHostId));
// Check detects replacing the same host address with a different host id
- System.setProperty("cassandra.replace_address", hostAddress);
+ REPLACE_ADDRESS.setString(hostAddress);
Assert.assertFalse(StorageService.instance.isReplacingSameHostAddressAndHostId(differentHostId));
// Check tolerates the DNS entry going away for the replace_address
- System.setProperty("cassandra.replace_address", "unresolvable.host.local.");
+ REPLACE_ADDRESS.setString("unresolvable.host.local.");
Assert.assertFalse(StorageService.instance.isReplacingSameHostAddressAndHostId(differentHostId));
}
finally
{
- System.clearProperty("cassandra.replace_address");
+ REPLACE_ADDRESS.clearValue();
}
}
}
\ No newline at end of file
diff --git a/test/unit/org/apache/cassandra/service/SystemPropertiesBasedFileSystemOwnershipCheckTest.java b/test/unit/org/apache/cassandra/service/SystemPropertiesBasedFileSystemOwnershipCheckTest.java
index cb54f813c0..5101fc9d54 100644
--- a/test/unit/org/apache/cassandra/service/SystemPropertiesBasedFileSystemOwnershipCheckTest.java
+++ b/test/unit/org/apache/cassandra/service/SystemPropertiesBasedFileSystemOwnershipCheckTest.java
@@ -28,7 +28,7 @@ public class SystemPropertiesBasedFileSystemOwnershipCheckTest extends AbstractF
public void setup()
{
super.setup();
- System.setProperty(CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN.getKey(), token);
- System.setProperty(CassandraRelevantProperties.FILE_SYSTEM_CHECK_ENABLE.getKey(), "true");
+ CassandraRelevantProperties.FILE_SYSTEM_CHECK_OWNERSHIP_TOKEN.setString(token);
+ CassandraRelevantProperties.FILE_SYSTEM_CHECK_ENABLE.setBoolean(true);
}
}
\ No newline at end of file
diff --git a/test/unit/org/apache/cassandra/service/paxos/PaxosRepairHistoryTest.java b/test/unit/org/apache/cassandra/service/paxos/PaxosRepairHistoryTest.java
index 387ec653ce..bcd97143d1 100644
--- a/test/unit/org/apache/cassandra/service/paxos/PaxosRepairHistoryTest.java
+++ b/test/unit/org/apache/cassandra/service/paxos/PaxosRepairHistoryTest.java
@@ -48,6 +48,7 @@ import org.apache.cassandra.dht.Token;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.cassandra.config.CassandraRelevantProperties.PARTITIONER;
import static org.apache.cassandra.dht.Range.deoverlap;
import static org.apache.cassandra.service.paxos.Ballot.Flag.NONE;
import static org.apache.cassandra.service.paxos.Ballot.none;
@@ -62,7 +63,7 @@ public class PaxosRepairHistoryTest
private static final AtomicInteger tableNum = new AtomicInteger();
static
{
- System.setProperty("cassandra.partitioner", Murmur3Partitioner.class.getName());
+ PARTITIONER.setString(Murmur3Partitioner.class.getName());
DatabaseDescriptor.daemonInitialization();
assert DatabaseDescriptor.getPartitioner() instanceof Murmur3Partitioner;
}
diff --git a/test/unit/org/apache/cassandra/service/paxos/uncommitted/PaxosStateTrackerTest.java b/test/unit/org/apache/cassandra/service/paxos/uncommitted/PaxosStateTrackerTest.java
index ee0878cef9..2e8668db87 100644
--- a/test/unit/org/apache/cassandra/service/paxos/uncommitted/PaxosStateTrackerTest.java
+++ b/test/unit/org/apache/cassandra/service/paxos/uncommitted/PaxosStateTrackerTest.java
@@ -42,6 +42,7 @@ import org.apache.cassandra.db.rows.Row;
import org.apache.cassandra.dht.IPartitioner;
import org.apache.cassandra.dht.Range;
import org.apache.cassandra.dht.Token;
+import org.apache.cassandra.distributed.shared.WithProperties;
import org.apache.cassandra.io.util.File;
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.schema.ColumnMetadata;
@@ -52,6 +53,7 @@ import org.apache.cassandra.service.paxos.Commit;
import org.apache.cassandra.service.paxos.PaxosRepairHistory;
import org.apache.cassandra.utils.ByteBufferUtil;
+import static org.apache.cassandra.config.CassandraRelevantProperties.FORCE_PAXOS_STATE_REBUILD;
import static org.apache.cassandra.service.paxos.uncommitted.PaxosStateTracker.stateDirectory;
import static org.apache.cassandra.service.paxos.uncommitted.PaxosUncommittedTests.*;
import static org.apache.cassandra.service.paxos.uncommitted.UncommittedTableDataTest.assertIteratorContents;
@@ -94,38 +96,6 @@ public class PaxosStateTrackerTest
directories = new File[]{directory1, directory2};
}
- private static class SystemProp implements AutoCloseable
- {
- private final String prop;
- private final String prev;
-
- public SystemProp(String prop, String prev)
- {
- this.prop = prop;
- this.prev = prev;
- }
-
- public void close()
- {
- if (prev == null)
- System.clearProperty(prop);
- else
- System.setProperty(prop, prev);
- }
-
- public static SystemProp set(String prop, String val)
- {
- String prev = System.getProperty(prop);
- System.setProperty(prop, val);
- return new SystemProp(prop, prev);
- }
-
- public static SystemProp set(String prop, boolean val)
- {
- return set(prop, Boolean.toString(val));
- }
- }
-
private static PartitionUpdate update(TableMetadata cfm, int k, Ballot ballot)
{
ColumnMetadata col = cfm.getColumn(new ColumnIdentifier("v", false));
@@ -206,7 +176,7 @@ public class PaxosStateTrackerTest
SystemKeyspace.savePaxosWritePromise(dk(0), cfm1, ballots[2]);
SystemKeyspace.savePaxosProposal(commit(cfm1, 2, ballots[3]));
- try (SystemProp forceRebuild = SystemProp.set(PaxosStateTracker.FORCE_REBUILD_PROP, true))
+ try (WithProperties with = new WithProperties().set(FORCE_PAXOS_STATE_REBUILD, true))
{
PaxosStateTracker tracker = PaxosStateTracker.create(directories);
Assert.assertTrue(tracker.isRebuildNeeded());
diff --git a/test/unit/org/apache/cassandra/service/reads/range/RangeCommandsTest.java b/test/unit/org/apache/cassandra/service/reads/range/RangeCommandsTest.java
index 259a65f195..2b15ebe5cf 100644
--- a/test/unit/org/apache/cassandra/service/reads/range/RangeCommandsTest.java
+++ b/test/unit/org/apache/cassandra/service/reads/range/RangeCommandsTest.java
@@ -38,6 +38,7 @@ import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.index.StubIndex;
import org.apache.cassandra.schema.IndexMetadata;
+import static org.apache.cassandra.config.CassandraRelevantProperties.MAX_CONCURRENT_RANGE_REQUESTS;
import static org.apache.cassandra.db.ConsistencyLevel.ONE;
import static org.apache.cassandra.utils.Clock.Global.nanoTime;
import static org.junit.Assert.assertEquals;
@@ -52,13 +53,13 @@ public class RangeCommandsTest extends CQLTester
@BeforeClass
public static void defineSchema() throws ConfigurationException
{
- System.setProperty("cassandra.max_concurrent_range_requests", String.valueOf(MAX_CONCURRENCY_FACTOR));
+ MAX_CONCURRENT_RANGE_REQUESTS.setInt(MAX_CONCURRENCY_FACTOR);
}
@AfterClass
public static void cleanup()
{
- System.clearProperty("cassandra.max_concurrent_range_requests");
+ MAX_CONCURRENT_RANGE_REQUESTS.clearValue();
}
@Test
diff --git a/test/unit/org/apache/cassandra/tools/OfflineToolUtils.java b/test/unit/org/apache/cassandra/tools/OfflineToolUtils.java
index 355e48a28c..9a5ae8e8b8 100644
--- a/test/unit/org/apache/cassandra/tools/OfflineToolUtils.java
+++ b/test/unit/org/apache/cassandra/tools/OfflineToolUtils.java
@@ -34,6 +34,7 @@ import java.util.stream.StreamSupport;
import com.google.common.collect.Iterables;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.io.util.File;
import org.apache.commons.io.FileUtils;
@@ -195,7 +196,7 @@ public abstract class OfflineToolUtils
@BeforeClass
public static void setupTester()
{
- System.setProperty("cassandra.partitioner", "org.apache.cassandra.dht.Murmur3Partitioner");
+ CassandraRelevantProperties.PARTITIONER.setString("org.apache.cassandra.dht.Murmur3Partitioner");
// may start an async appender
LoggerFactory.getLogger(OfflineToolUtils.class);
diff --git a/test/unit/org/apache/cassandra/tools/StandaloneSplitterTest.java b/test/unit/org/apache/cassandra/tools/StandaloneSplitterTest.java
index d28558fb63..05e7b34c97 100644
--- a/test/unit/org/apache/cassandra/tools/StandaloneSplitterTest.java
+++ b/test/unit/org/apache/cassandra/tools/StandaloneSplitterTest.java
@@ -25,6 +25,7 @@ import org.apache.commons.lang3.tuple.Pair;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.tools.ToolRunner.ToolResult;
import org.assertj.core.api.Assertions;
import org.hamcrest.CoreMatchers;
@@ -42,7 +43,7 @@ public class StandaloneSplitterTest extends OfflineToolUtils
// the legacy tables use a different partitioner :(
// (Don't use ByteOrderedPartitioner.class.getName() as that would initialize the class and work
// against the goal of this test to check classes and threads initialized by the tool.)
- System.setProperty("cassandra.partitioner", "org.apache.cassandra.dht.ByteOrderedPartitioner");
+ CassandraRelevantProperties.PARTITIONER.setString("org.apache.cassandra.dht.ByteOrderedPartitioner");
}
@Test
diff --git a/test/unit/org/apache/cassandra/tools/StandaloneSplitterWithCQLTesterTest.java b/test/unit/org/apache/cassandra/tools/StandaloneSplitterWithCQLTesterTest.java
index 944b8dece7..40f075aa2d 100644
--- a/test/unit/org/apache/cassandra/tools/StandaloneSplitterWithCQLTesterTest.java
+++ b/test/unit/org/apache/cassandra/tools/StandaloneSplitterWithCQLTesterTest.java
@@ -35,6 +35,7 @@ import org.apache.cassandra.io.sstable.format.SSTableReader;
import org.apache.cassandra.tools.ToolRunner.ToolResult;
import org.assertj.core.api.Assertions;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -124,6 +125,6 @@ public class StandaloneSplitterWithCQLTesterTest extends CQLTester
assertTrue("Generated sstable must be at least 1MiB", (new File(sstableFileName)).length() > 1024*1024);
sstablesDir = new File(sstableFileName).parent();
origSstables = Arrays.asList(sstablesDir.tryList());
- System.setProperty(Util.ALLOW_TOOL_REINIT_FOR_TEST, "true"); // Necessary for testing
+ TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.setBoolean(true);
}
}
diff --git a/test/unit/org/apache/cassandra/tools/StandaloneUpgraderOnSStablesTest.java b/test/unit/org/apache/cassandra/tools/StandaloneUpgraderOnSStablesTest.java
index 180e0239be..709b404d2b 100644
--- a/test/unit/org/apache/cassandra/tools/StandaloneUpgraderOnSStablesTest.java
+++ b/test/unit/org/apache/cassandra/tools/StandaloneUpgraderOnSStablesTest.java
@@ -37,6 +37,7 @@ import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.tools.ToolRunner.ToolResult;
import org.assertj.core.api.Assertions;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST;
import static org.junit.Assert.assertEquals;
/*
@@ -53,13 +54,13 @@ public class StandaloneUpgraderOnSStablesTest
public static void defineSchema() throws ConfigurationException
{
LegacySSTableTest.defineSchema();
- System.setProperty(Util.ALLOW_TOOL_REINIT_FOR_TEST, "true"); // Necessary for testing
+ TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.setBoolean(true);
}
@AfterClass
public static void clearClassEnv()
{
- System.clearProperty(Util.ALLOW_TOOL_REINIT_FOR_TEST);
+ TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.clearValue();
}
@Test
diff --git a/test/unit/org/apache/cassandra/tools/StandaloneVerifierOnSSTablesTest.java b/test/unit/org/apache/cassandra/tools/StandaloneVerifierOnSSTablesTest.java
index 8512abf76c..009f450fc4 100644
--- a/test/unit/org/apache/cassandra/tools/StandaloneVerifierOnSSTablesTest.java
+++ b/test/unit/org/apache/cassandra/tools/StandaloneVerifierOnSSTablesTest.java
@@ -29,6 +29,7 @@ import org.junit.Test;
import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.UpdateBuilder;
+import org.apache.cassandra.config.CassandraRelevantProperties;
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.Keyspace;
import org.apache.cassandra.db.PartitionPosition;
@@ -44,6 +45,7 @@ import org.apache.cassandra.utils.ByteBufferUtil;
import org.assertj.core.api.Assertions;
import static org.apache.cassandra.SchemaLoader.standardCFMD;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST;
import static org.junit.Assert.assertEquals;
/**
@@ -64,8 +66,8 @@ public class StandaloneVerifierOnSSTablesTest extends OfflineToolUtils
{
// since legacy tables test data uses ByteOrderedPartitioner that's what we need
// for the check version to work
- System.setProperty("cassandra.partitioner", "org.apache.cassandra.dht.ByteOrderedPartitioner");
- System.setProperty(Util.ALLOW_TOOL_REINIT_FOR_TEST, "true"); // Necessary for testing`
+ CassandraRelevantProperties.PARTITIONER.setString("org.apache.cassandra.dht.ByteOrderedPartitioner");
+ TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.setBoolean(true);
SchemaLoader.loadSchema();
StorageService.instance.initServer();
}
@@ -74,7 +76,7 @@ public class StandaloneVerifierOnSSTablesTest extends OfflineToolUtils
public static void teardown() throws Exception
{
SchemaLoader.cleanupAndLeaveDirs();
- System.clearProperty(Util.ALLOW_TOOL_REINIT_FOR_TEST);
+ TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.clearValue();
}
@Test
diff --git a/test/unit/org/apache/cassandra/tools/nodetool/ClientStatsTest.java b/test/unit/org/apache/cassandra/tools/nodetool/ClientStatsTest.java
index 5975f66b03..d39fc63694 100644
--- a/test/unit/org/apache/cassandra/tools/nodetool/ClientStatsTest.java
+++ b/test/unit/org/apache/cassandra/tools/nodetool/ClientStatsTest.java
@@ -42,6 +42,7 @@ import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.tools.ToolRunner;
import org.assertj.core.groups.Tuple;
+import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_JMX_LOCAL_PORT;
import static org.assertj.core.api.Assertions.assertThat;
public class ClientStatsTest
@@ -56,7 +57,7 @@ public class ClientStatsTest
{
// Since we run EmbeddedCassandraServer, we need to manually associate JMX address; otherwise it won't start
int jmxPort = CQLTester.getAutomaticallyAllocatedPort(InetAddress.getLoopbackAddress());
- System.setProperty("cassandra.jmx.local.port", String.valueOf(jmxPort));
+ CASSANDRA_JMX_LOCAL_PORT.setInt(jmxPort);
cassandra = ServerTestUtils.startEmbeddedCassandraService();
cluster = Cluster.builder().addContactPoint("127.0.0.1").withPort(DatabaseDescriptor.getNativeTransportPort()).build();
diff --git a/test/unit/org/apache/cassandra/tools/nodetool/ScrubToolTest.java b/test/unit/org/apache/cassandra/tools/nodetool/ScrubToolTest.java
index 7c69839d5f..a007ce711c 100644
--- a/test/unit/org/apache/cassandra/tools/nodetool/ScrubToolTest.java
+++ b/test/unit/org/apache/cassandra/tools/nodetool/ScrubToolTest.java
@@ -49,6 +49,7 @@ import static org.apache.cassandra.SchemaLoader.createKeyspace;
import static org.apache.cassandra.SchemaLoader.getCompressionParameters;
import static org.apache.cassandra.SchemaLoader.loadSchema;
import static org.apache.cassandra.SchemaLoader.standardCFMD;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST;
import static org.apache.cassandra.io.sstable.ScrubTest.CF_INDEX1;
import static org.apache.cassandra.io.sstable.ScrubTest.CF_INDEX1_BYTEORDERED;
import static org.apache.cassandra.io.sstable.ScrubTest.CF_INDEX2;
@@ -92,7 +93,7 @@ public class ScrubToolTest
keyspace = Keyspace.open(ksName);
CompactionManager.instance.disableAutoCompaction();
- System.setProperty(org.apache.cassandra.tools.Util.ALLOW_TOOL_REINIT_FOR_TEST, "true"); // Necessary for testing
+ TEST_UTIL_ALLOW_TOOL_REINIT_FOR_TEST.setBoolean(true);
}
@Test
diff --git a/test/unit/org/apache/cassandra/transport/CQLUserAuditTest.java b/test/unit/org/apache/cassandra/transport/CQLUserAuditTest.java
index 120de2a336..8bc9f28dd2 100644
--- a/test/unit/org/apache/cassandra/transport/CQLUserAuditTest.java
+++ b/test/unit/org/apache/cassandra/transport/CQLUserAuditTest.java
@@ -49,6 +49,7 @@ import org.apache.cassandra.diag.DiagnosticEventService;
import org.apache.cassandra.locator.InetAddressAndPort;
import org.apache.cassandra.service.EmbeddedCassandraService;
+import static org.apache.cassandra.config.CassandraRelevantProperties.SUPERUSER_SETUP_DELAY_MS;
import static org.apache.cassandra.utils.concurrent.BlockingQueues.newBlockingQueue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -70,7 +71,7 @@ public class CQLUserAuditTest
config.audit_logging_options.logger = new ParameterizedClass("DiagnosticEventAuditLogger", null);
});
- System.setProperty("cassandra.superuser_setup_delay_ms", "0");
+ SUPERUSER_SETUP_DELAY_MS.setLong(0);
embedded = ServerTestUtils.startEmbeddedCassandraService();
diff --git a/test/unit/org/apache/cassandra/utils/Generators.java b/test/unit/org/apache/cassandra/utils/Generators.java
index e25f9c0fe3..1baa16e32c 100644
--- a/test/unit/org/apache/cassandra/utils/Generators.java
+++ b/test/unit/org/apache/cassandra/utils/Generators.java
@@ -39,6 +39,8 @@ import org.quicktheories.core.RandomnessSource;
import org.quicktheories.generators.SourceDSL;
import org.quicktheories.impl.Constraint;
+import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_BLOB_SHARED_SEED;
+
public final class Generators
{
private static final Logger logger = LoggerFactory.getLogger(Generators.class);
@@ -379,7 +381,7 @@ public final class Generators
static
{
- long blobSeed = Long.parseLong(System.getProperty("cassandra.test.blob.shared.seed", Long.toString(System.currentTimeMillis())));
+ long blobSeed = TEST_BLOB_SHARED_SEED.getLong(System.currentTimeMillis());
logger.info("Shared blob Gen used seed {}", blobSeed);
Random random = new Random(blobSeed);
diff --git a/test/unit/org/apache/cassandra/utils/btree/BTreeRemovalTest.java b/test/unit/org/apache/cassandra/utils/btree/BTreeRemovalTest.java
index 76e7098d86..e764b3f9a1 100644
--- a/test/unit/org/apache/cassandra/utils/btree/BTreeRemovalTest.java
+++ b/test/unit/org/apache/cassandra/utils/btree/BTreeRemovalTest.java
@@ -17,6 +17,7 @@
*/
package org.apache.cassandra.utils.btree;
+import static org.apache.cassandra.config.CassandraRelevantProperties.BTREE_BRANCH_SHIFT;
import static org.apache.cassandra.utils.btree.BTreeRemoval.remove;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
@@ -37,7 +38,7 @@ public class BTreeRemovalTest
{
static
{
- System.setProperty("cassandra.btree.branchshift", "3");
+ BTREE_BRANCH_SHIFT.setInt(3);
}
private static final Comparator<Integer> CMP = new Comparator<Integer>()
diff --git a/test/unit/org/apache/cassandra/utils/btree/BTreeTest.java b/test/unit/org/apache/cassandra/utils/btree/BTreeTest.java
index eba2adc921..004dfe073d 100644
--- a/test/unit/org/apache/cassandra/utils/btree/BTreeTest.java
+++ b/test/unit/org/apache/cassandra/utils/btree/BTreeTest.java
@@ -25,6 +25,7 @@ import org.junit.Test;
import org.junit.Assert;
+import static org.apache.cassandra.config.CassandraRelevantProperties.BTREE_BRANCH_SHIFT;
import static org.junit.Assert.*;
public class BTreeTest
@@ -32,7 +33,7 @@ public class BTreeTest
static Integer[] ints = new Integer[20];
static
{
- System.setProperty("cassandra.btree.branchshift", "2");
+ BTREE_BRANCH_SHIFT.setInt(2);
for (int i = 0 ; i < ints.length ; i++)
ints[i] = Integer.valueOf(i);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org