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/10/19 15:35:59 UTC

svn commit: r1186209 [2/2] - in /cassandra/trunk: ./ contrib/ contrib/pig/src/java/org/apache/cassandra/hadoop/pig/ interface/thrift/gen-java/org/apache/cassandra/thrift/ src/avro/ src/java/org/apache/cassandra/cli/ src/java/org/apache/cassandra/client...

Modified: cassandra/trunk/src/java/org/apache/cassandra/hadoop/ConfigHelper.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/hadoop/ConfigHelper.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/hadoop/ConfigHelper.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/hadoop/ConfigHelper.java Wed Oct 19 13:35:57 2011
@@ -19,9 +19,13 @@ package org.apache.cassandra.hadoop;
  * under the License.
  * 
  */
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.dht.IPartitioner;
+import org.apache.cassandra.thrift.Cassandra;
 import org.apache.cassandra.thrift.KeyRange;
 import org.apache.cassandra.thrift.SlicePredicate;
 import org.apache.cassandra.thrift.TBinaryProtocol;
@@ -31,6 +35,13 @@ import org.apache.hadoop.conf.Configurat
 import org.apache.thrift.TDeserializer;
 import org.apache.thrift.TException;
 import org.apache.thrift.TSerializer;
+import org.apache.thrift.transport.TFramedTransport;
+import org.apache.thrift.transport.TSocket;
+import org.apache.thrift.transport.TTransport;
+import org.apache.thrift.transport.TTransportException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 
 public class ConfigHelper
 {
@@ -54,6 +65,9 @@ public class ConfigHelper
     private static final String INITIAL_THRIFT_ADDRESS = "cassandra.thrift.address";
     private static final String READ_CONSISTENCY_LEVEL = "cassandra.consistencylevel.read";
     private static final String WRITE_CONSISTENCY_LEVEL = "cassandra.consistencylevel.write";
+    
+    private static final Logger logger = LoggerFactory.getLogger(ColumnFamilyInputFormat.class);
+
 
     /**
      * Set the keyspace and column family for the input of this job.
@@ -331,4 +345,50 @@ public class ConfigHelper
             throw new RuntimeException(e);
         }
     }
+    
+
+    public static Cassandra.Client getClientFromAddressList(Configuration conf) throws IOException
+    {
+        String[] addresses = ConfigHelper.getInitialAddress(conf).split(",");
+        Cassandra.Client client = null;
+        List<IOException> exceptions = new ArrayList<IOException>();
+        for (String address : addresses)
+        {
+            try
+            {
+                client = createConnection(address, ConfigHelper.getRpcPort(conf), true);
+                break;
+            }
+            catch (IOException ioe)
+            {
+                exceptions.add(ioe);
+            }
+        }
+        if (client == null)
+        {
+            logger.error("failed to connect to any initial addresses");
+            for (IOException ioe : exceptions)
+            {
+                logger.error("", ioe);
+            }
+            throw exceptions.get(exceptions.size() - 1);
+        }
+        return client;
+    }
+
+    public static Cassandra.Client createConnection(String host, Integer port, boolean framed)
+            throws IOException
+    {
+        TSocket socket = new TSocket(host, port);
+        TTransport trans = framed ? new TFramedTransport(socket) : socket;
+        try
+        {
+            trans.open();
+        }
+        catch (TTransportException e)
+        {
+            throw new IOException("unable to connect to server", e);
+        }
+        return new Cassandra.Client(new TBinaryProtocol(trans));
+    }
 }

Modified: cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressionMetadata.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressionMetadata.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressionMetadata.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressionMetadata.java Wed Oct 19 13:35:57 2011
@@ -199,7 +199,7 @@ public class CompressionMetadata
             seek(dataLengthOffset
                  + 8 // size reserved for uncompressed data length
                  + 4 // size reserved for chunk count
-                 + (chunkIndex * 8));
+                 + (chunkIndex * 8L));
 
             try
             {
@@ -221,7 +221,7 @@ public class CompressionMetadata
             seek(dataLengthOffset
                  + 8 // size reserved for uncompressed data length
                  + 4 // size reserved for chunk count
-                 + (chunkIndex * 8));
+                 + (chunkIndex * 8L));
             getChannel().truncate(getFilePointer());
         }
     }

Modified: cassandra/trunk/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java Wed Oct 19 13:35:57 2011
@@ -30,6 +30,9 @@ import org.apache.cassandra.utils.Closea
 import org.apache.cassandra.utils.IMergeIterator;
 import org.apache.cassandra.utils.MergeIterator;
 
+/**
+ * Caller must acquire and release references to the sstables used here.
+ */
 public class ReducingKeyIterator implements CloseableIterator<DecoratedKey>
 {
     private final IMergeIterator<DecoratedKey,DecoratedKey> mi;

Modified: cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java Wed Oct 19 13:35:57 2011
@@ -128,10 +128,14 @@ public class FileUtils
 
     public static void createDirectory(String directory) throws IOException
     {
-        File file = new File(directory);
-        if (!file.exists())
+        createDirectory(new File(directory));
+    }
+
+    public static void createDirectory(File directory) throws IOException
+    {
+        if (!directory.exists())
         {
-            if (!file.mkdirs())
+            if (!directory.mkdirs())
             {
                 throw new IOException("unable to mkdirs " + directory);
             }

Modified: cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java Wed Oct 19 13:35:57 2011
@@ -57,7 +57,12 @@ public class ClientState
     {
         reset();
     }
-    
+
+    public String getRawKeyspace()
+    {
+        return keyspace;
+    }
+
     public String getKeyspace() throws InvalidRequestException
     {
         if (keyspace == null)
@@ -150,6 +155,11 @@ public class ClientState
      */
     public void hasColumnFamilyAccess(String columnFamily, Permission perm) throws InvalidRequestException
     {
+        hasColumnFamilyAccess(keyspace, columnFamily, perm);
+    }
+
+    public void hasColumnFamilyAccess(String keyspace, String columnFamily, Permission perm) throws InvalidRequestException
+    {
         validateLogin();
         validateKeyspace();
         

Modified: cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java Wed Oct 19 13:35:57 2011
@@ -169,6 +169,7 @@ public class StorageProxy implements Sto
      */
     public static void mutate(List<? extends IMutation> mutations, ConsistencyLevel consistency_level) throws UnavailableException, TimeoutException
     {
+        logger.debug("Mutations/ConsistencyLevel are {}/{}", mutations, consistency_level);
         final String localDataCenter = DatabaseDescriptor.getEndpointSnitch().getDatacenter(FBUtilities.getBroadcastAddress());
 
         long startTime = System.nanoTime();

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=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java Wed Oct 19 13:35:57 2011
@@ -433,7 +433,7 @@ public class StorageService implements I
                 for (Table table : Table.all())
                 {
                     KSMetaData ksm = Schema.instance.getKSMetaData(table.name);
-                    if (!ksm.isDurableWrites())
+                    if (!ksm.durableWrites)
                     {
                         for (ColumnFamilyStore cfs : table.getColumnFamilyStores())
                         {

Modified: cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java Wed Oct 19 13:35:57 2011
@@ -126,18 +126,16 @@ public class StreamInSession
         if (files.isEmpty())
         {
             HashMap <ColumnFamilyStore, List<SSTableReader>> cfstores = new HashMap<ColumnFamilyStore, List<SSTableReader>>();
-            List<SSTableReader> referenced = new LinkedList<SSTableReader>();
             try
             {
                 for (SSTableReader sstable : readers)
                 {
                     assert sstable.getTableName().equals(table);
 
-                    // Acquiring the reference (for secondary index building) before adding it makes sure we don't have to care about races
+                    // Acquire the reference (for secondary index building) before submitting the index build,
+                    // so it can't get compacted out of existence in between
                     if (!sstable.acquireReference())
-                        throw new RuntimeException("We shouldn't fail acquiring a reference on a sstable that has just been transfered");
-
-                    referenced.add(sstable);
+                        throw new AssertionError("We shouldn't fail acquiring a reference on a sstable that has just been transfered");
 
                     ColumnFamilyStore cfs = Table.open(sstable.getTableName()).getColumnFamilyStore(sstable.getColumnFamilyName());
                     cfs.addSSTable(sstable);
@@ -155,7 +153,8 @@ public class StreamInSession
             }
             finally
             {
-                SSTableReader.releaseReferences(referenced);
+                for (List<SSTableReader> referenced : cfstores.values())
+                    SSTableReader.releaseReferences(referenced);
             }
 
             // send reply to source that we're done

Modified: cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java Wed Oct 19 13:35:57 2011
@@ -702,19 +702,11 @@ public class ThriftValidation
     {
         if (cf_def.isSetMin_compaction_threshold() && cf_def.isSetMax_compaction_threshold())
         {
-            if ((cf_def.min_compaction_threshold > cf_def.max_compaction_threshold)
-                && cf_def.max_compaction_threshold != 0)
-            {
-                throw new ConfigurationException("min_compaction_threshold cannot be greater than max_compaction_threshold");
-            }
+            validateMinCompactionThreshold(cf_def.min_compaction_threshold, cf_def.max_compaction_threshold);
         }
         else if (cf_def.isSetMin_compaction_threshold())
         {
-            if (cf_def.min_compaction_threshold > CFMetaData.DEFAULT_MAX_COMPACTION_THRESHOLD)
-            {
-                throw new ConfigurationException(String.format("min_compaction_threshold cannot be greather than max_compaction_threshold (default %d)",
-                                                               CFMetaData.DEFAULT_MAX_COMPACTION_THRESHOLD));
-            }
+            validateMinCompactionThreshold(cf_def.min_compaction_threshold, CFMetaData.DEFAULT_MAX_COMPACTION_THRESHOLD);
         }
         else if (cf_def.isSetMax_compaction_threshold())
         {
@@ -729,6 +721,26 @@ public class ThriftValidation
         }
     }
 
+    public static void validateMinCompactionThreshold(int min_compaction_threshold, int max_compaction_threshold) throws ConfigurationException
+    {
+        if (min_compaction_threshold <= 1)
+            throw new ConfigurationException("min_compaction_threshold cannot be less than 2.");
+
+        if (min_compaction_threshold > max_compaction_threshold && max_compaction_threshold != 0)
+            throw new ConfigurationException(String.format("min_compaction_threshold cannot be greater than max_compaction_threshold %d",
+                                                            max_compaction_threshold));
+    }
+
+    public static void validateMemtableSettings(org.apache.cassandra.thrift.CfDef cf_def) throws ConfigurationException
+    {
+        if (cf_def.isSetMemtable_flush_after_mins())
+            DatabaseDescriptor.validateMemtableFlushPeriod(cf_def.memtable_flush_after_mins);
+        if (cf_def.isSetMemtable_throughput_in_mb())
+            DatabaseDescriptor.validateMemtableThroughput(cf_def.memtable_throughput_in_mb);
+        if (cf_def.isSetMemtable_operations_in_millions())
+            DatabaseDescriptor.validateMemtableOperations(cf_def.memtable_operations_in_millions);
+    }
+
     public static void validateKeyspaceNotYetExisting(String newKsName) throws InvalidRequestException
     {
         // keyspace names must be unique case-insensitively because the keyspace name becomes the directory

Modified: cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java (original)
+++ cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java Wed Oct 19 13:35:57 2011
@@ -301,6 +301,8 @@ public abstract class TestBase
     protected List<InetAddress> endpointsForKey(InetAddress seed, ByteBuffer key, String keyspace)
         throws IOException
     {
+        Configuration conf = new Configuration();
+        
         RingCache ring = new RingCache(keyspace, new RandomPartitioner(), seed.getHostAddress(), 9160);
         List<InetAddress> privateendpoints = ring.getEndpoint(key);
         List<InetAddress> endpoints = new ArrayList<InetAddress>();

Modified: 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=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java Wed Oct 19 13:35:57 2011
@@ -111,142 +111,141 @@ public class SchemaLoader
             "Column42"));
 
         // Keyspace 1
-        schema.add(new KSMetaData(ks1,
-                                  simple,
-                                  opts_rf1,
-
-                                  // Column Families
-                                  standardCFMD(ks1, "Standard1"),
-                                  standardCFMD(ks1, "Standard2"),
-                                  standardCFMD(ks1, "Standard3"),
-                                  standardCFMD(ks1, "Standard4"),
-                                  standardCFMD(ks1, "StandardLong1"),
-                                  standardCFMD(ks1, "StandardLong2"),
-                                  new CFMetaData(ks1,
-                                                 "ValuesWithQuotes",
-                                                 st,
-                                                 BytesType.instance,
-                                                 null)
-                                                 .defaultValidator(UTF8Type.instance),
-                                  superCFMD(ks1, "Super1", LongType.instance),
-                                  superCFMD(ks1, "Super2", LongType.instance),
-                                  superCFMD(ks1, "Super3", LongType.instance),
-                                  superCFMD(ks1, "Super4", UTF8Type.instance),
-                                  superCFMD(ks1, "Super5", bytes),
-                                  indexCFMD(ks1, "Indexed1", true),
-                                  indexCFMD(ks1, "Indexed2", false),
-                                  new CFMetaData(ks1,
-                                                 "StandardInteger1",
-                                                 st,
-                                                 IntegerType.instance,
-                                                 null)
-                                                 .keyCacheSize(0),
-                                  new CFMetaData(ks1,
-                                                 "Counter1",
-                                                 st,
-                                                 bytes,
-                                                 null)
-                                                 .defaultValidator(CounterColumnType.instance)
-                                                 .mergeShardsChance(1.0),
-                                  new CFMetaData(ks1,
-                                                 "SuperCounter1",
-                                                 su,
-                                                 bytes,
-                                                 bytes)
-                                                 .defaultValidator(CounterColumnType.instance)
-                                                 .mergeShardsChance(1.0),
-                                  jdbcCFMD(ks1, "JdbcInteger", IntegerType.instance).columnMetadata(integerColumn),
-                                  jdbcCFMD(ks1, "JdbcUtf8", UTF8Type.instance).columnMetadata(utf8Column),
-                                  jdbcCFMD(ks1, "JdbcLong", LongType.instance),
-                                  jdbcCFMD(ks1, "JdbcBytes", bytes),
-                                  jdbcCFMD(ks1, "JdbcAscii", AsciiType.instance),
-                                  new CFMetaData(ks1,
-                                                 "StandardComposite",
-                                                 st,
-                                                 composite,
-                                                 null),
-                                  new CFMetaData(ks1,
-                                                 "StandardDynamicComposite",
-                                                 st,
-                                                 dynamicComposite,
-                                                 null)));
+        schema.add(KSMetaData.testMetadata(ks1,
+                                           simple,
+                                           opts_rf1,
+
+                                           // Column Families
+                                           standardCFMD(ks1, "Standard1"),
+                                           standardCFMD(ks1, "Standard2"),
+                                           standardCFMD(ks1, "Standard3"),
+                                           standardCFMD(ks1, "Standard4"),
+                                           standardCFMD(ks1, "StandardLong1"),
+                                           standardCFMD(ks1, "StandardLong2"),
+                                           new CFMetaData(ks1,
+                                                          "ValuesWithQuotes",
+                                                          st,
+                                                          BytesType.instance,
+                                                          null)
+                                                   .defaultValidator(UTF8Type.instance),
+                                           superCFMD(ks1, "Super1", LongType.instance),
+                                           superCFMD(ks1, "Super2", LongType.instance),
+                                           superCFMD(ks1, "Super3", LongType.instance),
+                                           superCFMD(ks1, "Super4", UTF8Type.instance),
+                                           superCFMD(ks1, "Super5", bytes),
+                                           indexCFMD(ks1, "Indexed1", true),
+                                           indexCFMD(ks1, "Indexed2", false),
+                                           new CFMetaData(ks1,
+                                                          "StandardInteger1",
+                                                          st,
+                                                          IntegerType.instance,
+                                                          null)
+                                                   .keyCacheSize(0),
+                                           new CFMetaData(ks1,
+                                                          "Counter1",
+                                                          st,
+                                                          bytes,
+                                                          null)
+                                                   .defaultValidator(CounterColumnType.instance)
+                                                   .mergeShardsChance(1.0),
+                                           new CFMetaData(ks1,
+                                                          "SuperCounter1",
+                                                          su,
+                                                          bytes,
+                                                          bytes)
+                                                   .defaultValidator(CounterColumnType.instance)
+                                                   .mergeShardsChance(1.0),
+                                           jdbcCFMD(ks1, "JdbcInteger", IntegerType.instance).columnMetadata(integerColumn),
+                                           jdbcCFMD(ks1, "JdbcUtf8", UTF8Type.instance).columnMetadata(utf8Column),
+                                           jdbcCFMD(ks1, "JdbcLong", LongType.instance),
+                                           jdbcCFMD(ks1, "JdbcBytes", bytes),
+                                           jdbcCFMD(ks1, "JdbcAscii", AsciiType.instance),
+                                           new CFMetaData(ks1,
+                                                          "StandardComposite",
+                                                          st,
+                                                          composite,
+                                                          null),
+                                           new CFMetaData(ks1,
+                                                          "StandardDynamicComposite",
+                                                          st,
+                                                          dynamicComposite,
+                                                          null)));
 
         // Keyspace 2
-        schema.add(new KSMetaData(ks2,
-                                  simple,
-                                  opts_rf1,
-
-                                  // Column Families
-                                  standardCFMD(ks2, "Standard1"),
-                                  standardCFMD(ks2, "Standard3"),
-                                  superCFMD(ks2, "Super3", bytes),
-                                  superCFMD(ks2, "Super4", TimeUUIDType.instance),
-                                  indexCFMD(ks2, "Indexed1", true)));
+        schema.add(KSMetaData.testMetadata(ks2,
+                                           simple,
+                                           opts_rf1,
+
+                                           // Column Families
+                                           standardCFMD(ks2, "Standard1"),
+                                           standardCFMD(ks2, "Standard3"),
+                                           superCFMD(ks2, "Super3", bytes),
+                                           superCFMD(ks2, "Super4", TimeUUIDType.instance),
+                                           indexCFMD(ks2, "Indexed1", true)));
 
         // Keyspace 3
-        schema.add(new KSMetaData(ks3,
-                                  simple,
-                                  opts_rf5,
-
-                                  // Column Families
-                                  standardCFMD(ks3, "Standard1"),
-                                  indexCFMD(ks3, "Indexed1", true)));
+        schema.add(KSMetaData.testMetadata(ks3,
+                                           simple,
+                                           opts_rf5,
+
+                                           // Column Families
+                                           standardCFMD(ks3, "Standard1"),
+                                           indexCFMD(ks3, "Indexed1", true)));
 
         // Keyspace 4
-        schema.add(new KSMetaData(ks4,
-                                  simple,
-                                  opts_rf3,
-
-                                  // Column Families
-                                  standardCFMD(ks4, "Standard1"),
-                                  standardCFMD(ks4, "Standard3"),
-                                  superCFMD(ks4, "Super3", bytes),
-                                  superCFMD(ks4, "Super4", TimeUUIDType.instance),
-                                  new CFMetaData(ks4,
-                                                 "Super5",
-                                                 su,
-                                                 TimeUUIDType.instance,
-                                                 bytes)
-                                                 .keyCacheSize(0)));
+        schema.add(KSMetaData.testMetadata(ks4,
+                                           simple,
+                                           opts_rf3,
+
+                                           // Column Families
+                                           standardCFMD(ks4, "Standard1"),
+                                           standardCFMD(ks4, "Standard3"),
+                                           superCFMD(ks4, "Super3", bytes),
+                                           superCFMD(ks4, "Super4", TimeUUIDType.instance),
+                                           new CFMetaData(ks4,
+                                                          "Super5",
+                                                          su,
+                                                          TimeUUIDType.instance,
+                                                          bytes)
+                                                   .keyCacheSize(0)));
 
         // Keyspace 5
-        schema.add(new KSMetaData(ks5,
-                                  simple,
-                                  opts_rf2,
-                                  standardCFMD(ks5, "Standard1"),
-                                  standardCFMD(ks5, "Counter1")
-                                               .defaultValidator(CounterColumnType.instance)));
+        schema.add(KSMetaData.testMetadata(ks5,
+                                           simple,
+                                           opts_rf2,
+                                           standardCFMD(ks5, "Standard1"),
+                                           standardCFMD(ks5, "Counter1")
+                                                   .defaultValidator(CounterColumnType.instance)));
 
         // Keyspace 6
-        schema.add(new KSMetaData(ks6,
-                                  simple,
-                                  opts_rf1,
-                                  indexCFMD(ks6, "Indexed1", true)));
+        schema.add(KSMetaData.testMetadata(ks6,
+                                           simple,
+                                           opts_rf1,
+                                           indexCFMD(ks6, "Indexed1", true)));
 
         // KeyCacheSpace
-        schema.add(new KSMetaData(ks_kcs,
-                                  simple,
-                                  opts_rf1,
-                                  standardCFMD(ks_kcs, "Standard1")
-                                              .keyCacheSize(0.5),
-                                  standardCFMD(ks_kcs, "Standard2")
-                                              .keyCacheSize(1.0),
-                                  standardCFMD(ks_kcs, "Standard3")
-                                              .keyCacheSize(1.0)));
+        schema.add(KSMetaData.testMetadata(ks_kcs,
+                                           simple,
+                                           opts_rf1,
+                                           standardCFMD(ks_kcs, "Standard1")
+                                                   .keyCacheSize(0.5),
+                                           standardCFMD(ks_kcs, "Standard2")
+                                                   .keyCacheSize(1.0),
+                                           standardCFMD(ks_kcs, "Standard3")
+                                                   .keyCacheSize(1.0)));
 
         // RowCacheSpace
-        schema.add(new KSMetaData(ks_rcs,
-                                  simple,
-                                  opts_rf1,
-                                  standardCFMD(ks_rcs, "CFWithoutCache"),
-                                  standardCFMD(ks_rcs, "CachedCF")
-                                              .rowCacheSize(100)));
-
-        schema.add(new KSMetaData(ks_nocommit,
-                simple,
-                opts_rf1,
-                false,
-                standardCFMD(ks_nocommit, "Standard1")));
+        schema.add(KSMetaData.testMetadata(ks_rcs,
+                                           simple,
+                                           opts_rf1,
+                                           standardCFMD(ks_rcs, "CFWithoutCache"),
+                                           standardCFMD(ks_rcs, "CachedCF")
+                                                   .rowCacheSize(100)));
+
+        schema.add(KSMetaData.testMetadataNotDurable(ks_nocommit,
+                                                     simple,
+                                                     opts_rf1,
+                                                     standardCFMD(ks_nocommit, "Standard1")));
 
 
         if (Boolean.parseBoolean(System.getProperty("cassandra.test.compression", "false")))

Modified: cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java Wed Oct 19 13:35:57 2011
@@ -158,6 +158,7 @@ public class CliTest extends CleanupHelp
         "drop column family cF8;",
         "create keyspace TESTIN;",
         "drop keyspace tesTIN;",
+        "update column family 123 with comparator=UTF8Type and column_metadata=[];",
         "drop column family 123;",
         "create column family myCF with column_type='Super' and comparator='UTF8Type' AND subcomparator='UTF8Type';",
         "assume myCF keys as utf8;",

Modified: cassandra/trunk/test/unit/org/apache/cassandra/client/TestRingCache.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/client/TestRingCache.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/client/TestRingCache.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/client/TestRingCache.java Wed Oct 19 13:35:57 2011
@@ -23,16 +23,18 @@ import java.nio.ByteBuffer;
 import java.util.Collection;
 
 import org.apache.cassandra.config.DatabaseDescriptor;
+import org.apache.cassandra.hadoop.ConfigHelper;
 import org.apache.cassandra.thrift.Cassandra;
 import org.apache.cassandra.thrift.Column;
 import org.apache.cassandra.thrift.ColumnParent;
 import org.apache.cassandra.thrift.ColumnPath;
 import org.apache.cassandra.thrift.ConsistencyLevel;
+import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.commons.lang.StringUtils;
+import org.apache.hadoop.conf.Configuration;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.transport.TFramedTransport;
 import org.apache.thrift.transport.TSocket;
-import org.apache.cassandra.utils.ByteBufferUtil;
 
 
 /**
@@ -42,11 +44,12 @@ public class TestRingCache
 {
     private RingCache ringCache;
     private Cassandra.Client thriftClient;
+    private Configuration conf;
 
     public TestRingCache(String keyspace) throws IOException
     {
-        String seed = DatabaseDescriptor.getSeeds().iterator().next().getHostAddress();
-    	ringCache = new RingCache(keyspace, DatabaseDescriptor.getPartitioner(), seed, DatabaseDescriptor.getRpcPort());
+        ConfigHelper.setOutputColumnFamily(conf, keyspace, "Standard1");
+    	ringCache = new RingCache(conf);
     }
     
     private void setup(String server, int port) throws Exception
@@ -58,6 +61,12 @@ public class TestRingCache
         Cassandra.Client cassandraClient = new Cassandra.Client(binaryProtocol);
         socket.open();
         thriftClient = cassandraClient;
+        String seed = DatabaseDescriptor.getSeeds().iterator().next().getHostAddress();
+        conf = new Configuration();
+        ConfigHelper.setPartitioner(conf, DatabaseDescriptor.getPartitioner().getClass().getName());
+        ConfigHelper.setInitialAddress(conf, seed);
+        ConfigHelper.setRpcPort(conf, Integer.toString(DatabaseDescriptor.getRpcPort()));
+
     }
 
     /**

Modified: cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java Wed Oct 19 13:35:57 2011
@@ -80,9 +80,9 @@ public class DatabaseDescriptorTest
         assert Schema.instance.getNonSystemTables().size() == 0;
         
         // add a few.
-        AddKeyspace ks0 = new AddKeyspace(new KSMetaData("ks0", SimpleStrategy.class, KSMetaData.optsWithRF(3)));
+        AddKeyspace ks0 = new AddKeyspace(KSMetaData.testMetadata("ks0", SimpleStrategy.class, KSMetaData.optsWithRF(3)));
         ks0.apply();
-        AddKeyspace ks1 = new AddKeyspace(new KSMetaData("ks1", SimpleStrategy.class, KSMetaData.optsWithRF(3)));
+        AddKeyspace ks1 = new AddKeyspace(KSMetaData.testMetadata("ks1", SimpleStrategy.class, KSMetaData.optsWithRF(3)));
         ks1.apply();
 
         assert Schema.instance.getTableDefinition("ks0") != null;

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=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java Wed Oct 19 13:35:57 2011
@@ -39,8 +39,6 @@ import org.apache.cassandra.db.migration
 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.io.SerDeUtils;
@@ -207,24 +205,18 @@ public class DefsTest extends CleanupHel
         UUID ver1 = m1.getVersion();
         assert Schema.instance.getVersion().equals(ver1);
         
-        // rename it.
-        Migration m2 = new RenameColumnFamily("Keyspace1", "MigrationCf_1", "MigrationCf_2");
-        m2.apply();
-        UUID ver2 = m2.getVersion();
-        assert Schema.instance.getVersion().equals(ver2);
-        
         // drop it.
-        Migration m3 = new DropColumnFamily("Keyspace1", "MigrationCf_2");
+        Migration m3 = new DropColumnFamily("Keyspace1", "MigrationCf_1");
         m3.apply();
         UUID ver3 = m3.getVersion();
         assert Schema.instance.getVersion().equals(ver3);
         
         // now lets load the older migrations to see if that code works.
         Collection<IColumn> serializedMigrations = Migration.getLocalMigrations(ver1, ver3);
-        assert serializedMigrations.size() == 3;
+        assert serializedMigrations.size() == 2;
         
         // test deserialization of the migrations.
-        Migration[] reconstituded = new Migration[3];
+        Migration[] reconstituded = new Migration[2];
         int i = 0;
         for (IColumn col : serializedMigrations)
         {
@@ -235,13 +227,11 @@ public class DefsTest extends CleanupHel
         }
         
         assert m1.getClass().equals(reconstituded[0].getClass());
-        assert m2.getClass().equals(reconstituded[1].getClass());
-        assert m3.getClass().equals(reconstituded[2].getClass());
+        assert m3.getClass().equals(reconstituded[1].getClass());
         
         // verify that the row mutations are the same. rather than exposing the private fields, serialize and verify.
         assert m1.serialize().equals(reconstituded[0].serialize());
-        assert m2.serialize().equals(reconstituded[1].serialize());
-        assert m3.serialize().equals(reconstituded[2].serialize());
+        assert m3.serialize().equals(reconstituded[1].serialize());
     }
     
     @Test
@@ -336,60 +326,14 @@ public class DefsTest extends CleanupHel
                 throw new AssertionError("undeleted file " + file);
         }
     }
-    
-    @Test
-    public void renameCf() throws ConfigurationException, IOException, ExecutionException, InterruptedException
-    {
-        DecoratedKey dk = Util.dk("key0");
-        final KSMetaData ks = Schema.instance.getTableDefinition("Keyspace2");
-        assert ks != null;
-        final CFMetaData oldCfm = ks.cfMetaData().get("Standard1");
-        assert oldCfm != null;
-        
-        // write some data, force a flush, then verify that files exist on disk.
-        RowMutation rm = new RowMutation(ks.name, dk.key);
-        for (int i = 0; i < 100; i++)
-            rm.add(new QueryPath(oldCfm.cfName, null, ByteBufferUtil.bytes(("col" + i))), ByteBufferUtil.bytes("anyvalue"), 1L);
-        rm.apply();
-        ColumnFamilyStore store = Table.open(oldCfm.ksName).getColumnFamilyStore(oldCfm.cfName);
-        assert store != null;
-        store.forceBlockingFlush();
-        int fileCount = DefsTable.getFiles(oldCfm.ksName, oldCfm.cfName).size();
-        assert fileCount > 0;
-        
-        final String cfName = "St4ndard1Replacement";
-        new RenameColumnFamily(oldCfm.ksName, oldCfm.cfName, cfName).apply();
 
-        assert !Schema.instance.getTableDefinition(ks.name).cfMetaData().containsKey(oldCfm.cfName);
-        assert Schema.instance.getTableDefinition(ks.name).cfMetaData().containsKey(cfName);
-        
-        // verify that new files are there.
-        assert DefsTable.getFiles(oldCfm.ksName, cfName).size() == fileCount;
-        
-        // do some reads.
-        store = Table.open(oldCfm.ksName).getColumnFamilyStore(cfName);
-        assert store != null;
-        ColumnFamily cfam = store.getColumnFamily(QueryFilter.getSliceFilter(dk, new QueryPath(cfName), ByteBufferUtil.EMPTY_BYTE_BUFFER, ByteBufferUtil.EMPTY_BYTE_BUFFER, false, 1000));
-        assert cfam.getSortedColumns().size() == 100; // should be good enough?
-        
-        // do some writes
-        rm = new RowMutation(ks.name, dk.key);
-        rm.add(new QueryPath(cfName, null, ByteBufferUtil.bytes("col5")), ByteBufferUtil.bytes("updated"), 2L);
-        rm.apply();
-        store.forceBlockingFlush();
-        
-        cfam = store.getColumnFamily(QueryFilter.getNamesFilter(dk, new QueryPath(cfName), ByteBufferUtil.bytes("col5")));
-        assert cfam.getColumnCount() == 1;
-        assert cfam.getColumn(ByteBufferUtil.bytes("col5")).value().equals( ByteBufferUtil.bytes("updated"));
-    }
-    
     @Test
     public void addNewKS() throws ConfigurationException, IOException, ExecutionException, InterruptedException
     {
         DecoratedKey dk = Util.dk("key0");
         CFMetaData newCf = addTestCF("NewKeyspace1", "AddedStandard1", "A new cf for a new ks");
 
-        KSMetaData newKs = new KSMetaData(newCf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(5), newCf);
+        KSMetaData newKs = KSMetaData.testMetadata(newCf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(5), newCf);
         
         new AddKeyspace(newKs).apply();
 
@@ -483,92 +427,11 @@ public class DefsTest extends CleanupHel
     }
 
     @Test
-    public void renameKs() throws ConfigurationException, IOException, ExecutionException, InterruptedException
-    {
-        DecoratedKey dk = Util.dk("renameKs");
-        final KSMetaData oldKs = Schema.instance.getTableDefinition("Keyspace2");
-        assert oldKs != null;
-        final String cfName = "Standard3";
-        assert oldKs.cfMetaData().containsKey(cfName);
-        assert oldKs.cfMetaData().get(cfName).ksName.equals(oldKs.name);
-        
-        // write some data that we hope to read back later.
-        RowMutation rm = new RowMutation(oldKs.name, dk.key);
-        for (int i = 0; i < 10; i++)
-            rm.add(new QueryPath(cfName, null, ByteBufferUtil.bytes(("col" + i))), ByteBufferUtil.bytes("value"), 1L);
-        rm.apply();
-        ColumnFamilyStore store = Table.open(oldKs.name).getColumnFamilyStore(cfName);
-        assert store != null;
-        store.forceBlockingFlush();
-        assert DefsTable.getFiles(oldKs.name, cfName).size() > 0;
-        
-        final String newKsName = "RenamedKeyspace2";
-        new RenameKeyspace(oldKs.name, newKsName).apply();
-        KSMetaData newKs = Schema.instance.getTableDefinition(newKsName);
-
-        assert Schema.instance.getTableDefinition(oldKs.name) == null;
-        assert newKs != null;
-        assert newKs.name.equals(newKsName);
-        assert newKs.cfMetaData().containsKey(cfName);
-        assert newKs.cfMetaData().get(cfName).ksName.equals(newKsName);
-        assert DefsTable.getFiles(newKs.name, cfName).size() > 0;
-        
-        // read on old should fail.
-        // reads should fail too.
-        boolean threw = false;
-        try
-        {
-            Table.open(oldKs.name);
-        }
-        catch (Throwable th)
-        {
-            threw = true;
-        }
-        assert threw;
-        
-        // write on old should fail.
-        rm = new RowMutation(oldKs.name, ByteBufferUtil.bytes("any key will do"));
-        boolean success = true;
-        try
-        {
-            rm.add(new QueryPath(cfName, null, ByteBufferUtil.bytes("col0")), ByteBufferUtil.bytes("value0"), 1L);
-            rm.apply();
-        }
-        catch (Throwable th)
-        {
-            success = false;
-        }
-        assert !success : "This mutation should have failed since the CF/Table no longer exists.";
-        
-        // write on new should work.
-        rm = new RowMutation(newKsName, dk.key);
-        rm.add(new QueryPath(cfName, null, ByteBufferUtil.bytes("col0")), ByteBufferUtil.bytes("newvalue"), 2L);
-        rm.apply();
-        store = Table.open(newKs.name).getColumnFamilyStore(cfName);
-        assert store != null;
-        store.forceBlockingFlush();
-        
-        // read on new should work.
-        SortedSet<ByteBuffer> cols = new TreeSet<ByteBuffer>(BytesType.instance);
-        cols.add(ByteBufferUtil.bytes("col0"));
-        cols.add(ByteBufferUtil.bytes("col1"));
-        ColumnFamily cfam = store.getColumnFamily(QueryFilter.getNamesFilter(dk, new QueryPath(cfName), cols));
-        assert cfam.getColumnCount() == cols.size();
-        // tests new write.
-        
-        ByteBuffer val = cfam.getColumn(ByteBufferUtil.bytes("col0")).value();
-        assertEquals(ByteBufferUtil.string(val), "newvalue");
-        // tests old write.
-         val = cfam.getColumn(ByteBufferUtil.bytes("col1")).value();
-        assertEquals(ByteBufferUtil.string(val), "value");
-    }
-
-    @Test
     public void createEmptyKsAddNewCf() throws ConfigurationException, IOException, ExecutionException, InterruptedException
     {
         assert Schema.instance.getTableDefinition("EmptyKeyspace") == null;
         
-        KSMetaData newKs = new KSMetaData("EmptyKeyspace", SimpleStrategy.class, KSMetaData.optsWithRF(5));
+        KSMetaData newKs = KSMetaData.testMetadata("EmptyKeyspace", SimpleStrategy.class, KSMetaData.optsWithRF(5));
 
         new AddKeyspace(newKs).apply();
         assert Schema.instance.getTableDefinition("EmptyKeyspace") != null;
@@ -604,7 +467,7 @@ public class DefsTest extends CleanupHel
     {
         // create a keyspace to serve as existing.
         CFMetaData cf = addTestCF("UpdatedKeyspace", "AddedStandard1", "A new cf for a new ks");
-        KSMetaData oldKs = new KSMetaData(cf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(5), cf);
+        KSMetaData oldKs = KSMetaData.testMetadata(cf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(5), cf);
         
         new AddKeyspace(oldKs).apply();
 
@@ -613,7 +476,7 @@ public class DefsTest extends CleanupHel
         
         // anything with cf defs should fail.
         CFMetaData cf2 = addTestCF(cf.ksName, "AddedStandard2", "A new cf for a new ks");
-        KSMetaData newBadKs = new KSMetaData(cf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(4), cf2);
+        KSMetaData newBadKs = KSMetaData.testMetadata(cf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(4), cf2);
         try
         {
             new UpdateKeyspace(newBadKs).apply();
@@ -625,7 +488,7 @@ public class DefsTest extends CleanupHel
         }
         
         // names should match.
-        KSMetaData newBadKs2 = new KSMetaData(cf.ksName + "trash", SimpleStrategy.class, KSMetaData.optsWithRF(4));
+        KSMetaData newBadKs2 = KSMetaData.testMetadata(cf.ksName + "trash", SimpleStrategy.class, KSMetaData.optsWithRF(4));
         try
         {
             new UpdateKeyspace(newBadKs2).apply();
@@ -636,7 +499,7 @@ public class DefsTest extends CleanupHel
             // expected.
         }
         
-        KSMetaData newKs = new KSMetaData(cf.ksName, OldNetworkTopologyStrategy.class, KSMetaData.optsWithRF(1));
+        KSMetaData newKs = KSMetaData.testMetadata(cf.ksName, OldNetworkTopologyStrategy.class, KSMetaData.optsWithRF(1));
         new UpdateKeyspace(newKs).apply();
 
         KSMetaData newFetchedKs = Schema.instance.getKSMetaData(newKs.name);
@@ -649,7 +512,7 @@ public class DefsTest extends CleanupHel
     {
         // create a keyspace with a cf to update.
         CFMetaData cf = addTestCF("UpdatedCfKs", "Standard1added", "A new cf that will be updated");
-        KSMetaData ksm = new KSMetaData(cf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(1), cf);
+        KSMetaData ksm = KSMetaData.testMetadata(cf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(1), cf);
         new AddKeyspace(ksm).apply();
 
         assert Schema.instance.getTableDefinition(cf.ksName) != null;