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