diff --git a/CHANGES.txt b/CHANGES.txt index 16e8f6937c..4d13ba5ee5 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,8 +1,11 @@ dev * expose getNaturalEndpoints in StorageServiceMBean taking byte[] key; RMI cannot serialize ByteBuffer (CASSANDRA-1833) + * infer org.apache.cassandra.locator for replication strategy classes + when not otherwise specified * validation that generates less garbage (CASSANDRA-1814) + 0.7.0-rc2 * fix live-column-count of slice ranges including tombstoned supercolumn with live subcolumn (CASSANDRA-1591) diff --git a/src/java/org/apache/cassandra/avro/CassandraServer.java b/src/java/org/apache/cassandra/avro/CassandraServer.java index 5901a38615..3621392828 100644 --- a/src/java/org/apache/cassandra/avro/CassandraServer.java +++ b/src/java/org/apache/cassandra/avro/CassandraServer.java @@ -42,12 +42,10 @@ import org.apache.avro.ipc.AvroRemoteException; import org.apache.avro.util.Utf8; import org.apache.cassandra.concurrent.Stage; import org.apache.cassandra.db.migration.DropKeyspace; -import org.apache.cassandra.db.migration.RenameKeyspace; import org.apache.cassandra.db.migration.UpdateColumnFamily; import org.apache.cassandra.db.migration.UpdateKeyspace; import org.apache.cassandra.dht.*; -import org.apache.cassandra.gms.Gossiper; -import org.apache.cassandra.utils.FBUtilities; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,7 +64,6 @@ import org.apache.cassandra.db.migration.AddColumnFamily; import org.apache.cassandra.db.migration.AddKeyspace; import org.apache.cassandra.db.migration.DropColumnFamily; import org.apache.cassandra.db.migration.Migration; -import org.apache.cassandra.db.migration.RenameColumnFamily; import org.apache.cassandra.locator.AbstractReplicationStrategy; import org.apache.cassandra.scheduler.IRequestScheduler; import org.apache.cassandra.service.ClientState; @@ -646,7 +643,7 @@ public class CassandraServer implements Cassandra { KSMetaData ksmeta = new KSMetaData( ksDef.name.toString(), - FBUtilities.classForName(ksDef.strategy_class.toString(), "keyspace replication strategy"), + AbstractReplicationStrategy.getClass(ksDef.strategy_class.toString()), strategyOptions, ksDef.replication_factor, cfDefs.toArray(new CFMetaData[cfDefs.size()])); @@ -738,7 +735,7 @@ public class CassandraServer implements Cassandra { KSMetaData ksm = new KSMetaData( ks_def.name.toString(), - (Class) FBUtilities.classForName(ks_def.strategy_class.toString(), "keyspace replication strategy"), + AbstractReplicationStrategy.getClass(ks_def.strategy_class.toString()), strategyOptions, ks_def.replication_factor); applyMigrationOnStage(new UpdateKeyspace(ksm)); diff --git a/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java b/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java index 1f997cbafc..36e8702a17 100644 --- a/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java +++ b/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java @@ -261,7 +261,13 @@ public abstract class AbstractReplicationStrategy Map strategyOptions) throws ConfigurationException { - Class c = FBUtilities.classForName(strategyClassName, "replication-strategy"); + Class c = getClass(strategyClassName); return createReplicationStrategy(table, c, tokenMetadata, snitch, strategyOptions); } + + public static Class getClass(String cls) throws ConfigurationException + { + String className = cls.contains(".") ? cls : "org.apache.cassandra.locator." + cls; + return FBUtilities.classForName(className, "replication strategy"); + } } diff --git a/src/java/org/apache/cassandra/thrift/CassandraServer.java b/src/java/org/apache/cassandra/thrift/CassandraServer.java index e8d659c465..1e6d75de68 100644 --- a/src/java/org/apache/cassandra/thrift/CassandraServer.java +++ b/src/java/org/apache/cassandra/thrift/CassandraServer.java @@ -42,7 +42,6 @@ import org.apache.cassandra.config.ConfigurationException; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.config.KSMetaData; import org.apache.cassandra.db.ColumnFamily; -import org.apache.cassandra.db.ColumnFamilyNotDefinedException; import org.apache.cassandra.db.ColumnFamilyType; import org.apache.cassandra.db.DecoratedKey; import org.apache.cassandra.db.ExpiringColumn; @@ -60,8 +59,6 @@ import org.apache.cassandra.db.migration.AddKeyspace; import org.apache.cassandra.db.migration.DropColumnFamily; import org.apache.cassandra.db.migration.DropKeyspace; import org.apache.cassandra.db.migration.Migration; -import org.apache.cassandra.db.migration.RenameColumnFamily; -import org.apache.cassandra.db.migration.RenameKeyspace; import org.apache.cassandra.db.migration.UpdateColumnFamily; import org.apache.cassandra.db.migration.UpdateKeyspace; import org.apache.cassandra.dht.AbstractBounds; @@ -75,7 +72,6 @@ import org.apache.cassandra.scheduler.IRequestScheduler; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.StorageProxy; import org.apache.cassandra.service.StorageService; -import org.apache.cassandra.utils.FBUtilities; import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -767,7 +763,7 @@ public class CassandraServer implements Cassandra.Iface } KSMetaData ksm = new KSMetaData(ks_def.name, - FBUtilities.classForName(ks_def.strategy_class, "keyspace replication strategy"), + AbstractReplicationStrategy.getClass(ks_def.strategy_class), ks_def.strategy_options, ks_def.replication_factor, cfDefs.toArray(new CFMetaData[cfDefs.size()])); @@ -826,7 +822,7 @@ public class CassandraServer implements Cassandra.Iface { KSMetaData ksm = new KSMetaData( ks_def.name, - FBUtilities.classForName(ks_def.strategy_class, "keyspace replication strategy"), + AbstractReplicationStrategy.getClass(ks_def.strategy_class), ks_def.strategy_options, ks_def.replication_factor); applyMigrationOnStage(new UpdateKeyspace(ksm)); diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java index e54e961a9f..0b310672b3 100644 --- a/src/java/org/apache/cassandra/utils/FBUtilities.java +++ b/src/java/org/apache/cassandra/utils/FBUtilities.java @@ -50,6 +50,7 @@ import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.dht.IPartitioner; import org.apache.cassandra.dht.Range; import org.apache.cassandra.dht.Token; +import org.apache.cassandra.locator.AbstractReplicationStrategy; import org.apache.cassandra.locator.PropertyFileSnitch; import org.apache.thrift.TBase; import org.apache.thrift.TDeserializer;