add asserts to make sure we don't call KS.open during startup patch by Benedict Elliott Smith; reviewed by jbellis
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5ab1a341 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5ab1a341 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5ab1a341 Branch: refs/heads/cassandra-2.1 Commit: 5ab1a341a47d43f74398443f1ec1c17edb95e550 Parents: 8e69ace Author: Jonathan Ellis <[email protected]> Authored: Wed Apr 2 14:35:54 2014 -0500 Committer: Jonathan Ellis <[email protected]> Committed: Wed Apr 2 14:43:15 2014 -0500 ---------------------------------------------------------------------- src/java/org/apache/cassandra/db/Keyspace.java | 8 ++++++++ .../cassandra/service/CassandraDaemon.java | 6 +++--- test/unit/org/apache/cassandra/SchemaLoader.java | 7 ++++--- .../cassandra/config/DatabaseDescriptorTest.java | 13 +++++++++---- .../io/sstable/CQLSSTableWriterTest.java | 10 +++++++--- .../cassandra/io/sstable/LegacySSTableTest.java | 19 ++++++++++++++----- .../cassandra/io/sstable/SSTableLoaderTest.java | 1 + .../apache/cassandra/locator/EC2SnitchTest.java | 12 +++++++----- .../service/StorageServiceServerTest.java | 1 + 9 files changed, 54 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5ab1a341/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 d6746da..c0a8690 100644 --- a/src/java/org/apache/cassandra/db/Keyspace.java +++ b/src/java/org/apache/cassandra/db/Keyspace.java @@ -83,13 +83,21 @@ public class Keyspace } }; + private static volatile boolean initialized = false; + public static void setInitialized() + { + initialized = true; + } + public static Keyspace open(String keyspaceName) { + assert initialized || keyspaceName.equals(SYSTEM_KS); return open(keyspaceName, Schema.instance, true); } public static Keyspace openWithoutSSTables(String keyspaceName) { + assert initialized || keyspaceName.equals(SYSTEM_KS); return open(keyspaceName, Schema.instance, false); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/5ab1a341/src/java/org/apache/cassandra/service/CassandraDaemon.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java b/src/java/org/apache/cassandra/service/CassandraDaemon.java index 7259a17..7171b68 100644 --- a/src/java/org/apache/cassandra/service/CassandraDaemon.java +++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java @@ -31,14 +31,12 @@ import javax.management.MBeanServer; import javax.management.ObjectName; import javax.management.StandardMBean; -import com.addthis.metrics.reporter.config.ReporterConfig; import com.google.common.collect.Iterables; import com.google.common.util.concurrent.Uninterruptibles; - -import org.apache.cassandra.io.sstable.CorruptSSTableException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.addthis.metrics.reporter.config.ReporterConfig; import org.apache.cassandra.concurrent.JMXEnabledThreadPoolExecutor; import org.apache.cassandra.concurrent.Stage; import org.apache.cassandra.concurrent.StageManager; @@ -53,6 +51,7 @@ import org.apache.cassandra.db.commitlog.CommitLog; import org.apache.cassandra.db.compaction.CompactionManager; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.io.FSError; +import org.apache.cassandra.io.sstable.CorruptSSTableException; import org.apache.cassandra.io.util.FileUtils; import org.apache.cassandra.metrics.StorageMetrics; import org.apache.cassandra.thrift.ThriftServer; @@ -258,6 +257,7 @@ public class CassandraDaemon ColumnFamilyStore.scrubDataDirectories(cfm); } + Keyspace.setInitialized(); // initialize keyspaces for (String keyspaceName : Schema.instance.getKeyspaces()) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/5ab1a341/test/unit/org/apache/cassandra/SchemaLoader.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/SchemaLoader.java b/test/unit/org/apache/cassandra/SchemaLoader.java index 43a6dc3..943cf96 100644 --- a/test/unit/org/apache/cassandra/SchemaLoader.java +++ b/test/unit/org/apache/cassandra/SchemaLoader.java @@ -21,19 +21,19 @@ import java.io.File; import java.nio.ByteBuffer; import java.util.*; -import org.apache.cassandra.cache.CachingOptions; -import org.apache.cassandra.db.index.PerRowSecondaryIndexTest; -import org.apache.cassandra.db.index.SecondaryIndex; import org.junit.AfterClass; import org.junit.BeforeClass; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.cassandra.cache.CachingOptions; import org.apache.cassandra.config.*; import org.apache.cassandra.cql3.ColumnIdentifier; import org.apache.cassandra.db.*; import org.apache.cassandra.db.commitlog.CommitLog; import org.apache.cassandra.db.compaction.LeveledCompactionStrategy; +import org.apache.cassandra.db.index.PerRowSecondaryIndexTest; +import org.apache.cassandra.db.index.SecondaryIndex; import org.apache.cassandra.db.marshal.*; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.gms.Gossiper; @@ -65,6 +65,7 @@ public class SchemaLoader } }); + Keyspace.setInitialized(); // Migrations aren't happy if gossiper is not started. Even if we don't use migrations though, // some tests now expect us to start gossip for them. startGossiper(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/5ab1a341/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java b/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java index b954f39..f6d4ad4 100644 --- a/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java +++ b/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java @@ -18,18 +18,21 @@ */ package org.apache.cassandra.config; +import org.junit.Test; +import org.junit.runner.RunWith; + import org.apache.cassandra.OrderedJUnit4ClassRunner; import org.apache.cassandra.SchemaLoader; +import org.apache.cassandra.db.Keyspace; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.exceptions.InvalidRequestException; import org.apache.cassandra.gms.Gossiper; import org.apache.cassandra.locator.SimpleStrategy; import org.apache.cassandra.service.MigrationManager; -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; @RunWith(OrderedJUnit4ClassRunner.class) public class DatabaseDescriptorTest @@ -70,6 +73,7 @@ public class DatabaseDescriptorTest assertEquals(0, Schema.instance.getNonSystemKeyspaces().size()); Gossiper.instance.start((int)(System.currentTimeMillis() / 1000)); + Keyspace.setInitialized(); try { @@ -103,6 +107,7 @@ public class DatabaseDescriptorTest // By default, we should load from the yaml Config config = DatabaseDescriptor.loadConfig(); assertEquals("Test Cluster", config.cluster_name); + Keyspace.setInitialized(); // Now try custom loader ConfigurationLoader testLoader = new TestLoader(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/5ab1a341/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 73ff21c..c35a1df 100644 --- a/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/CQLSSTableWriterTest.java @@ -24,23 +24,27 @@ import com.google.common.collect.ImmutableMap; import com.google.common.io.Files; import org.junit.BeforeClass; import org.junit.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.Schema; -import org.apache.cassandra.cql3.*; +import org.apache.cassandra.cql3.QueryProcessor; +import org.apache.cassandra.cql3.UntypedResultSet; +import org.apache.cassandra.db.Keyspace; import org.apache.cassandra.dht.Range; import org.apache.cassandra.dht.Token; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.FBUtilities; import org.apache.cassandra.utils.OutputHandler; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + public class CQLSSTableWriterTest { @BeforeClass public static void setup() throws Exception { + Keyspace.setInitialized(); StorageService.instance.initServer(); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/5ab1a341/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java index c0c9d41..e26d0f5 100644 --- a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java @@ -21,11 +21,21 @@ package org.apache.cassandra.io.sstable; import java.io.File; import java.nio.ByteBuffer; -import java.util.*; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.junit.BeforeClass; +import org.junit.Test; import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.Util; -import org.apache.cassandra.db.*; +import org.apache.cassandra.db.ColumnFamily; +import org.apache.cassandra.db.ColumnFamilyStore; +import org.apache.cassandra.db.DecoratedKey; +import org.apache.cassandra.db.DeletionInfo; +import org.apache.cassandra.db.Keyspace; import org.apache.cassandra.db.columniterator.SSTableNamesIterator; import org.apache.cassandra.db.composites.CellNameType; import org.apache.cassandra.dht.IPartitioner; @@ -34,10 +44,8 @@ import org.apache.cassandra.dht.Token; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.streaming.StreamPlan; import org.apache.cassandra.streaming.StreamSession; -import org.apache.cassandra.utils.FBUtilities; import org.apache.cassandra.utils.ByteBufferUtil; -import org.junit.BeforeClass; -import org.junit.Test; +import org.apache.cassandra.utils.FBUtilities; /** * Tests backwards compatibility for SSTables @@ -54,6 +62,7 @@ public class LegacySSTableTest extends SchemaLoader @BeforeClass public static void beforeClass() { + Keyspace.setInitialized(); String scp = System.getProperty(LEGACY_SSTABLE_PROP); assert scp != null; LEGACY_SSTABLE_ROOT = new File(scp).getAbsoluteFile(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/5ab1a341/test/unit/org/apache/cassandra/io/sstable/SSTableLoaderTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/io/sstable/SSTableLoaderTest.java b/test/unit/org/apache/cassandra/io/sstable/SSTableLoaderTest.java index 809934f..18beaa9 100644 --- a/test/unit/org/apache/cassandra/io/sstable/SSTableLoaderTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/SSTableLoaderTest.java @@ -45,6 +45,7 @@ public class SSTableLoaderTest extends SchemaLoader @BeforeClass public static void setup() throws Exception { + Keyspace.setInitialized(); StorageService.instance.initServer(); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/5ab1a341/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java b/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java index fe48ce5..6015adf 100644 --- a/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java +++ b/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java @@ -21,16 +21,18 @@ package org.apache.cassandra.locator; */ -import static org.junit.Assert.assertEquals; - import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Map; +import org.junit.AfterClass; import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; import org.apache.cassandra.SchemaLoader; +import org.apache.cassandra.db.Keyspace; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.gms.ApplicationState; import org.apache.cassandra.gms.Gossiper; @@ -38,9 +40,8 @@ import org.apache.cassandra.gms.VersionedValue; import org.apache.cassandra.net.MessagingService; import org.apache.cassandra.net.OutboundTcpConnectionPool; import org.apache.cassandra.service.StorageService; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; + +import static org.junit.Assert.assertEquals; public class EC2SnitchTest { @@ -51,6 +52,7 @@ public class EC2SnitchTest { SchemaLoader.mkdirs(); SchemaLoader.cleanup(); + Keyspace.setInitialized(); StorageService.instance.initServer(0); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/5ab1a341/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java b/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java index f58ded6..81c5261 100644 --- a/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java +++ b/test/unit/org/apache/cassandra/service/StorageServiceServerTest.java @@ -56,6 +56,7 @@ public class StorageServiceServerTest { IEndpointSnitch snitch = new PropertyFileSnitch(); DatabaseDescriptor.setEndpointSnitch(snitch); + Keyspace.setInitialized(); } @Test
