You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/05/10 21:03:59 UTC

svn commit: r1101598 - in /cassandra/branches/cassandra-0.8.1: ./ contrib/ drivers/java/src/org/apache/cassandra/cql/jdbc/ interface/thrift/gen-java/org/apache/cassandra/thrift/ src/java/org/apache/cassandra/config/ src/java/org/apache/cassandra/cql/ s...

Author: jbellis
Date: Tue May 10 19:03:58 2011
New Revision: 1101598

URL: http://svn.apache.org/viewvc?rev=1101598&view=rev
Log:
merge from 0.8

Modified:
    cassandra/branches/cassandra-0.8.1/   (props changed)
    cassandra/branches/cassandra-0.8.1/CHANGES.txt
    cassandra/branches/cassandra-0.8.1/NEWS.txt
    cassandra/branches/cassandra-0.8.1/contrib/   (props changed)
    cassandra/branches/cassandra-0.8.1/drivers/java/src/org/apache/cassandra/cql/jdbc/ColumnDecoder.java
    cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java   (props changed)
    cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java   (props changed)
    cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java   (props changed)
    cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java   (props changed)
    cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java   (props changed)
    cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/config/CFMetaData.java
    cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/config/KSMetaData.java
    cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/cql/QueryProcessor.java
    cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
    cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java
    cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/OldNetworkTopologyStrategy.java
    cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/SimpleStrategy.java
    cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/thrift/CassandraServer.java
    cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/thrift/ThriftValidation.java
    cassandra/branches/cassandra-0.8.1/src/resources/org/apache/cassandra/cli/CliHelp.yaml

Propchange: cassandra/branches/cassandra-0.8.1/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 10 19:03:58 2011
@@ -1,7 +1,7 @@
 /cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
 /cassandra/branches/cassandra-0.7:1026516-1100900,1101021
 /cassandra/branches/cassandra-0.7.0:1053690-1055654
-/cassandra/branches/cassandra-0.8:1090935-1101205
+/cassandra/branches/cassandra-0.8:1090935-1101597
 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3:774578-796573
 /incubator/cassandra/branches/cassandra-0.4:810145-834239,834349-834350

Modified: cassandra/branches/cassandra-0.8.1/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/CHANGES.txt?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8.1/CHANGES.txt Tue May 10 19:03:58 2011
@@ -27,6 +27,8 @@
  * r/m clustertool (CASSANDRA-2607)
  * add support for presenting row key as a column in CQL result sets 
    (CASSANDRA-2622)
+ * Don't allow {LOCAL|EACH}_QUORUM unless strategy is NTS (CASSANDRA-2627)
+ * validate keyspace strategy_options during CQL create (CASSANDRA-2624)
 
 
 0.8.0-beta2
@@ -54,12 +56,11 @@
  * improve ignoring of obsolete mutations in index maintenance (CASSANDRA-2401)
  * recognize attempt to drop just the index while leaving the column
    definition alone (CASSANDRA-2619)
- * Don't allow {LOCAL|EACH}_QUORUM unless strategy is NTS (CASSANDRA-2627)
 
 
 0.8.0-beta1
  * remove Avro RPC support (CASSANDRA-926)
- * adds support for columns that act as incr/decr counters 
+ * support for columns that act as incr/decr counters 
    (CASSANDRA-1072, 1937, 1944, 1936, 2101, 2093, 2288, 2105, 2384, 2236, 2342,
    2454)
  * CQL (CASSANDRA-1703, 1704, 1705, 1706, 1707, 1708, 1710, 1711, 1940, 

Modified: cassandra/branches/cassandra-0.8.1/NEWS.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/NEWS.txt?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/NEWS.txt (original)
+++ cassandra/branches/cassandra-0.8.1/NEWS.txt Tue May 10 19:03:58 2011
@@ -5,19 +5,18 @@ Upgrading
 ---------
     - Upgrading from version 0.7.1 or later can be done with a rolling
       restart, one node at a time.  You do not need to bring down the
-      whole cluster.
+      whole cluster at once.
     - Running nodetool drain before shutting down the 0.7 node is
       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 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.
     - The loadbalance command has been removed from nodetool.  For similar
       behavior, decommission then rebootstrap with empty initial_token.
-    - repair now works on a token range, rather than the entire ring. This
-      means that "run repair against each node" will now repair the ring with
-      no redundant work.
 
 Features
 --------

Propchange: cassandra/branches/cassandra-0.8.1/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 10 19:03:58 2011
@@ -1,7 +1,7 @@
 /cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
 /cassandra/branches/cassandra-0.7/contrib:1026516-1100900,1101021
 /cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
-/cassandra/branches/cassandra-0.8/contrib:1090935-1101205
+/cassandra/branches/cassandra-0.8/contrib:1090935-1101597
 /cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/contrib:774578-796573
 /incubator/cassandra/branches/cassandra-0.4/contrib:810145-810987,810994-834239,834349-834350

Modified: cassandra/branches/cassandra-0.8.1/drivers/java/src/org/apache/cassandra/cql/jdbc/ColumnDecoder.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/drivers/java/src/org/apache/cassandra/cql/jdbc/ColumnDecoder.java?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/drivers/java/src/org/apache/cassandra/cql/jdbc/ColumnDecoder.java (original)
+++ cassandra/branches/cassandra-0.8.1/drivers/java/src/org/apache/cassandra/cql/jdbc/ColumnDecoder.java Tue May 10 19:03:58 2011
@@ -28,7 +28,6 @@ import org.apache.cassandra.db.marshal.A
 import org.apache.cassandra.db.marshal.AsciiType;
 import org.apache.cassandra.thrift.*;
 import org.apache.cassandra.utils.ByteBufferUtil;
-import org.apache.cassandra.utils.FBUtilities;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -59,7 +58,7 @@ class ColumnDecoder
             {
                 try
                 {
-                    metadata.put(String.format("%s.%s", ks.getName(), cf.getName()), CFMetaData.convertToCFMetaData(cf));
+                    metadata.put(String.format("%s.%s", ks.getName(), cf.getName()), CFMetaData.fromThrift(cf));
                 }
                 catch (InvalidRequestException e)
                 {

Propchange: cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 10 19:03:58 2011
@@ -1,7 +1,7 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
 /cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1100900,1101021
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090935-1101205
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090935-1101597
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573
 /incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java:810145-834239,834349-834350

Propchange: cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 10 19:03:58 2011
@@ -1,7 +1,7 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
 /cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1100900,1101021
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090935-1101205
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090935-1101597
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198
 /incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java:810145-834239,834349-834350

Propchange: cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 10 19:03:58 2011
@@ -1,7 +1,7 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
 /cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1100900,1101021
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090935-1101205
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090935-1101597
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573
 /incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:810145-834239,834349-834350

Propchange: cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 10 19:03:58 2011
@@ -1,7 +1,7 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
 /cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1100900,1101021
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090935-1101205
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090935-1101597
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573
 /incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:810145-834239,834349-834350

Propchange: cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 10 19:03:58 2011
@@ -1,7 +1,7 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
 /cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1100900,1101021
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090935-1101205
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090935-1101597
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198
 /incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810145-834239,834349-834350

Modified: cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/config/CFMetaData.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/config/CFMetaData.java?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/config/CFMetaData.java (original)
+++ cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/config/CFMetaData.java Tue May 10 19:03:58 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.1/src/java/org/apache/cassandra/config/KSMetaData.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/config/KSMetaData.java?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/config/KSMetaData.java (original)
+++ cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/config/KSMetaData.java Tue May 10 19:03:58 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.1/src/java/org/apache/cassandra/cql/QueryProcessor.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/cql/QueryProcessor.java?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/cql/QueryProcessor.java (original)
+++ cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/cql/QueryProcessor.java Tue May 10 19:03:58 2011
@@ -638,10 +638,12 @@ public class QueryProcessor
                 
                 try
                 {
-                    KSMetaData ksm = new KSMetaData(create.getName(),
-                                                    AbstractReplicationStrategy.getClass(create.getStrategyClass()),
-                                                    create.getStrategyOptions());
-                    applyMigrationOnStage(new AddKeyspace(ksm));
+                    KsDef ksd = new KsDef(create.getName(),
+                                          create.getStrategyClass(),
+                                          Collections.<org.apache.cassandra.thrift.CfDef>emptyList())
+                                .setStrategy_options(create.getStrategyOptions());
+                    ThriftValidation.validateKsDef(ksd);
+                    applyMigrationOnStage(new AddKeyspace(KSMetaData.fromThrift(ksd)));
                 }
                 catch (ConfigurationException e)
                 {

Modified: cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java (original)
+++ cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java Tue May 10 19:03:58 2011
@@ -289,4 +289,19 @@ public abstract class AbstractReplicatio
         String className = cls.contains(".") ? cls : "org.apache.cassandra.locator." + cls;
         return FBUtilities.classForName(className, "replication strategy");
     }
+
+    protected void validateReplicationFactor(String rf) throws ConfigurationException
+    {
+        try
+        {
+            if (Integer.parseInt(rf) < 0)
+            {
+                throw new ConfigurationException("Replication factor must be non-negative; found " + rf);
+            }
+        }
+        catch (NumberFormatException e2)
+        {
+            throw new ConfigurationException("Replication factor must be numeric; found " + rf);
+        }
+    }
 }

Modified: cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java (original)
+++ cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java Tue May 10 19:03:58 2011
@@ -146,13 +146,9 @@ public class NetworkTopologyStrategy ext
 
     public void validateOptions() throws ConfigurationException
     {
-        for (Entry<String,String> e : this.configOptions.entrySet())
+        for (Entry<String, String> e : this.configOptions.entrySet())
         {
-            int rf = Integer.parseInt(e.getValue());
-            if (rf < 0)
-            {
-                throw new ConfigurationException("Replication factor for NTS must be non-negative. dc: " +e.getKey()+", rf: "+rf);
-            }
+            validateReplicationFactor(e.getValue());
         }
 
     }

Modified: cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/OldNetworkTopologyStrategy.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/OldNetworkTopologyStrategy.java?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/OldNetworkTopologyStrategy.java (original)
+++ cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/OldNetworkTopologyStrategy.java Tue May 10 19:03:58 2011
@@ -111,18 +111,10 @@ public class OldNetworkTopologyStrategy 
 
     public void validateOptions() throws ConfigurationException
     {
-        if (this.configOptions == null)
+        if (configOptions == null || configOptions.get("replication_factor") == null)
         {
-            throw new ConfigurationException("OldNetworkTopologyStrategy requires a replication_factor strategy option.");
-        }
-        if (this.configOptions.get("replication_factor") == null)
-        {
-            throw new ConfigurationException("OldNetworkTopologyStrategy requires a replication_factor strategy option.");
-        }
-        int rf = Integer.parseInt(this.configOptions.get("replication_factor"));
-        if (rf < 0)
-        {
-            throw new ConfigurationException("Replication factor for OldNetworkTopologyStrategy must be non-negative, "+rf+" given.");
+            throw new ConfigurationException("SimpleStrategy requires a replication_factor strategy option.");
         }
+        validateReplicationFactor(configOptions.get("replication_factor"));
     }
 }

Modified: cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/SimpleStrategy.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/SimpleStrategy.java?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/SimpleStrategy.java (original)
+++ cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/locator/SimpleStrategy.java Tue May 10 19:03:58 2011
@@ -70,18 +70,10 @@ public class SimpleStrategy extends Abst
 
     public void validateOptions() throws ConfigurationException
     {
-        if (this.configOptions == null)
+        if (configOptions == null || configOptions.get("replication_factor") == null)
         {
             throw new ConfigurationException("SimpleStrategy requires a replication_factor strategy option.");
         }
-        if (this.configOptions.get("replication_factor") == null)
-        {
-            throw new ConfigurationException("SimpleStrategy requires a replication_factor strategy option.");
-        }
-        int rf = Integer.parseInt(this.configOptions.get("replication_factor"));
-        if (rf < 0)
-        {
-            throw new ConfigurationException("Replication factor for SimpleStrategy must be non-negative, "+rf+" given.");
-        }
+        validateReplicationFactor(configOptions.get("replication_factor"));
     }
 }

