Author: jbellis
Date: Sat May  7 07:12:31 2011
New Revision: 1100470

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

Modified:
    cassandra/branches/cassandra-0.8/   (props changed)
    cassandra/branches/cassandra-0.8/CHANGES.txt
    cassandra/branches/cassandra-0.8/contrib/   (props changed)
    
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
   (props changed)
    
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
   (props changed)
    
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
   (props changed)
    
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
   (props changed)
    
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
   (props changed)
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/CFMetaData.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/ColumnDefinition.java
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
    
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/SchemaLoader.java
    
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java

Propchange: cassandra/branches/cassandra-0.8/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat May  7 07:12:31 2011
@@ -1,5 +1,5 @@
 
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7:1026516-1100448
+/cassandra/branches/cassandra-0.7:1026516-1100465
 /cassandra/branches/cassandra-0.7.0:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
 /cassandra/trunk:1090978-1090979

Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1100470&r1=1100469&r2=1100470&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Sat May  7 07:12:31 2011
@@ -28,6 +28,8 @@
  * remove unframed Thrift transport option
  * include indexes in snapshots (CASSANDRA-2596)
  * 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)
 
 
 0.8.0-beta1

Propchange: cassandra/branches/cassandra-0.8/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat May  7 07:12:31 2011
@@ -1,5 +1,5 @@
 
/cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
-/cassandra/branches/cassandra-0.7/contrib:1026516-1100448
+/cassandra/branches/cassandra-0.7/contrib:1026516-1100465
 /cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689
 /cassandra/trunk/contrib:1090978-1090979

Propchange: 
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat May  7 07:12:31 2011
@@ -1,5 +1,5 @@
 
/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-1100448
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1100465
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
 
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090978-1090979

Propchange: 
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat May  7 07:12:31 2011
@@ -1,5 +1,5 @@
 
/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-1100448
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1100465
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
 
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090978-1090979

Propchange: 
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat May  7 07:12:31 2011
@@ -1,5 +1,5 @@
 
/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-1100448
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1100465
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
 
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090978-1090979

Propchange: 
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat May  7 07:12:31 2011
@@ -1,5 +1,5 @@
 
/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-1100448
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1100465
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
 
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090978-1090979

Propchange: 
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat May  7 07:12:31 2011
@@ -1,5 +1,5 @@
 
/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-1100448
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1100465
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
 
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090978-1090979

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=1100470&r1=1100469&r2=1100470&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
 Sat May  7 07:12:31 2011
@@ -179,7 +179,7 @@ public final class CFMetaData
     public CFMetaData mergeShardsChance(double prop) {mergeShardsChance = 
prop; return this;}
     public CFMetaData keyAlias(ByteBuffer prop) {keyAlias = prop; return this;}
     public CFMetaData columnMetadata(Map<ByteBuffer,ColumnDefinition> prop) 
{column_metadata = prop; return this;}
-    public CFMetaData rowCacheProvider(IRowCacheProvider prop) { 
rowCacheProvider = prop; return this;};
+    public CFMetaData rowCacheProvider(IRowCacheProvider prop) { 
rowCacheProvider = prop; return this;}
 
     public CFMetaData(String keyspace, String name, ColumnFamilyType type, 
AbstractType comp, AbstractType subcc)
     {
@@ -718,19 +718,19 @@ public final class CFMetaData
             rowCacheProvider = 
FBUtilities.newCacheProvider(cf_def.row_cache_provider.toString());
         keyAlias = cf_def.key_alias;
 
-        // adjust secondary indexes. figure out who is coming and going.
+        // adjust column definitions. figure out who is coming and going.
         Set<ByteBuffer> toRemove = new HashSet<ByteBuffer>();
-        Set<ByteBuffer> newIndexNames = new HashSet<ByteBuffer>();
+        Set<ByteBuffer> newColumns = new HashSet<ByteBuffer>();
         Set<org.apache.cassandra.db.migration.avro.ColumnDef> toAdd = new 
HashSet<org.apache.cassandra.db.migration.avro.ColumnDef>();
         for (org.apache.cassandra.db.migration.avro.ColumnDef def : 
cf_def.column_metadata)
         {
-            newIndexNames.add(def.name);
+            newColumns.add(def.name);
             if (!column_metadata.containsKey(def.name))
                 toAdd.add(def);
         }
-        for (ByteBuffer indexName : column_metadata.keySet())
-            if (!newIndexNames.contains(indexName))
-                toRemove.add(indexName);
+        for (ByteBuffer name : column_metadata.keySet())
+            if (!newColumns.contains(name))
+                toRemove.add(name);
         
         // remove the ones leaving.
         for (ByteBuffer indexName : toRemove)

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/ColumnDefinition.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/ColumnDefinition.java?rev=1100470&r1=1100469&r2=1100470&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/ColumnDefinition.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/ColumnDefinition.java
 Sat May  7 07:12:31 2011
@@ -130,21 +130,6 @@ public class ColumnDefinition
         return cds;
     }
     
