Updated Branches: refs/heads/cassandra-1.1 0d2410e78 -> f481a3916 refs/heads/cassandra-1.2 94f0b8568 -> 1b41d6fea refs/heads/trunk 958ba2ba0 -> eebf3fb15
Merge branch 'cassandra-1.2' into trunk Conflicts: test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/eebf3fb1 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/eebf3fb1 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/eebf3fb1 Branch: refs/heads/trunk Commit: eebf3fb1531476e1374affa025c45eaa7c970b8c Parents: 958ba2b 1b41d6f Author: Yuki Morishita <yu...@apache.org> Authored: Thu Jan 10 11:56:49 2013 -0600 Committer: Yuki Morishita <yu...@apache.org> Committed: Thu Jan 10 11:56:49 2013 -0600 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../cassandra/db/compaction/CompactionManager.java | 19 ++++-- .../cassandra/db/compaction/CompactionsTest.java | 46 +++++++++++++- 3 files changed, 55 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/eebf3fb1/CHANGES.txt ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/eebf3fb1/src/java/org/apache/cassandra/db/compaction/CompactionManager.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/eebf3fb1/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java ---------------------------------------------------------------------- diff --cc test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java index efef7bd,c918561..888d7bd --- a/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java +++ b/test/unit/org/apache/cassandra/db/compaction/CompactionsTest.java @@@ -36,7 -33,8 +33,8 @@@ import org.apache.cassandra.db.* import org.apache.cassandra.db.columniterator.IdentityQueryFilter; import org.apache.cassandra.db.columniterator.OnDiskAtomIterator; import org.apache.cassandra.db.filter.QueryFilter; -import org.apache.cassandra.db.filter.QueryPath; +import org.apache.cassandra.db.marshal.CompositeType; + import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.SSTableReader; import org.apache.cassandra.io.sstable.SSTableScanner; import org.apache.cassandra.io.util.FileUtils; @@@ -237,6 -235,46 +235,46 @@@ public class CompactionsTest extends Sc testDontPurgeAccidentaly("test2", "SuperDirectGC", true); } + @Test + public void testUserDefinedCompaction() throws Exception + { + Table table = Table.open(TABLE1); + final String cfname = "Standard3"; // use clean(no sstable) CF + ColumnFamilyStore cfs = table.getColumnFamilyStore(cfname); + + // disable compaction while flushing + cfs.disableAutoCompaction(); + + final int ROWS_PER_SSTABLE = 10; + for (int i = 0; i < ROWS_PER_SSTABLE; i++) { + DecoratedKey key = Util.dk(String.valueOf(i)); + RowMutation rm = new RowMutation(TABLE1, key.key); - rm.add(new QueryPath(cfname, null, ByteBufferUtil.bytes("col")), ++ rm.add(cfname, ByteBufferUtil.bytes("col"), + ByteBufferUtil.EMPTY_BYTE_BUFFER, + System.currentTimeMillis()); + rm.apply(); + } + cfs.forceBlockingFlush(); + Collection<SSTableReader> sstables = cfs.getSSTables(); + + assert sstables.size() == 1; + SSTableReader sstable = sstables.iterator().next(); + + int prevGeneration = sstable.descriptor.generation; + String file = new File(sstable.descriptor.filenameFor(Component.DATA)).getName(); + // submit user defined compaction on flushed sstable + CompactionManager.instance.forceUserDefinedCompaction(TABLE1, file); + // wait until user defined compaction finishes + do + { + Thread.sleep(100); + } while (CompactionManager.instance.getPendingTasks() > 0 || CompactionManager.instance.getActiveCompactions() > 0); + // CF should have only one sstable with generation number advanced + sstables = cfs.getSSTables(); + assert sstables.size() == 1; + assert sstables.iterator().next().descriptor.generation == prevGeneration + 1; + } + private void testDontPurgeAccidentaly(String k, String cfname, boolean forceDeserialize) throws IOException, ExecutionException, InterruptedException { // This test catches the regression of CASSANDRA-2786