You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2009/12/08 07:19:30 UTC
svn commit: r888279 - in /incubator/cassandra/trunk:
src/java/org/apache/cassandra/db/ColumnFamilyStore.java
test/unit/org/apache/cassandra/db/CompactionsTest.java
Author: jbellis
Date: Tue Dec 8 06:19:30 2009
New Revision: 888279
URL: http://svn.apache.org/viewvc?rev=888279&view=rev
Log:
compute major-ness of compaction in the compaction method, rather than relying on caller to do it correctly (as some tests were not). patch by jbellis
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsTest.java
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=888279&r1=888278&r2=888279&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Tue Dec 8 06:19:30 2009
@@ -660,7 +660,7 @@
// re-compacting files we just created.
Collections.sort(sstables);
boolean major = sstables.size() == ssTables_.size();
- filesCompacted += doFileCompaction(sstables.subList(0, Math.min(sstables.size(), maxThreshold)), major);
+ filesCompacted += doFileCompaction(sstables.subList(0, Math.min(sstables.size(), maxThreshold)));
}
logger_.debug(filesCompacted + " files compacted");
}
@@ -702,7 +702,7 @@
sstables = ssTables_.getSSTables();
}
- doFileCompaction(sstables, major);
+ doFileCompaction(sstables);
}
/*
@@ -858,9 +858,9 @@
return results;
}
- private int doFileCompaction(Collection<SSTableReader> sstables, boolean major) throws IOException
+ private int doFileCompaction(Collection<SSTableReader> sstables) throws IOException
{
- return doFileCompaction(sstables, getDefaultGCBefore(), major);
+ return doFileCompaction(sstables, getDefaultGCBefore());
}
/*
@@ -876,7 +876,7 @@
* The collection of sstables passed may be empty (but not null); even if
* it is not empty, it may compact down to nothing if all rows are deleted.
*/
- int doFileCompaction(Collection<SSTableReader> sstables, int gcBefore, boolean major) throws IOException
+ int doFileCompaction(Collection<SSTableReader> sstables, int gcBefore) throws IOException
{
if (DatabaseDescriptor.isSnapshotBeforeCompaction())
Table.open(table_).snapshot("compact-" + columnFamily_);
@@ -889,9 +889,14 @@
SSTableReader maxFile = getMaxSizeFile(sstables);
List<SSTableReader> smallerSSTables = new ArrayList<SSTableReader>(sstables);
smallerSSTables.remove(maxFile);
- return doFileCompaction(smallerSSTables, gcBefore, false);
+ return doFileCompaction(smallerSSTables, gcBefore);
}
+ // new sstables from flush can be added during a compaction, but only the compaction can remove them,
+ // so in our single-threaded compaction world this is a valid way of determining if we're compacting
+ // all the sstables (that existed when we started)
+ boolean major = sstables.size() == ssTables_.size();
+
long startTime = System.currentTimeMillis();
long totalkeysWritten = 0;
Modified: incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsTest.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsTest.java?rev=888279&r1=888278&r2=888279&view=diff
==============================================================================
--- incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsTest.java (original)
+++ incubator/cassandra/trunk/test/unit/org/apache/cassandra/db/CompactionsTest.java Tue Dec 8 06:19:30 2009
@@ -112,7 +112,7 @@
store.forceBlockingFlush();
// compact and test that all columns but the resurrected one is completely gone
- store.doFileCompaction(store.getSSTables(), Integer.MAX_VALUE, false);
+ store.doFileCompaction(store.getSSTables(), Integer.MAX_VALUE);
ColumnFamily cf = table.getColumnFamilyStore(cfName).getColumnFamily(new IdentityQueryFilter(key, new QueryPath(cfName)));
assert cf.getColumnCount() == 1;
assert cf.getColumn(String.valueOf(5).getBytes()) != null;
@@ -150,7 +150,7 @@
assert store.getSSTables().size() == 1 : store.getSSTables(); // inserts & deletes were in the same memtable -> only deletes in sstable
// compact and test that the row is completely gone
- store.doFileCompaction(store.getSSTables(), Integer.MAX_VALUE, false);
+ store.doFileCompaction(store.getSSTables(), Integer.MAX_VALUE);
assert store.getSSTables().isEmpty();
ColumnFamily cf = table.getColumnFamilyStore(cfName).getColumnFamily(new IdentityQueryFilter(key, new QueryPath(cfName)));
assert cf == null : cf;