-    public static Map<ByteBuffer, ColumnDefinition> 
fromColumnDefs(Iterable<org.apache.cassandra.db.migration.avro.ColumnDef> 
avroDefs) throws ConfigurationException
-    {
-        if (avroDefs == null)
-            return Collections.emptyMap();
-
-        Map<ByteBuffer, ColumnDefinition> cds = new TreeMap<ByteBuffer, 
ColumnDefinition>();
-        for (org.apache.cassandra.db.migration.avro.ColumnDef avroColumnDef : 
avroDefs)
-        {
-            validateIndexType(avroColumnDef);
-            cds.put(avroColumnDef.name, fromColumnDef(avroColumnDef));
-        }
-
-        return Collections.unmodifiableMap(cds);
-    }
-
     public static void 
validateIndexType(org.apache.cassandra.db.migration.avro.ColumnDef 
avroColumnDef) throws ConfigurationException
     {
         if ((avroColumnDef.index_name != null) && (avroColumnDef.index_type == 
null))

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1100470&r1=1100469&r2=1100470&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
 Sat May  7 07:12:31 2011
@@ -219,7 +219,8 @@ public class ColumnFamilyStore implement
         // future: if/when we have modifiable settings for secondary indexes, 
they'll need to be handled here.
         for (ByteBuffer indexedColumn : indexedColumns.keySet())
         {
-            if (!metadata.getColumn_metadata().containsKey(indexedColumn))
+            ColumnDefinition def = 
metadata.getColumn_metadata().get(indexedColumn);
+            if (def == null || def.getIndexType() == null)
                 removeIndex(indexedColumn);
         }
 

Modified: 
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/SchemaLoader.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/SchemaLoader.java?rev=1100470&r1=1100469&r2=1100470&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/SchemaLoader.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/SchemaLoader.java
 Sat May  7 07:12:31 2011
@@ -64,6 +64,7 @@ public class SchemaLoader
         String ks3 = "Keyspace3";
         String ks4 = "Keyspace4";
         String ks5 = "Keyspace5";
+        String ks6 = "Keyspace6";
         String ks_kcs = "KeyCacheSpace";
         String ks_rcs = "RowCacheSpace";
 
@@ -181,6 +182,12 @@ public class SchemaLoader
                                   standardCFMD(ks5, "Counter1")
                                                
.defaultValidator(CounterColumnType.instance)));
 
