Search in sources :

Example 16 with CompactionIterator

use of org.apache.cassandra.db.compaction.CompactionIterator in project cassandra by apache.

the class SSTableRewriterTest method testSmallFiles.

@Test
public void testSmallFiles() {
    Keyspace keyspace = Keyspace.open(KEYSPACE);
    ColumnFamilyStore cfs = keyspace.getColumnFamilyStore(CF);
    truncate(cfs);
    cfs.disableAutoCompaction();
    SSTableReader s = writeFile(cfs, 400);
    cfs.addSSTable(s);
    Set<SSTableReader> compacting = Sets.newHashSet(s);
    List<SSTableReader> sstables;
    int files = 1;
    try (ISSTableScanner scanner = s.getScanner();
        CompactionController controller = new CompactionController(cfs, compacting, 0);
        LifecycleTransaction txn = cfs.getTracker().tryModify(compacting, OperationType.UNKNOWN);
        SSTableRewriter rewriter = new SSTableRewriter(txn, 1000, 1000000, false, true);
        CompactionIterator ci = new CompactionIterator(OperationType.COMPACTION, Collections.singletonList(scanner), controller, FBUtilities.nowInSeconds(), UUIDGen.getTimeUUID())) {
        rewriter.switchWriter(getWriter(cfs, s.descriptor.directory, txn));
        while (ci.hasNext()) {
            rewriter.append(ci.next());
            if (rewriter.currentWriter().getOnDiskFilePointer() > 2500000) {
                // all files are now opened early
                assertEquals(files, cfs.getLiveSSTables().size());
                rewriter.switchWriter(getWriter(cfs, s.descriptor.directory, txn));
                files++;
            }
        }
        sstables = rewriter.finish();
    }
    assertEquals(files, sstables.size());
    assertEquals(files, cfs.getLiveSSTables().size());
    LifecycleTransaction.waitForDeletions();
    assertFileCounts(s.descriptor.directory.tryListNames());
    validateCFS(cfs);
}
Also used : CompactionController(org.apache.cassandra.db.compaction.CompactionController) SSTableReader(org.apache.cassandra.io.sstable.format.SSTableReader) CompactionIterator(org.apache.cassandra.db.compaction.CompactionIterator) Keyspace(org.apache.cassandra.db.Keyspace) ColumnFamilyStore(org.apache.cassandra.db.ColumnFamilyStore) LifecycleTransaction(org.apache.cassandra.db.lifecycle.LifecycleTransaction) Test(org.junit.Test)

Aggregations

CompactionController (org.apache.cassandra.db.compaction.CompactionController)16 CompactionIterator (org.apache.cassandra.db.compaction.CompactionIterator)16 SSTableReader (org.apache.cassandra.io.sstable.format.SSTableReader)15 LifecycleTransaction (org.apache.cassandra.db.lifecycle.LifecycleTransaction)14 Test (org.junit.Test)13 ColumnFamilyStore (org.apache.cassandra.db.ColumnFamilyStore)12 Keyspace (org.apache.cassandra.db.Keyspace)12 AbstractCompactionStrategy (org.apache.cassandra.db.compaction.AbstractCompactionStrategy)6 ListenableFuture (com.google.common.util.concurrent.ListenableFuture)2 UUID (java.util.UUID)2 ExecutorService (java.util.concurrent.ExecutorService)2 RowUpdateBuilder (org.apache.cassandra.db.RowUpdateBuilder)2 AbstractPendingRepairTest (org.apache.cassandra.db.compaction.AbstractPendingRepairTest)2 ISSTableScanner (org.apache.cassandra.io.sstable.ISSTableScanner)2 File (org.apache.cassandra.io.util.File)2 CountDownLatch (java.util.concurrent.CountDownLatch)1 ExecutionException (java.util.concurrent.ExecutionException)1 TimeoutException (java.util.concurrent.TimeoutException)1 CompactionInfo (org.apache.cassandra.db.compaction.CompactionInfo)1 CompactionInterruptedException (org.apache.cassandra.db.compaction.CompactionInterruptedException)1