Author: jbellis
Date: Tue May 10 16:53:26 2011
New Revision: 1101541
URL: http://svn.apache.org/viewvc?rev=1101541&view=rev
Log:
improve KsDef backwards-compatibility
Modified:
cassandra/branches/cassandra-0.8/NEWS.txt
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/CFMetaData.java
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/KSMetaData.java
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/CassandraServer.java
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/ThriftValidation.java
Modified: cassandra/branches/cassandra-0.8/NEWS.txt
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/NEWS.txt?rev=1101541&r1=1101540&r2=1101541&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/NEWS.txt (original)
+++ cassandra/branches/cassandra-0.8/NEWS.txt Tue May 10 16:53:26 2011
@@ -10,9 +10,8 @@ Upgrading
recommended but not required. (Skipping this will result in
replay of entire commitlog, so it will take longer to restart but
is otherwise harmless.)
- - 0.8 is API-compatible with 0.7 with the exception of keyspace
- modifications. For everything else, you can continue to use your
- 0.7 clients.
+ - 0.8 is fully API-compatible with 0.7. You can continue
+ to use your 0.7 clients.
- Avro record classes used in map/reduce and Hadoop streaming code have
moved from org.apache.cassandra.avro to org.apache.cassandra.hadoop.avro,
applications using these classes will need to be updated accordingly.
Modified:
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/CFMetaData.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/CFMetaData.java?rev=1101541&r1=1101540&r2=1101541&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/CFMetaData.java
(original)
+++
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/CFMetaData.java
Tue May 10 16:53:26 2011
@@ -629,7 +629,7 @@ public final class CFMetaData
cf_def.setRow_cache_provider(CFMetaData.DEFAULT_ROW_CACHE_PROVIDER);
}
- public static CFMetaData
convertToCFMetaData(org.apache.cassandra.thrift.CfDef cf_def) throws
InvalidRequestException, ConfigurationException
+ public static CFMetaData fromThrift(org.apache.cassandra.thrift.CfDef
cf_def) throws InvalidRequestException, ConfigurationException
{
ColumnFamilyType cfType = ColumnFamilyType.create(cf_def.column_type);
if (cfType == null)
Modified:
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/KSMetaData.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/KSMetaData.java?rev=1101541&r1=1101540&r2=1101541&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/KSMetaData.java
(original)
+++
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/KSMetaData.java
Tue May 10 16:53:26 2011
@@ -18,10 +18,7 @@
package org.apache.cassandra.config;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
+import java.util.*;
import org.apache.commons.lang.ObjectUtils;
@@ -29,6 +26,7 @@ import org.apache.avro.util.Utf8;
import org.apache.cassandra.io.SerDeUtils;
import org.apache.cassandra.locator.AbstractReplicationStrategy;
import org.apache.cassandra.locator.NetworkTopologyStrategy;
+import org.apache.cassandra.thrift.CfDef;
import org.apache.cassandra.thrift.KsDef;
import org.apache.commons.lang.StringUtils;
@@ -51,7 +49,7 @@ public final class KSMetaData
this.cfMetaData = Collections.unmodifiableMap(cfmap);
}
- public static Map<String, String> backwardsCompatibleOptions(KsDef ks_def)
+ public static Map<String, String> forwardsCompatibleOptions(KsDef ks_def)
{
Map<String, String> options;
if (ks_def.isSetReplication_factor())
@@ -165,4 +163,24 @@ public final class KSMetaData
ret.put("replication_factor", rf.toString());
return ret;
}
+
+ public static KSMetaData fromThrift(KsDef ksd, CFMetaData... cfDefs)
throws ConfigurationException
+ {
+ return new KSMetaData(ksd.name,
+
AbstractReplicationStrategy.getClass(ksd.strategy_class),
+ forwardsCompatibleOptions(ksd),
+ cfDefs);
+ }
+
+ public static KsDef toThrift(KSMetaData ksm)
+ {
+ List<CfDef> cfDefs = new ArrayList<CfDef>();
+ for (CFMetaData cfm : ksm.cfMetaData().values())
+ cfDefs.add(CFMetaData.convertToThrift(cfm));
+ KsDef ksdef = new KsDef(ksm.name, ksm.strategyClass.getName(), cfDefs);
+ ksdef.setStrategy_options(ksm.strategyOptions);
+ if (ksm.strategyOptions != null &&
ksm.strategyOptions.containsKey("replication_factor"))
+
ksdef.setReplication_factor(Integer.parseInt(ksm.strategyOptions.get("replication_factor")));
+ return ksdef;
+ }
}
Modified:
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/CassandraServer.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/CassandraServer.java?rev=1101541&r1=1101540&r2=1101541&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/CassandraServer.java
(original)
+++
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/CassandraServer.java
Tue May 10 16:53:26 2011
@@ -578,12 +578,7 @@ public class CassandraServer implements
if (ksm == null)
throw new NotFoundException();
- List<CfDef> cfDefs = new ArrayList<CfDef>();
- for (CFMetaData cfm : ksm.cfMetaData().values())
- cfDefs.add(CFMetaData.convertToThrift(cfm));
- KsDef ksdef = new KsDef(ksm.name, ksm.strategyClass.getName(), cfDefs);
- ksdef.setStrategy_options(ksm.strategyOptions);
- return ksdef;
+ return KSMetaData.toThrift(ksm);
}
public List<KeySlice> get_range_slices(ColumnParent column_parent,
SlicePredicate predicate, KeyRange range, ConsistencyLevel consistency_level)
@@ -809,7 +804,7 @@ public class CassandraServer implements
try
{
- applyMigrationOnStage(new
AddColumnFamily(CFMetaData.convertToCFMetaData(cf_def)));
+ applyMigrationOnStage(new
AddColumnFamily(CFMetaData.fromThrift(cf_def)));
return DatabaseDescriptor.getDefsVersion().toString();
}
catch (ConfigurationException e)
@@ -874,16 +869,11 @@ public class CassandraServer implements
for (CfDef cfDef : ks_def.cf_defs)
{
ThriftValidation.validateCfDef(cfDef);
- cfDefs.add(CFMetaData.convertToCFMetaData(cfDef));
+ cfDefs.add(CFMetaData.fromThrift(cfDef));
}
ThriftValidation.validateKsDef(ks_def);
- KSMetaData ksm = new KSMetaData(ks_def.name,
-
AbstractReplicationStrategy.getClass(ks_def.strategy_class),
-
KSMetaData.backwardsCompatibleOptions(ks_def),
- cfDefs.toArray(new
CFMetaData[cfDefs.size()]));
-
- applyMigrationOnStage(new AddKeyspace(ksm));
+ applyMigrationOnStage(new
AddKeyspace(KSMetaData.fromThrift(ks_def, cfDefs.toArray(new
CFMetaData[cfDefs.size()]))));
return DatabaseDescriptor.getDefsVersion().toString();
}
catch (ConfigurationException e)
@@ -941,10 +931,7 @@ public class CassandraServer implements
try
{
ThriftValidation.validateKsDef(ks_def);
- KSMetaData ksm = new KSMetaData(ks_def.name,
-
AbstractReplicationStrategy.getClass(ks_def.strategy_class),
-
KSMetaData.backwardsCompatibleOptions(ks_def));
- applyMigrationOnStage(new UpdateKeyspace(ksm));
+ applyMigrationOnStage(new
UpdateKeyspace(KSMetaData.fromThrift(ks_def)));
return DatabaseDescriptor.getDefsVersion().toString();
}
catch (ConfigurationException e)
Modified:
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/ThriftValidation.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/ThriftValidation.java?rev=1101541&r1=1101540&r2=1101541&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/ThriftValidation.java
(original)
+++
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/ThriftValidation.java
Tue May 10 16:53:26 2011
@@ -591,11 +591,11 @@ public class ThriftValidation
}
}
- static void validateKsDef(KsDef ks_def) throws ConfigurationException
+ public static void validateKsDef(KsDef ks_def) throws
ConfigurationException
{
// Attempt to instantiate the ARS, which will throw a ConfigException
if
// the strategy_options aren't fully formed or if the ARS Classname
is invalid.
- Map<String, String> options =
KSMetaData.backwardsCompatibleOptions(ks_def);
+ Map<String, String> options =
KSMetaData.forwardsCompatibleOptions(ks_def);
TokenMetadata tmd = StorageService.instance.getTokenMetadata();
IEndpointSnitch eps = DatabaseDescriptor.getEndpointSnitch();
Class<? extends AbstractReplicationStrategy> cls =
AbstractReplicationStrategy.getClass(ks_def.strategy_class);