+        // Keyspace 6
+        schema.add(new KSMetaData(ks6,
+                                  simple,
+                                  opts_rf1,
+                                  indexCFMD(ks6, "Indexed1", true)));
+
         // KeyCacheSpace
         schema.add(new KSMetaData(ks_kcs,
                                   simple,
@@ -214,13 +221,12 @@ public class SchemaLoader
     private static CFMetaData indexCFMD(String ksName, String cfName, final 
Boolean withIdxType)
     {
         return standardCFMD(ksName, cfName)
-                .columnMetadata(Collections.unmodifiableMap(new 
HashMap<ByteBuffer, ColumnDefinition>()
+                .columnMetadata(new HashMap<ByteBuffer, ColumnDefinition>()
                     {{
                         ByteBuffer cName = 
ByteBuffer.wrap("birthdate".getBytes(Charsets.UTF_8));
                         IndexType keys = withIdxType ? IndexType.KEYS : null;
-                        put(cName,
-                            new ColumnDefinition(cName, LongType.instance, 
keys, null));
-                    }}));
+                        put(cName, new ColumnDefinition(cName, 
LongType.instance, keys, null));
+                    }});
     }
     private static CFMetaData jdbcCFMD(String ksName, String cfName, 
AbstractType comp)
     {

Modified: 
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java?rev=1100470&r1=1100469&r2=1100470&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java
 Sat May  7 07:12:31 2011
@@ -23,14 +23,7 @@ import static org.junit.Assert.assertEqu
 import java.io.File;
 import java.io.IOException;
 import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.UUID;
+import java.util.*;
 import java.util.concurrent.ExecutionException;
 
 import org.apache.avro.util.Utf8;
@@ -55,6 +48,7 @@ import org.apache.cassandra.db.migration
 import org.apache.cassandra.db.migration.UpdateColumnFamily;
 import org.apache.cassandra.db.migration.UpdateKeyspace;
 import org.apache.cassandra.io.SerDeUtils;
+import org.apache.cassandra.io.sstable.Component;
 import org.apache.cassandra.io.sstable.Descriptor;
 import org.apache.cassandra.locator.OldNetworkTopologyStrategy;
 import org.apache.cassandra.locator.SimpleStrategy;
@@ -795,6 +789,33 @@ public class DefsTest extends CleanupHel
         }
     }
 
+    @Test
+    public void testDropIndex() throws IOException, ExecutionException, 
InterruptedException, ConfigurationException
+    {
+        // insert some data.  save the sstable descriptor so we can make sure 
it's marked for delete after the drop
+        RowMutation rm = new RowMutation("Keyspace6", 
ByteBufferUtil.bytes("k1"));
+        rm.add(new QueryPath("Indexed1", null, 
ByteBufferUtil.bytes("notbirthdate")), ByteBufferUtil.bytes(1L), 0);
+        rm.add(new QueryPath("Indexed1", null, 
ByteBufferUtil.bytes("birthdate")), ByteBufferUtil.bytes(1L), 0);
+        rm.apply();
+        ColumnFamilyStore cfs = 
Table.open("Keyspace6").getColumnFamilyStore("Indexed1");
+        cfs.forceBlockingFlush();
+        ColumnFamilyStore indexedCfs = 
cfs.getIndexedColumnFamilyStore(cfs.getIndexedColumns().iterator().next());
+        Descriptor desc = 
indexedCfs.getSSTables().iterator().next().descriptor;
+
+        // drop the index
+        CFMetaData meta = CFMetaData.rename(cfs.metadata, 
cfs.metadata.cfName); // abusing rename to clone
+        ColumnDefinition cdOld = 
meta.getColumn_metadata().values().iterator().next();
+        ColumnDefinition cdNew = new ColumnDefinition(cdOld.name, 
cdOld.getValidator(), null, null);
+        meta.columnMetadata(Collections.singletonMap(cdOld.name, cdNew));
+        UpdateColumnFamily update = new 
UpdateColumnFamily(CFMetaData.convertToAvro(meta));
+        update.apply();
+
+        // check
+        assert cfs.getIndexedColumns().isEmpty();
+        ColumnFamilyStore.scrubDataDirectories("Keyspace6", "Indexed1");
+        assert !new File(desc.filenameFor(Component.DATA)).exists();
+    }
+
     private CFMetaData addTestCF(String ks, String cf, String comment)
     {
         CFMetaData newCFMD = new CFMetaData(ks, cf, ColumnFamilyType.Standard, 
UTF8Type.instance, null);


Reply via email to