diff --git a/CHANGES.txt b/CHANGES.txt index 00d2cc4a59..8a695ff643 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -16,6 +16,7 @@ * Fix for discarding unneeded commitlog segments (CASSANDRA-459) * Add SnapshotBeforeCompaction configuration option (CASSANDRA-426) * Fix compaction abort under insufficient disk space (CASSANDRA-473) + * Fix reading subcolumn slice from tombstoned CF (CASSANDRA-484) 0.4.0 diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index b70c1fccc1..c51f6467a9 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -1080,7 +1080,7 @@ public final class ColumnFamilyStore implements ColumnFamilyStoreMBean { QueryFilter nameFilter = new NamesQueryFilter(filter.key, new QueryPath(columnFamily_), filter.path.superColumnName); ColumnFamily cf = getColumnFamily(nameFilter); - if (cf == null) + if (cf == null || cf.getColumnCount() == 0) return cf; assert cf.getSortedColumns().size() == 1; diff --git a/test/system/test_server.py b/test/system/test_server.py index a4149547ee..e9053927ce 100644 --- a/test/system/test_server.py +++ b/test/system/test_server.py @@ -367,7 +367,7 @@ class TestMutations(CassandraTester): _insert_simple() _insert_super() - # Remove the key1:Standard1 cf: + # Remove the key1:Standard1 cf; verify super is unaffected client.remove('Keyspace1', 'key1', ColumnPath('Standard1'), 3, ConsistencyLevel.ONE) assert _big_slice('Keyspace1', 'key1', ColumnParent('Standard1')) == [] _verify_super() @@ -381,6 +381,11 @@ class TestMutations(CassandraTester): assert _big_slice('Keyspace1', 'key1', ColumnParent('Standard1')) == \ [ColumnOrSuperColumn(column=Column('c1', 'value1', 4))] + # check removing the entire super cf, too. + client.remove('Keyspace1', 'key1', ColumnPath('Super1'), 3, ConsistencyLevel.ONE) + assert _big_slice('Keyspace1', 'key1', ColumnParent('Super1')) == [] + assert _big_slice('Keyspace1', 'key1', ColumnParent('Super1', 'sc1')) == [] + def test_super_cf_remove_column(self): _insert_simple()