Modified: cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/thrift/CassandraServer.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/thrift/CassandraServer.java?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/thrift/CassandraServer.java (original)
+++ cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/thrift/CassandraServer.java Tue May 10 19:03:58 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.1/src/java/org/apache/cassandra/thrift/ThriftValidation.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/thrift/ThriftValidation.java?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/thrift/ThriftValidation.java (original)
+++ cassandra/branches/cassandra-0.8.1/src/java/org/apache/cassandra/thrift/ThriftValidation.java Tue May 10 19:03:58 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);

Modified: cassandra/branches/cassandra-0.8.1/src/resources/org/apache/cassandra/cli/CliHelp.yaml
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8.1/src/resources/org/apache/cassandra/cli/CliHelp.yaml?rev=1101598&r1=1101597&r2=1101598&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8.1/src/resources/org/apache/cassandra/cli/CliHelp.yaml (original)
+++ cassandra/branches/cassandra-0.8.1/src/resources/org/apache/cassandra/cli/CliHelp.yaml Tue May 10 19:03:58 2011
@@ -391,7 +391,7 @@ commands:
           It is also valid to specify the fully-qualified class name to a class that
           extends org.apache.Cassandra.db.marshal.AbstractType.
 
-        - key_valiation_class: Validator to use for keys.
+        - key_validation_class: Validator to use for keys.
           Default is BytesType which applies no validation.
 
           Supported values are: