mirror of https://github.com/apache/cassandra
test and fix for CF clone bug during remove. patch by Jun Rao; reviewed by jbellis for #33
git-svn-id: https://svn.apache.org/repos/asf/incubator/cassandra/trunk@766135 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
fa1f80f40d
commit
200d4937fa
|
|
@ -315,7 +315,7 @@ public class Memtable implements Comparable<Memtable>
|
|||
IColumn column = cFamily.getColumn(values[1]); // super or normal column
|
||||
if (column != null )
|
||||
{
|
||||
columnFamily = new ColumnFamily(cfName_, cFamily.type());
|
||||
columnFamily = cFamily.cloneMeShallow();
|
||||
columnFamily.addColumn(column);
|
||||
}
|
||||
}
|
||||
|
|
@ -328,7 +328,7 @@ public class Memtable implements Comparable<Memtable>
|
|||
IColumn subColumn = superColumn.getSubColumn(values[2]);
|
||||
if (subColumn != null)
|
||||
{
|
||||
columnFamily = new ColumnFamily(cfName_, cFamily.type());
|
||||
columnFamily = cFamily.cloneMeShallow();
|
||||
columnFamily.addColumn(values[1] + ":" + values[2], subColumn.value(), subColumn.timestamp(), subColumn.isMarkedForDelete());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -272,6 +272,29 @@ public class ColumnFamilyStoreTest extends ServerTest
|
|||
ColumnFamilyStore store = table.getColumnFamilyStore("Standard1");
|
||||
RowMutation rm;
|
||||
|
||||
// add data
|
||||
rm = new RowMutation("Table1", "key1");
|
||||
rm.add("Standard1:Column1", "asdf".getBytes(), 0);
|
||||
rm.apply();
|
||||
|
||||
// remove
|
||||
rm = new RowMutation("Table1", "key1");
|
||||
rm.delete("Standard1", 1);
|
||||
rm.apply();
|
||||
|
||||
ColumnFamily retrieved = store.getColumnFamily("key1", "Standard1:Column1", new IdentityFilter());
|
||||
assert retrieved.isMarkedForDelete();
|
||||
assertNull(retrieved.getColumn("Column1"));
|
||||
assertNull(ColumnFamilyStore.removeDeleted(retrieved, Integer.MAX_VALUE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveColumnFamilyWithFlush1() throws IOException, ColumnFamilyNotDefinedException, ExecutionException, InterruptedException
|
||||
{
|
||||
Table table = Table.open("Table1");
|
||||
ColumnFamilyStore store = table.getColumnFamilyStore("Standard1");
|
||||
RowMutation rm;
|
||||
|
||||
// add data
|
||||
rm = new RowMutation("Table1", "key1");
|
||||
rm.add("Standard1:Column1", "asdf".getBytes(), 0);
|
||||
|
|
@ -286,7 +309,30 @@ public class ColumnFamilyStoreTest extends ServerTest
|
|||
|
||||
ColumnFamily retrieved = store.getColumnFamily("key1", "Standard1", new IdentityFilter());
|
||||
assert retrieved.isMarkedForDelete();
|
||||
assertEquals(retrieved.getColumnCount(), 0);
|
||||
assertNull(retrieved.getColumn("Column1"));
|
||||
assertNull(ColumnFamilyStore.removeDeleted(retrieved, Integer.MAX_VALUE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveColumnFamilyWithFlush2() throws IOException, ColumnFamilyNotDefinedException, ExecutionException, InterruptedException
|
||||
{
|
||||
Table table = Table.open("Table1");
|
||||
ColumnFamilyStore store = table.getColumnFamilyStore("Standard1");
|
||||
RowMutation rm;
|
||||
|
||||
// add data
|
||||
rm = new RowMutation("Table1", "key1");
|
||||
rm.add("Standard1:Column1", "asdf".getBytes(), 0);
|
||||
rm.apply();
|
||||
// remove
|
||||
rm = new RowMutation("Table1", "key1");
|
||||
rm.delete("Standard1", 1);
|
||||
rm.apply();
|
||||
store.forceBlockingFlush();
|
||||
|
||||
ColumnFamily retrieved = store.getColumnFamily("key1", "Standard1:Column1", new IdentityFilter());
|
||||
assert retrieved.isMarkedForDelete();
|
||||
assertNull(retrieved.getColumn("Column1"));
|
||||
assertNull(ColumnFamilyStore.removeDeleted(retrieved, Integer.MAX_VALUE));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue