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


Reply via email to