cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From brandonwilli...@apache.org
Subject svn commit: r1076699 - in /cassandra/branches/cassandra-0.7: src/java/org/apache/cassandra/db/ColumnFamilyStore.java test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
Date Thu, 03 Mar 2011 17:40:59 GMT
Author: brandonwilliams
Date: Thu Mar  3 17:40:59 2011
New Revision: 1076699

URL: http://svn.apache.org/viewvc?rev=1076699&view=rev
Log:
CFS correctly flushes index CFs.
Patch by jbellis, reviewed by brandonwilliams for CASSANDRA-2244

Modified:
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
    cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1076699&r1=1076698&r2=1076699&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
(original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
Thu Mar  3 17:40:59 2011
@@ -685,8 +685,11 @@ public class ColumnFamilyStore implement
         {
             if (oldMemtable.isFrozen())
                 return null;
-            
-            if (DatabaseDescriptor.getCFMetaData(metadata.cfId) == null)
+
+            boolean isDropped = isIndex()
+                              ? DatabaseDescriptor.getCFMetaData(table.name, getParentColumnfamily())
== null
+                              : DatabaseDescriptor.getCFMetaData(metadata.cfId) == null;
+            if (isDropped)
                 return null; // column family was dropped. no point in flushing.
 
             assert memtable == oldMemtable;
@@ -2113,6 +2116,12 @@ public class ColumnFamilyStore implement
         return partitioner instanceof LocalPartitioner;
     }
 
+    private String getParentColumnfamily()
+    {
+        assert isIndex();
+        return columnFamily.split("\\.")[0];
+    }
+
     /**
      * sets each cache's maximum capacity to 75% of its current size
      */

Modified: cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java?rev=1076699&r1=1076698&r2=1076699&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
(original)
+++ cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
Thu Mar  3 17:40:59 2011
@@ -307,7 +307,7 @@ public class ColumnFamilyStoreTest exten
     }
 
     @Test
-    public void testIndexCreate() throws IOException, ConfigurationException, InterruptedException
+    public void testIndexCreate() throws IOException, ConfigurationException, InterruptedException,
ExecutionException
     {
         Table table = Table.open("Keyspace1");
 
@@ -324,6 +324,9 @@ public class ColumnFamilyStoreTest exten
         while (!SystemTable.isIndexBuilt("Keyspace1", cfs.getIndexedColumnFamilyStore(ByteBufferUtil.bytes("birthdate")).columnFamily))
             TimeUnit.MILLISECONDS.sleep(100);
 
+        // we had a bug (CASSANDRA-2244) where index would get created but not flushed --
check for that  
+        assert cfs.getIndexedColumnFamilyStore(cd.name).getSSTables().size() > 0;
+
         IndexExpression expr = new IndexExpression(ByteBufferUtil.bytes("birthdate"), IndexOperator.EQ,
ByteBufferUtil.bytes(1L));
         IndexClause clause = new IndexClause(Arrays.asList(expr), ByteBufferUtil.EMPTY_BYTE_BUFFER,
100);
         IFilter filter = new IdentityQueryFilter();
@@ -331,8 +334,7 @@ public class ColumnFamilyStoreTest exten
         Range range = new Range(p.getMinimumToken(), p.getMinimumToken());
         List<Row> rows = table.getColumnFamilyStore("Indexed2").scan(clause, range,
filter);
         assert rows.size() == 1 : StringUtils.join(rows, ",");
-        String key = new String(rows.get(0).key.key.array(),rows.get(0).key.key.position(),rows.get(0).key.key.remaining());

-        assert "k1".equals( key );        
+        assertEquals("k1", ByteBufferUtil.string(rows.get(0).key.key));        
     }
     
     @Test



Mime
View raw message