You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sn...@apache.org on 2016/08/27 07:59:50 UTC
cassandra git commit: Replace Config.setClientMode with
DatabaseDescriptor.clientInit()
Repository: cassandra
Updated Branches:
refs/heads/trunk a8743c6e3 -> 29239c765
Replace Config.setClientMode with DatabaseDescriptor.clientInit()
patch by Robert Stupp; reviewed by Jeremiah Jordan for CASSANDRA-12550
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/29239c76
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/29239c76
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/29239c76
Branch: refs/heads/trunk
Commit: 29239c765c22a7c1cb3a64476ebf0dfa9e2f9da0
Parents: a8743c6
Author: Robert Stupp <sn...@snazy.de>
Authored: Sat Aug 27 09:59:11 2016 +0200
Committer: Robert Stupp <sn...@snazy.de>
Committed: Sat Aug 27 09:59:11 2016 +0200
----------------------------------------------------------------------
CHANGES.txt | 2 +-
NEWS.txt | 3 +-
.../org/apache/cassandra/config/Config.java | 27 ++----
.../cassandra/config/DatabaseDescriptor.java | 88 ++++++++++++++++++--
.../org/apache/cassandra/config/Schema.java | 2 +-
src/java/org/apache/cassandra/db/Keyspace.java | 2 +-
.../cassandra/io/sstable/CQLSSTableWriter.java | 2 +-
.../io/sstable/format/SSTableReader.java | 4 +-
.../locator/DynamicEndpointSnitch.java | 7 +-
.../apache/cassandra/service/ClientState.java | 3 +-
.../io/sstable/CQLSSTableWriterLongTest.java | 6 --
.../cassandra/streaming/LongStreamingTest.java | 6 --
.../test/microbench/MutationBench.java | 2 +-
.../io/sstable/CQLSSTableWriterClientTest.java | 18 ++--
.../io/sstable/CQLSSTableWriterTest.java | 6 --
15 files changed, 105 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index b3975da..3dd46de 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -9,7 +9,7 @@
* Extend read/write failure messages with a map of replica addresses
to error codes in the v5 native protocol (CASSANDRA-12311)
* Fix rebuild of SASI indexes with existing index files (CASSANDRA-12374)
- * Let DatabaseDescriptor not implicitly startup services (CASSANDRA-9054)
+ * Let DatabaseDescriptor not implicitly startup services (CASSANDRA-9054, 12550)
* Fix clustering indexes in presence of static columns in SASI (CASSANDRA-12378)
* Fix queries on columns with reversed type on SASI indexes (CASSANDRA-12223)
* Added slow query log (CASSANDRA-12403)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/NEWS.txt
----------------------------------------------------------------------
diff --git a/NEWS.txt b/NEWS.txt
index a22fdd8..bb21c3c 100644
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -87,7 +87,8 @@ Upgrading
a standalone tool or client application, use the DatabaseDescriptor.toolInitialization() or
DatabaseDescriptor.clientInitialization() methods. Tool initialization sets up partitioner,
snitch, encryption context. Client initialization just applies the configuration but does not
- setup anything.
+ setup anything. Instead of using Config.setClientMode() or Config.isClientMode(), which are
+ deprecated now, use one of the appropiate new methods in DatabaseDescriptor.
3.8
===
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/src/java/org/apache/cassandra/config/Config.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java
index 7248031..87f664d 100644
--- a/src/java/org/apache/cassandra/config/Config.java
+++ b/src/java/org/apache/cassandra/config/Config.java
@@ -257,7 +257,6 @@ public class Config
public volatile int counter_cache_keys_to_save = Integer.MAX_VALUE;
private static boolean isClientMode = false;
- private static boolean isToolsMode = false;
public Integer file_cache_size_in_mb;
@@ -360,6 +359,10 @@ public class Config
outboundBindAny = value;
}
+ /**
+ * @deprecated migrate to {@link DatabaseDescriptor#isClientInitialized()}
+ */
+ @Deprecated
public static boolean isClientMode()
{
return isClientMode;
@@ -368,31 +371,15 @@ public class Config
/**
* Client mode means that the process is a pure client, that uses C* code base but does
* not read or write local C* database files.
+ *
+ * @deprecated migrate to {@link DatabaseDescriptor#clientInitialization(boolean)}
*/
+ @Deprecated
public static void setClientMode(boolean clientMode)
{
isClientMode = clientMode;
}
- public static boolean isToolsMode()
- {
- return isToolsMode;
- }
-
- /**
- * Tools mode means that the process is a standalone (offline) C* tool that may (or may not)
- * read or write local C* database files.
- */
- public static void setToolsMode(boolean toolsMode)
- {
- isToolsMode = toolsMode;
- }
-
- public static boolean isClientOrToolsMode()
- {
- return isClientMode() || isToolsMode();
- }
-
public enum CommitLogSync
{
periodic,
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index 8b33242..8e45731 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -118,8 +118,10 @@ public class DatabaseDescriptor
public static void daemonInitialization() throws ConfigurationException
{
- assert !toolInitialized;
- assert !clientInitialized;
+ if (toolInitialized)
+ throw new AssertionError("toolInitialization() already called");
+ if (clientInitialized)
+ throw new AssertionError("clientInitialization() already called");
// Some unit tests require this :(
if (daemonInitialized)
@@ -131,17 +133,40 @@ public class DatabaseDescriptor
AuthConfig.applyAuth();
}
+ /**
+ * Equivalent to {@link #toolInitialization(boolean) toolInitialization(true)}.
+ */
public static void toolInitialization()
{
- assert !daemonInitialized;
- assert !clientInitialized;
+ toolInitialization(true);
+ }
+
+ /**
+ * Initializes this class as a tool, which means that the configuration is loaded
+ * using {@link #loadConfig()} and all non-daemon configuration parts will be setup.
+ *
+ * @param failIfDaemonOrClient if {@code true} and a call to {@link #daemonInitialization()} or
+ * {@link #clientInitialization()} has been performed before, an
+ * {@link AssertionError} will be thrown.
+ */
+ public static void toolInitialization(boolean failIfDaemonOrClient)
+ {
+ if (!failIfDaemonOrClient && (daemonInitialized || clientInitialized))
+ {
+ return;
+ }
+ else
+ {
+ if (daemonInitialized)
+ throw new AssertionError("daemonInitialization() already called");
+ if (clientInitialized)
+ throw new AssertionError("clientInitialization() already called");
+ }
if (toolInitialized)
return;
toolInitialized = true;
- Config.setToolsMode(true);
-
setConfig(loadConfig());
applySimpleConfig();
@@ -153,10 +178,35 @@ public class DatabaseDescriptor
applyEncryptionContext();
}
+ /**
+ * Equivalent to {@link #clientInitialization(boolean) clientInitialization(true)}.
+ */
public static void clientInitialization()
{
- assert !daemonInitialized;
- assert !toolInitialized;
+ clientInitialization(true);
+ }
+
+ /**
+ * Initializes this class as a client, which means that just an empty configuration will
+ * be used.
+ *
+ * @param failIfDaemonOrTool if {@code true} and a call to {@link #daemonInitialization()} or
+ * {@link #toolInitialization()} has been performed before, an
+ * {@link AssertionError} will be thrown.
+ */
+ public static void clientInitialization(boolean failIfDaemonOrTool)
+ {
+ if (!failIfDaemonOrTool && (daemonInitialized || toolInitialized))
+ {
+ return;
+ }
+ else
+ {
+ if (daemonInitialized)
+ throw new AssertionError("daemonInitialization() already called");
+ if (toolInitialized)
+ throw new AssertionError("toolInitialization() already called");
+ }
if (clientInitialized)
return;
@@ -166,6 +216,26 @@ public class DatabaseDescriptor
conf = new Config();
}
+ public static boolean isClientInitialized()
+ {
+ return clientInitialized;
+ }
+
+ public static boolean isToolInitialized()
+ {
+ return toolInitialized;
+ }
+
+ public static boolean isClientOrToolInitialized()
+ {
+ return clientInitialized || toolInitialized;
+ }
+
+ public static boolean isDaemonInitialized()
+ {
+ return daemonInitialized;
+ }
+
public static Config getRawConfig()
{
return conf;
@@ -1916,7 +1986,7 @@ public class DatabaseDescriptor
if (conf.file_cache_size_in_mb == null)
{
// In client mode the value is not set.
- assert Config.isClientMode();
+ assert DatabaseDescriptor.isClientInitialized();
return 0;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/src/java/org/apache/cassandra/config/Schema.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/Schema.java b/src/java/org/apache/cassandra/config/Schema.java
index eed316b..d01d862 100644
--- a/src/java/org/apache/cassandra/config/Schema.java
+++ b/src/java/org/apache/cassandra/config/Schema.java
@@ -64,7 +64,7 @@ public class Schema
*/
public Schema()
{
- if (!Config.isClientMode())
+ if (DatabaseDescriptor.isDaemonInitialized() || DatabaseDescriptor.isToolInitialized())
{
load(SchemaKeyspace.metadata());
load(SystemKeyspace.metadata());
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/src/java/org/apache/cassandra/db/Keyspace.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Keyspace.java b/src/java/org/apache/cassandra/db/Keyspace.java
index 741058f..9e998e6 100644
--- a/src/java/org/apache/cassandra/db/Keyspace.java
+++ b/src/java/org/apache/cassandra/db/Keyspace.java
@@ -68,7 +68,7 @@ public class Keyspace
// proper directories here as well as in CassandraDaemon.
static
{
- if (!Config.isClientMode())
+ if (DatabaseDescriptor.isDaemonInitialized() || DatabaseDescriptor.isToolInitialized())
DatabaseDescriptor.createAllDirectories();
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java b/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
index a6805df..b02e29f 100644
--- a/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
@@ -102,7 +102,7 @@ public class CQLSSTableWriter implements Closeable
static
{
- Config.setClientMode(true);
+ DatabaseDescriptor.clientInitialization(false);
// Partitioner is not set in client mode.
if (DatabaseDescriptor.getPartitioner() == null)
DatabaseDescriptor.setPartitionerUnsafe(Murmur3Partitioner.instance);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java b/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
index 6c2243b..d2c83bf 100644
--- a/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
@@ -140,7 +140,7 @@ public abstract class SSTableReader extends SSTable implements SelfRefCounted<SS
private static final ScheduledThreadPoolExecutor syncExecutor = initSyncExecutor();
private static ScheduledThreadPoolExecutor initSyncExecutor()
{
- if (Config.isClientOrToolsMode())
+ if (DatabaseDescriptor.isClientOrToolInitialized())
return null;
// Do NOT start this thread pool in client mode
@@ -2214,7 +2214,7 @@ public abstract class SSTableReader extends SSTable implements SelfRefCounted<SS
// Don't track read rates for tables in the system keyspace and don't bother trying to load or persist
// the read meter when in client mode.
// Also, do not track read rates when running in client or tools mode (syncExecuter isn't available in these modes)
- if (SchemaConstants.isSystemKeyspace(desc.ksname) || Config.isClientOrToolsMode())
+ if (SchemaConstants.isSystemKeyspace(desc.ksname) || DatabaseDescriptor.isClientOrToolInitialized())
{
readMeter = null;
readMeterSyncFuture = NULL;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java b/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
index ba587f3..247d550 100644
--- a/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
+++ b/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
@@ -31,7 +31,6 @@ import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.apache.cassandra.concurrent.ScheduledExecutors;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.gms.ApplicationState;
import org.apache.cassandra.gms.EndpointState;
@@ -102,7 +101,7 @@ public class DynamicEndpointSnitch extends AbstractEndpointSnitch implements ILa
}
};
- if (!Config.isClientOrToolsMode())
+ if (DatabaseDescriptor.isDaemonInitialized())
{
updateSchedular = ScheduledExecutors.scheduledTasks.scheduleWithFixedDelay(update, dynamicUpdateInterval, dynamicUpdateInterval, TimeUnit.MILLISECONDS);
resetSchedular = ScheduledExecutors.scheduledTasks.scheduleWithFixedDelay(reset, dynamicResetInterval, dynamicResetInterval, TimeUnit.MILLISECONDS);
@@ -119,7 +118,7 @@ public class DynamicEndpointSnitch extends AbstractEndpointSnitch implements ILa
if (dynamicUpdateInterval != DatabaseDescriptor.getDynamicUpdateInterval())
{
dynamicUpdateInterval = DatabaseDescriptor.getDynamicUpdateInterval();
- if (!Config.isClientOrToolsMode())
+ if (DatabaseDescriptor.isDaemonInitialized())
{
updateSchedular.cancel(false);
updateSchedular = ScheduledExecutors.scheduledTasks.scheduleWithFixedDelay(update, dynamicUpdateInterval, dynamicUpdateInterval, TimeUnit.MILLISECONDS);
@@ -129,7 +128,7 @@ public class DynamicEndpointSnitch extends AbstractEndpointSnitch implements ILa
if (dynamicResetInterval != DatabaseDescriptor.getDynamicResetInterval())
{
dynamicResetInterval = DatabaseDescriptor.getDynamicResetInterval();
- if (!Config.isClientOrToolsMode())
+ if (DatabaseDescriptor.isDaemonInitialized())
{
resetSchedular.cancel(false);
resetSchedular = ScheduledExecutors.scheduledTasks.scheduleWithFixedDelay(reset, dynamicResetInterval, dynamicResetInterval, TimeUnit.MILLISECONDS);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/src/java/org/apache/cassandra/service/ClientState.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/ClientState.java b/src/java/org/apache/cassandra/service/ClientState.java
index b109b67..5f01702 100644
--- a/src/java/org/apache/cassandra/service/ClientState.java
+++ b/src/java/org/apache/cassandra/service/ClientState.java
@@ -28,7 +28,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.auth.*;
-import org.apache.cassandra.config.Config;
import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.Schema;
@@ -68,7 +67,7 @@ public class ClientState
SchemaKeyspace.ALL.forEach(table -> READABLE_SYSTEM_RESOURCES.add(DataResource.table(SchemaConstants.SCHEMA_KEYSPACE_NAME, table)));
// neither clients nor tools need authentication/authorization
- if (!Config.isClientOrToolsMode())
+ if (DatabaseDescriptor.isDaemonInitialized())
{
PROTECTED_AUTH_RESOURCES.addAll(DatabaseDescriptor.getAuthenticator().protectedResources());
PROTECTED_AUTH_RESOURCES.addAll(DatabaseDescriptor.getAuthorizer().protectedResources());
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/test/long/org/apache/cassandra/io/sstable/CQLSSTableWriterLongTest.java
----------------------------------------------------------------------
diff --git a/test/long/org/apache/cassandra/io/sstable/CQLSSTableWriterLongTest.java b/test/long/org/apache/cassandra/io/sstable/CQLSSTableWriterLongTest.java
index b48336f..9674ca3 100644
--- a/test/long/org/apache/cassandra/io/sstable/CQLSSTableWriterLongTest.java
+++ b/test/long/org/apache/cassandra/io/sstable/CQLSSTableWriterLongTest.java
@@ -41,12 +41,6 @@ public class CQLSSTableWriterLongTest
StorageService.instance.initServer();
}
- @AfterClass
- public static void tearDown()
- {
- Config.setClientMode(false);
- }
-
@Test
public void testWideRow() throws Exception
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/test/long/org/apache/cassandra/streaming/LongStreamingTest.java
----------------------------------------------------------------------
diff --git a/test/long/org/apache/cassandra/streaming/LongStreamingTest.java b/test/long/org/apache/cassandra/streaming/LongStreamingTest.java
index 3d6f7ae..51b049d 100644
--- a/test/long/org/apache/cassandra/streaming/LongStreamingTest.java
+++ b/test/long/org/apache/cassandra/streaming/LongStreamingTest.java
@@ -63,12 +63,6 @@ public class LongStreamingTest
StorageService.instance.setInterDCStreamThroughputMbPerSec(0);
}
- @AfterClass
- public static void tearDown()
- {
- Config.setClientMode(false);
- }
-
@Test
public void testCompressedStream() throws InvalidRequestException, IOException, ExecutionException, InterruptedException
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/test/microbench/org/apache/cassandra/test/microbench/MutationBench.java
----------------------------------------------------------------------
diff --git a/test/microbench/org/apache/cassandra/test/microbench/MutationBench.java b/test/microbench/org/apache/cassandra/test/microbench/MutationBench.java
index 89dcb0f..8c177cf 100644
--- a/test/microbench/org/apache/cassandra/test/microbench/MutationBench.java
+++ b/test/microbench/org/apache/cassandra/test/microbench/MutationBench.java
@@ -64,7 +64,7 @@ public class MutationBench
{
static
{
- Config.setClientMode(true);
+ DatabaseDescriptor.clientInitialization(false);
// Partitioner is not set in client mode.
if (DatabaseDescriptor.getPartitioner() == null)
DatabaseDescriptor.setPartitionerUnsafe(Murmur3Partitioner.instance);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterClientTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterClientTest.java b/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterClientTest.java
index 7fed8b1..9502dfa 100644
--- a/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterClientTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterClientTest.java
@@ -47,18 +47,6 @@ public class CQLSSTableWriterClientTest
DatabaseDescriptor.daemonInitialization();
}
- @After
- public void tearDown()
- {
- FileUtils.deleteRecursive(this.testDirectory);
- }
-
- @AfterClass
- public static void cleanup() throws Exception
- {
- Config.setClientMode(false);
- }
-
@Test
public void testWriterInClientMode() throws IOException, InvalidRequestException
{
@@ -95,4 +83,10 @@ public class CQLSSTableWriterClientTest
writer.getInnermostDirectory().listFiles(filter));
assertEquals(2, dataFiles.length);
}
+
+ @After
+ public void tearDown()
+ {
+ FileUtils.deleteRecursive(this.testDirectory);
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/29239c76/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java b/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java
index 56409c4..56e62ee 100644
--- a/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java
@@ -67,12 +67,6 @@ public class CQLSSTableWriterTest
StorageService.instance.initServer();
}
- @AfterClass
- public static void tearDown() throws Exception
- {
- Config.setClientMode(false);
- }
-
@Test
public void testUnsortedWriter() throws Exception
{