cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gdusba...@apache.org
Subject svn commit: r991560 - in /cassandra/trunk: interface/cassandra.genavro src/java/org/apache/cassandra/avro/CassandraServer.java
Date Wed, 01 Sep 2010 15:04:05 GMT
Author: gdusbabek
Date: Wed Sep  1 15:04:05 2010
New Revision: 991560

URL: http://svn.apache.org/viewvc?rev=991560&view=rev
Log:
bring avro system_add_keyspace on par with thrift

Modified:
    cassandra/trunk/interface/cassandra.genavro
    cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java

Modified: cassandra/trunk/interface/cassandra.genavro
URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/cassandra.genavro?rev=991560&r1=991559&r2=991560&view=diff
==============================================================================
--- cassandra/trunk/interface/cassandra.genavro (original)
+++ cassandra/trunk/interface/cassandra.genavro Wed Sep  1 15:04:05 2010
@@ -213,7 +213,7 @@ protocol Cassandra {
     string system_add_column_family(CfDef cf_def)
     throws InvalidRequestException;
 
-    void system_add_keyspace(KsDef ks_def) throws InvalidRequestException;
+    string system_add_keyspace(KsDef ks_def) throws InvalidRequestException;
     
     string system_rename_column_family(string old_name, string new_name)
     throws InvalidRequestException;

Modified: cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java?rev=991560&r1=991559&r2=991560&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java Wed Sep  1 15:04:05
2010
@@ -617,56 +617,32 @@ public class CassandraServer implements 
     }
 
     @Override
-    public Void system_add_keyspace(KsDef ksDef) throws AvroRemoteException, InvalidRequestException
+    public CharSequence system_add_keyspace(KsDef ksDef) throws AvroRemoteException, InvalidRequestException
     {
-        if (StageManager.getStage(StageManager.MIGRATION_STAGE).getQueue().size() > 0)
-            throw newInvalidRequestException("This node appears to be handling gossiped migrations.");
+        if (!(DatabaseDescriptor.getAuthenticator() instanceof AllowAllAuthenticator))
+            throw newInvalidRequestException("Unable to create new keyspace while authentication
is enabled.");
+        
+        if (StorageService.instance.getLiveNodes().size() < ksDef.replication_factor)
+            throw newInvalidRequestException("Not enough live nodes to support this keyspace");
+        
+        //generate a meaningful error if the user setup keyspace and/or column definition
incorrectly
+        for (CfDef cf : ksDef.cf_defs) 
+        {
+            if (!cf.keyspace.equals(ksDef.name))
+            {
+                throw newInvalidRequestException("CsDef (" + cf.name +") had a keyspace definition
that did not match KsDef");
+            }
+        }
         
         try
         {
             Collection<CFMetaData> cfDefs = new ArrayList<CFMetaData>((int)ksDef.cf_defs.size());
             for (CfDef cfDef : ksDef.cf_defs)
-            {
-                String cfType, compare, subCompare, reconcilerName, validate;
-                cfType = cfDef.column_type == null ? D_CF_CFTYPE : cfDef.column_type.toString();
-                ClockType clockType = ClockType.create(cfDef.clock_type == null ? D_CF_CFCLOCKTYPE
: cfDef.clock_type.toString());
-                compare = cfDef.comparator_type == null ? D_CF_COMPTYPE : cfDef.comparator_type.toString();
-                validate = cfDef.default_validation_class == null ? D_CF_COMPTYPE : cfDef.default_validation_class.toString();
-                subCompare = cfDef.subcomparator_type == null ? D_CF_SUBCOMPTYPE : cfDef.subcomparator_type.toString();
-                reconcilerName = cfDef.reconciler == null  ? D_CF_RECONCILER : cfDef.reconciler.toString();
-                
-                AbstractReconciler reconciler = DatabaseDescriptor.getReconciler(reconcilerName);
-                if (reconciler == null)
-                {
-                    if (clockType == ClockType.Timestamp)    
-                        reconciler = TimestampReconciler.instance; // default
-                    else
-                        throw new ConfigurationException("No reconciler specified for column
family " + cfDef.name.toString());
-
-                }
-
-                if (cfDef.id != null)
-                    logger.warn("Ignoring 'id' field specified for new column family (%s,
%s)", cfDef.keyspace, cfDef.name);
-
-                CFMetaData cfmeta = new CFMetaData(cfDef.keyspace.toString(),
-                                                   cfDef.name.toString(),
-                                                   ColumnFamilyType.create(cfType),
-                                                   clockType,
-                                                   DatabaseDescriptor.getComparator(compare),
-                                                   subCompare.length() == 0 ? null : DatabaseDescriptor.getComparator(subCompare),
-                                                   reconciler,
-                                                   cfDef.comment == null ? "" : cfDef.comment.toString(),
-                                                   cfDef.row_cache_size == null ? CFMetaData.DEFAULT_ROW_CACHE_SIZE
: cfDef.row_cache_size,
-                                                   cfDef.preload_row_cache == null ? CFMetaData.DEFAULT_PRELOAD_ROW_CACHE
: cfDef.preload_row_cache,
-                                                   cfDef.key_cache_size == null ? CFMetaData.DEFAULT_KEY_CACHE_SIZE
: cfDef.key_cache_size,
-                                                   cfDef.read_repair_chance == null ? CFMetaData.DEFAULT_READ_REPAIR_CHANCE
: cfDef.read_repair_chance,
-                                                   cfDef.gc_grace_seconds == null ? CFMetaData.DEFAULT_GC_GRACE_SECONDS
: cfDef.gc_grace_seconds,
-                                                   DatabaseDescriptor.getComparator(validate),
-                                                   Collections.<byte[], ColumnDefinition>emptyMap());
-                cfDefs.add(cfmeta);
+            {    
+                cfDefs.add(convertToCFMetaData(cfDef));
             }
 
-
+            // convert Map<CharSequence, CharSequence> to Map<String, String>

             Map<String, String> strategyOptions = null;
             if (ksDef.strategy_options != null && !ksDef.strategy_options.isEmpty())
             {
@@ -677,16 +653,15 @@ public class CassandraServer implements 
                 }
             }
 
-
             KSMetaData ksmeta = new KSMetaData(
                     ksDef.name.toString(),
                     (Class<? extends AbstractReplicationStrategy>)Class.forName(ksDef.strategy_class.toString()),
                     strategyOptions,
-                    (int)ksDef.replication_factor,
+                    ksDef.replication_factor,
                     cfDefs.toArray(new CFMetaData[cfDefs.size()]));
-            AddKeyspace add = new AddKeyspace(ksmeta);
-            add.apply();
-            add.announce();
+            applyMigrationOnStage(new AddKeyspace(ksmeta));
+            return DatabaseDescriptor.getDefsVersion().toString();
+            
         }
         catch (ClassNotFoundException e)
         {
@@ -706,8 +681,6 @@ public class CassandraServer implements 
             ire.initCause(e);
             throw ire;
         }
-        
-        return null;
     }
 
     @Override



Mime
View raw message