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