Author: gdusbabek
Date: Tue Apr 6 16:02:26 2010
New Revision: 931202
URL: http://svn.apache.org/viewvc?rev=931202&view=rev
Log:
switch to reading schema configuration from storage. Patch by Gary Dusbabek,
reviewed by Jonthan Ellis. CASSANDRA-827
Added:
cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java
Modified:
cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraDaemon.java
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java
cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java
cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java
cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraDaemon.java
cassandra/trunk/test/unit/org/apache/cassandra/CleanupHelper.java
cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/ReadMessageTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/RowTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/commitlog/CommitLogHeaderTest.java
cassandra/trunk/test/unit/org/apache/cassandra/locator/RackUnawareStrategyTest.java
cassandra/trunk/test/unit/org/apache/cassandra/service/EmbeddedCassandraServiceTest.java
cassandra/trunk/test/unit/org/apache/cassandra/service/ReadResponseResolverTest.java
cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java
Modified:
cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraDaemon.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraDaemon.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraDaemon.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraDaemon.java Tue
Apr 6 16:02:26 2010
@@ -75,6 +75,16 @@ public class CassandraDaemon {
}
}
});
+
+ try
+ {
+ DatabaseDescriptor.loadSchemas();
+ }
+ catch (IOException e)
+ {
+ logger.error("Fatal exception during initialization", e);
+ System.exit(100);
+ }
// initialize keyspaces
for (String table : DatabaseDescriptor.getTables())
Modified:
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
Tue Apr 6 16:02:26 2010
@@ -31,7 +31,9 @@ import org.apache.cassandra.dht.IPartiti
import org.apache.cassandra.locator.IEndPointSnitch;
import org.apache.cassandra.locator.AbstractReplicationStrategy;
import org.apache.cassandra.io.util.FileUtils;
+import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.FBUtilities;
+import org.apache.cassandra.utils.UUIDGen;
import org.apache.cassandra.utils.XMLUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -482,27 +484,18 @@ public class DatabaseDescriptor
};
KSMetaData systemMeta = new KSMetaData(Table.SYSTEM_TABLE, null,
-1, null, systemCfDefs);
tables.put(Table.SYSTEM_TABLE, systemMeta);
-
- // todo: if tables are defined in the system store, use those.
load from xml otherwise.
- readTablesFromXml();
-
- // todo: fill in repStrat and epSnitch when this table is set to
replicate.
+
CFMetaData[] definitionCfDefs = new CFMetaData[]
{
new CFMetaData(Table.DEFINITIONS, Migration.MIGRATIONS_CF,
"Standard", new TimeUUIDType(), null, "individual schema mutations", 0, 0),
new CFMetaData(Table.DEFINITIONS, Migration.SCHEMA_CF,
"Standard", new UTF8Type(), null, "current state of the schema", 0, 0)
};
- KSMetaData ksDefs = new KSMetaData(Table.DEFINITIONS, null, -1,
null, definitionCfDefs);
- tables.put(Table.DEFINITIONS, ksDefs);
+ tables.put(Table.DEFINITIONS, new KSMetaData(Table.DEFINITIONS,
null, -1, null, definitionCfDefs));
// NOTE: make sure that all system CFMs defined by now. calling
fixMaxId at this point will set the base id
// to a value that leaves room for future system cfms.
CFMetaData.fixMaxId();
- // todo: if tables are defined in the system store, use those.
load from xml otherwise.
- readTablesFromXml();
- CFMetaData.fixMaxId();
-
/* Load the seeds for node contact points */
String[] seedsxml = xmlUtils.getNodeValues("/Storage/Seeds/Seed");
if (seedsxml.length <= 0)
@@ -525,8 +518,43 @@ public class DatabaseDescriptor
throw new RuntimeException(e);
}
}
+
+ public static void loadSchemas() throws IOException
+ {
+ // we can load tables from local storage if a version is set in the
system table and that acutally maps to
+ // real data in the definitions table. If we do end up loading from
xml, store the defintions so that we
+ // don't load from xml anymore.
+ UUID uuid = Migration.getLastMigrationId();
+ if (uuid == null)
+ logger.warn("Couldn't detect any schema definitions in local
storage. I hope you've got a plan.");
+ else
+ {
+ logger.info("Loading schema version " + uuid.toString());
+ Collection<KSMetaData> tableDefs =
DefsTable.loadFromStorage(uuid);
+ for (KSMetaData def : tableDefs)
+ {
+ DatabaseDescriptor.setTableDefinition(def, uuid);
+ // this part creates storage and jmx objects.
+ Table.open(def.name);
+ }
+
+ // since we loaded definitions from local storage, log a warning
if definitions exist in xml.
+ try
+ {
+ XMLUtils xmlUtils = new XMLUtils(configFileName);
+ NodeList tablesxml =
xmlUtils.getRequestedNodeList("/Storage/Keyspaces/Keyspace");
+ if (tablesxml.getLength() > 0)
+ logger.warn("Schema definitions were defined both locally
and in storage-conf.xml. Definitions in storage-conf.xml were ignored.");
+ }
+ catch (Exception ex)
+ {
+ logger.warn("Problem checking for schema defintions in xml",
ex);
+ }
+ }
+ CFMetaData.fixMaxId();
+ }
- private static void readTablesFromXml() throws ConfigurationException
+ public static void readTablesFromXml() throws ConfigurationException
{
XMLUtils xmlUtils = null;
try
@@ -730,6 +758,8 @@ public class DatabaseDescriptor
ex.initCause(e);
throw ex;
}
+ if (DatabaseDescriptor.listenAddress != null)
+ defsVersion =
UUIDGen.makeType1UUIDFromHost(FBUtilities.getLocalAddress());
}
public static IAuthenticator getAuthenticator()
@@ -1118,10 +1148,9 @@ public class DatabaseDescriptor
// process of mutating an individual keyspace, rather than setting
manually here.
public static void setTableDefinition(KSMetaData ksm, UUID newVersion)
{
- // at some point, this assert will be valid, because defsVersion_ will
be set when the table defs are loaded.
-// assert newVersion != null && !newVersion.equals(defsVersion_) &&
defsVersion_.compareTo(newVersion) < 0;
tables.put(ksm.name, ksm);
DatabaseDescriptor.defsVersion = newVersion;
+ StorageService.instance.initReplicationStrategy(ksm.name);
}
public static void clearTableDefinition(KSMetaData ksm, UUID newVersion)
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java Tue Apr 6
16:02:26 2010
@@ -25,6 +25,7 @@ import org.apache.cassandra.db.filter.Qu
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.db.filter.SliceQueryFilter;
import org.apache.cassandra.db.migration.Migration;
+import org.apache.cassandra.utils.UUIDGen;
import java.io.ByteArrayInputStream;
import java.io.File;
@@ -50,6 +51,10 @@ public class DefsTable
rm.add(new QueryPath(Migration.SCHEMA_CF, null,
ks.name.getBytes()), KSMetaData.serialize(ks), now);
}
rm.apply();
+
+ rm = new RowMutation(Table.DEFINITIONS, Migration.LAST_MIGRATION_KEY);
+ rm.add(new QueryPath(Migration.SCHEMA_CF, null,
Migration.LAST_MIGRATION_KEY.getBytes()), UUIDGen.decompose(version), now);
+ rm.apply();
}
/** loads a version of keyspace definitions from storage */
Modified:
cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java
Tue Apr 6 16:02:26 2010
@@ -145,7 +145,7 @@ public abstract class Migration
ColumnFamilyStore cfStore = defs.getColumnFamilyStore(SCHEMA_CF);
QueryFilter filter = QueryFilter.getNamesFilter(LAST_MIGRATION_KEY,
new QueryPath(SCHEMA_CF), LAST_MIGRATION_KEY.getBytes());
ColumnFamily cf = cfStore.getColumnFamily(filter);
- if (cf.getColumnNames().size() == 0)
+ if (cf == null || cf.getColumnNames().size() == 0)
return null;
else
return
UUIDGen.makeType1UUID(cf.getColumn(LAST_MIGRATION_KEY.getBytes()).value());
Modified:
cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
Tue Apr 6 16:02:26 2010
@@ -33,9 +33,11 @@ import javax.management.*;
import com.google.common.collect.Multimaps;
import org.apache.cassandra.concurrent.*;
+import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.commitlog.CommitLog;
+import org.apache.cassandra.db.migration.Migration;
import org.apache.cassandra.dht.*;
import org.apache.cassandra.gms.*;
import org.apache.cassandra.io.DeletionService;
@@ -47,6 +49,7 @@ import org.apache.cassandra.streaming.*;
import org.apache.cassandra.thrift.ConsistencyLevel;
import org.apache.cassandra.thrift.UnavailableException;
import org.apache.cassandra.utils.FBUtilities;
+import org.apache.cassandra.utils.UUIDGen;
import org.apache.cassandra.utils.WrappedRunnable;
import org.apache.cassandra.io.util.FileUtils;
@@ -1568,7 +1571,39 @@ public class StorageService implements I
setMode("Node is drained", true);
}
-
+
+ /**
+ * load schema from xml. This can only be done on a fresh system.
+ * @throws ConfigurationException
+ * @throws IOException
+ */
+ public void loadSchemaFromXML() throws ConfigurationException, IOException
+ {
+ // blow up if there is a schema saved.
+ if (DatabaseDescriptor.getDefsVersion().timestamp() > 0 ||
Migration.getLastMigrationId() != null)
+ throw new ConfigurationException("Cannot load from XML on top of
pre-existing schemas.");
+ DatabaseDescriptor.readTablesFromXml();
+ assert DatabaseDescriptor.getDefsVersion().timestamp() > 0;
+ DefsTable.dumpToStorage(DatabaseDescriptor.getDefsVersion());
+ // flush system and definition tables.
+ Collection<Future> flushers = new ArrayList<Future>();
+ flushers.addAll(Table.open(Table.SYSTEM_TABLE).flush());
+ flushers.addAll(Table.open(Table.DEFINITIONS).flush());
+ for (Future f : flushers)
+ {
+ try
+ {
+ f.get();
+ }
+ catch (Exception e)
+ {
+ ConfigurationException ce = new
ConfigurationException(e.getMessage());
+ ce.initCause(e);
+ throw ce;
+ }
+ }
+
+ }
// Never ever do this at home. Used by tests.
Map<String, AbstractReplicationStrategy>
setReplicationStrategyUnsafe(Map<String, AbstractReplicationStrategy>
replacement)
Modified:
cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
---
cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java
(original)
+++
cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java
Tue Apr 6 16:02:26 2010
@@ -26,6 +26,7 @@ import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
+import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.dht.Range;
import java.net.InetAddress;
@@ -169,4 +170,10 @@ public interface StorageServiceMBean
/** makes node unavailable for writes, flushes memtables and replays
commitlog. */
public void drain() throws IOException, InterruptedException,
ExecutionException;
+
+ /**
+ * Introduced in 0.7 to allow nodes to load their existing xml defined
schemas.
+ * @todo: deprecate in 0.7+1, remove in 0.7+2.
+ */
+ public void loadSchemaFromXML() throws ConfigurationException, IOException;
}
Modified:
cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraDaemon.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraDaemon.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraDaemon.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraDaemon.java
Tue Apr 6 16:02:26 2010
@@ -23,6 +23,7 @@ import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.InetAddress;
+import org.apache.cassandra.config.ConfigurationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -85,6 +86,16 @@ public class CassandraDaemon
}
});
+ try
+ {
+ DatabaseDescriptor.loadSchemas();
+ }
+ catch (IOException e)
+ {
+ logger.error("Fatal exception during initialization", e);
+ System.exit(100);
+ }
+
// initialize keyspaces
for (String table : DatabaseDescriptor.getTables())
{
Modified: cassandra/trunk/test/unit/org/apache/cassandra/CleanupHelper.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/CleanupHelper.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/CleanupHelper.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/CleanupHelper.java Tue Apr
6 16:02:26 2010
@@ -29,7 +29,7 @@ import org.apache.cassandra.io.util.File
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class CleanupHelper
+public class CleanupHelper extends SchemaLoader
{
private static Logger logger =
LoggerFactory.getLogger(CleanupHelper.class);
Added: cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java?rev=931202&view=auto
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java (added)
+++ cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java Tue Apr 6
16:02:26 2010
@@ -0,0 +1,41 @@
+/**
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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;
+
+import org.apache.cassandra.config.ConfigurationException;
+import org.apache.cassandra.config.DatabaseDescriptor;
+import org.junit.BeforeClass;
+
+public class SchemaLoader
+{
+ // todo: when xml is fully deprecated, this method should be changed to
manually load a few table definitions into
+ // the definitions keyspace.
+ @BeforeClass
+ public static void loadSchemaFromXml()
+ {
+ try
+ {
+ DatabaseDescriptor.readTablesFromXml();
+ }
+ catch (ConfigurationException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+}
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java Tue
Apr 6 16:02:26 2010
@@ -24,13 +24,14 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.TreeMap;
+import org.apache.cassandra.SchemaLoader;
import org.junit.Test;
import org.apache.cassandra.io.util.DataOutputBuffer;
import org.apache.cassandra.db.filter.QueryPath;
import static org.apache.cassandra.Util.column;
-public class ColumnFamilyTest
+public class ColumnFamilyTest extends SchemaLoader
{
// TODO test SuperColumns
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java Tue Apr 6
16:02:26 2010
@@ -59,12 +59,6 @@ import java.util.concurrent.ExecutionExc
public class DefsTest extends CleanupHelper
{
- @Before
- public void setup()
- {
- // just something to ensure that DD has been initialized.
- DatabaseDescriptor.getNonSystemTables();
- }
@Test
public void saveAndRestore() throws IOException
@@ -105,10 +99,10 @@ public class DefsTest extends CleanupHel
public void testMigrations() throws IOException, ConfigurationException
{
// do a save. make sure it doesn't mess with the defs version.
- assert DatabaseDescriptor.getDefsVersion() == null;
+ UUID prior = DatabaseDescriptor.getDefsVersion();
UUID ver0 =
UUIDGen.makeType1UUIDFromHost(FBUtilities.getLocalAddress());
DefsTable.dumpToStorage(ver0);
- assert DatabaseDescriptor.getDefsVersion() == null;
+ assert DatabaseDescriptor.getDefsVersion().equals(prior);
// add a cf.
CFMetaData newCf1 = new CFMetaData("Keyspace1", "MigrationCf_1",
"Standard", new UTF8Type(), null, "Migration CF ", 0, 0);
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/ReadMessageTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/ReadMessageTest.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/ReadMessageTest.java
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/ReadMessageTest.java Tue
Apr 6 16:02:26 2010
@@ -26,13 +26,14 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
+import org.apache.cassandra.SchemaLoader;
import org.apache.commons.lang.ArrayUtils;
import org.junit.Test;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.io.util.DataOutputBuffer;
-public class ReadMessageTest
+public class ReadMessageTest extends SchemaLoader
{
@Test
public void testMakeReadMessage() throws IOException
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/RowTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/RowTest.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/RowTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/RowTest.java Tue Apr 6
16:02:26 2010
@@ -20,13 +20,14 @@ package org.apache.cassandra.db;
import java.util.Arrays;
+import org.apache.cassandra.SchemaLoader;
import org.junit.Test;
import static junit.framework.Assert.assertEquals;
import org.apache.cassandra.db.marshal.AsciiType;
import static org.apache.cassandra.Util.column;
-public class RowTest
+public class RowTest extends SchemaLoader
{
@Test
public void testDiffColumnFamily()
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/db/commitlog/CommitLogHeaderTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/commitlog/CommitLogHeaderTest.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
---
cassandra/trunk/test/unit/org/apache/cassandra/db/commitlog/CommitLogHeaderTest.java
(original)
+++
cassandra/trunk/test/unit/org/apache/cassandra/db/commitlog/CommitLogHeaderTest.java
Tue Apr 6 16:02:26 2010
@@ -20,7 +20,9 @@ package org.apache.cassandra.db.commitlo
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
+import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.config.CFMetaData;
+import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.utils.Pair;
import org.junit.Before;
@@ -34,14 +36,8 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Map;
-public class CommitLogHeaderTest
+public class CommitLogHeaderTest extends SchemaLoader
{
- @Before
- public void setup()
- {
- // data definitions must be loaded.
- DatabaseDescriptor.getTables();
- }
@Test
public void testEmptyHeader()
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/locator/RackUnawareStrategyTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/locator/RackUnawareStrategyTest.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
---
cassandra/trunk/test/unit/org/apache/cassandra/locator/RackUnawareStrategyTest.java
(original)
+++
cassandra/trunk/test/unit/org/apache/cassandra/locator/RackUnawareStrategyTest.java
Tue Apr 6 16:02:26 2010
@@ -25,6 +25,7 @@ import java.util.List;
import java.util.ArrayList;
import java.util.Collection;
+import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.gms.ApplicationState;
import org.apache.cassandra.service.StorageServiceAccessor;
@@ -40,7 +41,7 @@ import org.apache.cassandra.service.Stor
import java.net.InetAddress;
import java.net.UnknownHostException;
-public class RackUnawareStrategyTest
+public class RackUnawareStrategyTest extends SchemaLoader
{
@Test
public void tryBogusTable()
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/service/EmbeddedCassandraServiceTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/service/EmbeddedCassandraServiceTest.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
---
cassandra/trunk/test/unit/org/apache/cassandra/service/EmbeddedCassandraServiceTest.java
(original)
+++
cassandra/trunk/test/unit/org/apache/cassandra/service/EmbeddedCassandraServiceTest.java
Tue Apr 6 16:02:26 2010
@@ -24,6 +24,8 @@ import static org.junit.Assert.assertNot
import java.io.IOException;
import java.io.UnsupportedEncodingException;
+import org.apache.cassandra.config.ConfigurationException;
+import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.thrift.Cassandra;
import org.apache.cassandra.thrift.ColumnOrSuperColumn;
import org.apache.cassandra.thrift.ColumnPath;
@@ -62,12 +64,13 @@ public class EmbeddedCassandraServiceTes
* @throws InterruptedException
*/
@BeforeClass
- public static void setup() throws TTransportException, IOException,
InterruptedException
+ public static void setup() throws TTransportException, IOException,
InterruptedException, ConfigurationException
{
// Tell cassandra where the configuration files are.
// Use the test configuration file.
System.setProperty("storage-config", "test/conf");
+ DatabaseDescriptor.readTablesFromXml();
cassandra = new EmbeddedCassandraService();
cassandra.init();
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/service/ReadResponseResolverTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/service/ReadResponseResolverTest.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
---
cassandra/trunk/test/unit/org/apache/cassandra/service/ReadResponseResolverTest.java
(original)
+++
cassandra/trunk/test/unit/org/apache/cassandra/service/ReadResponseResolverTest.java
Tue Apr 6 16:02:26 2010
@@ -23,6 +23,7 @@ package org.apache.cassandra.service;
import java.util.Arrays;
+import org.apache.cassandra.SchemaLoader;
import org.junit.Test;
import org.apache.cassandra.db.ColumnFamily;
@@ -31,7 +32,7 @@ import static org.apache.cassandra.db.Ta
import static org.apache.cassandra.Util.column;
import static junit.framework.Assert.assertNull;
-public class ReadResponseResolverTest
+public class ReadResponseResolverTest extends SchemaLoader
{
@Test
public void testResolveSupersetNewer()
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
Tue Apr 6 16:02:26 2010
@@ -26,12 +26,13 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.io.sstable.SSTable;
import org.junit.Test;
-public class BootstrapTest
+public class BootstrapTest extends SchemaLoader
{
@Test
public void testGetNewNames() throws IOException
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
Tue Apr 6 16:02:26 2010
@@ -23,6 +23,8 @@ import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Arrays;
+
+import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.filter.NamesQueryFilter;
@@ -42,7 +44,7 @@ import org.json.simple.JSONValue;
import org.json.simple.parser.ParseException;
import org.junit.Test;
-public class SSTableExportTest
+public class SSTableExportTest extends SchemaLoader
{
@Test
public void testEnumeratekeys() throws IOException
Modified:
cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java
URL:
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java?rev=931202&r1=931201&r2=931202&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java
Tue Apr 6 16:02:26 2010
@@ -21,6 +21,8 @@ package org.apache.cassandra.tools;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
+
+import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.IColumn;
@@ -33,7 +35,7 @@ import static org.apache.cassandra.io.ss
import org.json.simple.parser.ParseException;
import org.junit.Test;
-public class SSTableImportTest
+public class SSTableImportTest extends SchemaLoader
{
@Test
public void testImportSimpleCf() throws IOException, ParseException