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 <[email protected]>
Authored: Thu Jan 10 11:56:49 2013 -0600
Committer: Yuki Morishita <[email protected]>
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