Author: jbellis
Date: Thu Nov 18 01:36:04 2010
New Revision: 1036309

URL: http://svn.apache.org/viewvc?rev=1036309&view=rev
Log:
retain reference to PendingFile sstables
patch by Stu Hood; reviewed by jbellis for CASSANDRA-1749

Modified:
    cassandra/branches/cassandra-0.7/CHANGES.txt
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/streaming/PendingFile.java
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/streaming/StreamOut.java
    
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/streaming/BootstrapTest.java

Modified: cassandra/branches/cassandra-0.7/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1036309&r1=1036308&r2=1036309&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.7/CHANGES.txt Thu Nov 18 01:36:04 2010
@@ -37,6 +37,7 @@ dev
  * clear endpoint cache after updating keyspace metadata (CASSANDRA-1741)
  * fix wrapping-range queries on non-minimum token (CASSANDRA-1700)
  * truncate includes secondary indexes (CASSANDRA-1747)
+ * retain reference to PendingFile sstables (CASSANDRA-1749)
 
 
 0.7.0-beta3

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/streaming/PendingFile.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/streaming/PendingFile.java?rev=1036309&r1=1036308&r2=1036309&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/streaming/PendingFile.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/streaming/PendingFile.java
 Thu Nov 18 01:36:04 2010
@@ -31,6 +31,7 @@ import org.apache.commons.lang.StringUti
 
 import org.apache.cassandra.io.ICompactSerializer;
 import org.apache.cassandra.io.sstable.Descriptor;
+import org.apache.cassandra.io.sstable.SSTable;
 import org.apache.cassandra.utils.Pair;
 
 /**
@@ -45,6 +46,9 @@ public class PendingFile
         return serializer_;
     }
 
+    // NB: this reference prevents garbage collection of the sstable on the 
source node
+    private final SSTable sstable;
+
     public final Descriptor desc;
     public final String component;
     public final List<Pair<Long,Long>> sections;
@@ -53,11 +57,12 @@ public class PendingFile
 
     public PendingFile(Descriptor desc, PendingFile pf)
     {
-        this(desc, pf.component, pf.sections);
+        this(null, desc, pf.component, pf.sections);
     }
 
-    public PendingFile(Descriptor desc, String component, 
List<Pair<Long,Long>> sections)
+    public PendingFile(SSTable sstable, Descriptor desc, String component, 
List<Pair<Long,Long>> sections)
     {
+        this.sstable = sstable;
         this.desc = desc;
         this.component = component;
         this.sections = sections;
@@ -124,7 +129,7 @@ public class PendingFile
             List<Pair<Long,Long>> sections = new 
ArrayList<Pair<Long,Long>>(count);
             for (int i = 0; i < count; i++)
                 sections.add(new Pair<Long,Long>(Long.valueOf(dis.readLong()), 
Long.valueOf(dis.readLong())));
-            return new PendingFile(desc, component, sections);
+            return new PendingFile(null, desc, component, sections);
         }
     }
 }

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/streaming/StreamOut.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/streaming/StreamOut.java?rev=1036309&r1=1036308&r2=1036309&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/streaming/StreamOut.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/streaming/StreamOut.java
 Thu Nov 18 01:36:04 2010
@@ -166,7 +166,7 @@ public class StreamOut
             List<Pair<Long,Long>> sections = 
sstable.getPositionsForRanges(ranges);
             if (sections.isEmpty())
                 continue;
-            pending.add(new PendingFile(desc, SSTable.COMPONENT_DATA, 
sections));
+            pending.add(new PendingFile(sstable, desc, SSTable.COMPONENT_DATA, 
sections));
         }
         logger.info("Stream context metadata {}, {} sstables.", pending, 
sstables.size());
         return pending;

Modified: 
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/streaming/BootstrapTest.java?rev=1036309&r1=1036308&r2=1036309&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/streaming/BootstrapTest.java
 Thu Nov 18 01:36:04 2010
@@ -37,7 +37,7 @@ public class BootstrapTest extends Schem
     public void testGetNewNames() throws IOException
     {
         Descriptor desc = Descriptor.fromFilename(new File("Keyspace1", 
"Standard1-500-Data.db").toString());
-        PendingFile inContext = new PendingFile(desc, "Data.db", 
Arrays.asList(new Pair<Long,Long>(0L, 1L)));
+        PendingFile inContext = new PendingFile(null, desc, "Data.db", 
Arrays.asList(new Pair<Long,Long>(0L, 1L)));
 
         PendingFile outContext = StreamIn.getContextMapping(inContext);
         // filename and generation are expected to have changed


Reply via email to