Author: jbellis Date: Wed May 4 22:17:14 2011 New Revision: 1099624 URL: http://svn.apache.org/viewvc?rev=1099624&view=rev Log: add liveOnly flag to SSTable.componentsFor patch by Aaron Morton; reviewed by jbellis for CASSANDRA-2602
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTable.java cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/io/sstable/SSTableTest.java Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTable.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTable.java?rev=1099624&r1=1099623&r2=1099624&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTable.java (original) +++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTable.java Wed May 4 22:17:14 2011 @@ -183,7 +183,7 @@ public abstract class SSTable /** * Discovers existing components for the descriptor. Slow: only intended for use outside the critical path. */ - static Set<Component> componentsFor(final Descriptor desc) + static Set<Component> componentsFor(final Descriptor desc, final boolean liveOnly) { final Set<Component> components = new HashSet<Component>(); desc.directory.list(new FilenameFilter() @@ -191,7 +191,7 @@ public abstract class SSTable public boolean accept(File dir, String name) { Pair<Descriptor,Component> component = tryComponentFromFilename(dir, name); - if (component != null && component.left.equals(desc)) + if (component != null && component.left.equals(desc) && (!liveOnly || !component.left.temporary)) components.add(component.right); return false; } Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java?rev=1099624&r1=1099623&r2=1099624&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java (original) +++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableReader.java Wed May 4 22:17:14 2011 @@ -137,7 +137,7 @@ public class SSTableReader extends SSTab public static SSTableReader open(Descriptor desc) throws IOException { - Set<Component> components = SSTable.componentsFor(desc); + Set<Component> components = componentsFor(desc, false); return open(desc, components, DatabaseDescriptor.getCFMetaData(desc.ksname, desc.cfname), StorageService.getPartitioner()); } Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java?rev=1099624&r1=1099623&r2=1099624&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java (original) +++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java Wed May 4 22:17:14 2011 @@ -345,7 +345,7 @@ public class SSTableWriter extends SSTab } logger.debug("estimated row count was %s of real count", ((double)estimatedRows) / rows); - return SSTableReader.open(rename(desc, SSTable.componentsFor(desc))); + return SSTableReader.open(rename(desc, componentsFor(desc, false))); } public long getTotalBytes() Modified: cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/io/sstable/SSTableTest.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/io/sstable/SSTableTest.java?rev=1099624&r1=1099623&r2=1099624&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/io/sstable/SSTableTest.java (original) +++ cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/io/sstable/SSTableTest.java Wed May 4 22:17:14 2011 @@ -74,6 +74,13 @@ public class SSTableTest extends Cleanup verifyMany(ssTable, map); ssTable = SSTableReader.open(ssTable.descriptor); // read the index from disk verifyMany(ssTable, map); + + Set<Component> live = SSTable.componentsFor(ssTable.descriptor, true); + assert !live.isEmpty() : "SSTable has live components"; + Set<Component> all = SSTable.componentsFor(ssTable.descriptor, false); + assert live.equals(all) : "live components same as all components"; + all.removeAll(live); + assert all.isEmpty() : "SSTable has no temp components"; } private void verifyMany(SSTableReader sstable, Map<ByteBuffer, ByteBuffer> map) throws IOException