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 2010/06/11 00:36:12 UTC

svn commit: r953486 - /cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableSliceIterator.java

Author: jbellis
Date: Thu Jun 10 22:36:12 2010
New Revision: 953486

URL: http://svn.apache.org/viewvc?rev=953486&view=rev
Log:
fix FD leak.  patch by mdennis; reviewed by jbellis for CASSANDRA-1178

Modified:
    cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableSliceIterator.java

Modified: cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableSliceIterator.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableSliceIterator.java?rev=953486&r1=953485&r2=953486&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableSliceIterator.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/filter/SSTableSliceIterator.java Thu Jun 10 22:36:12 2010
@@ -51,12 +51,25 @@ class SSTableSliceIterator extends Abstr
     private ColumnGroupReader reader;
     private boolean closeFileWhenDone = false;
     private DecoratedKey decoratedKey;
-    
+
     public SSTableSliceIterator(SSTableReader ssTable, DecoratedKey key, byte[] startColumn, byte[] finishColumn, Predicate<IColumn> predicate, boolean reversed)
     {
         this(ssTable, null, key, startColumn, finishColumn, predicate, reversed); 
     }
-    
+
+    /**
+     * An iterator for a slice within an SSTable
+     * @param ssTable The SSTable to iterate over
+     * @param file Optional parameter that input is read from.  If null is passed, this class creates an appropriate one automatically.
+     * If this class creates, it will close the underlying file when #close() is called.
+     * If a caller passes a non-null argument, this class will NOT close the underlying file when the iterator is closed (i.e. the caller is responsible for closing the file)
+     * In all cases the caller should explicitly #close() this iterator.
+     * @param key The key the requested slice resides under
+     * @param startColumn The start of the slice
+     * @param finishColumn The end of the slice
+     * @param predicate The predicate used for filtering columns
+     * @param reversed Results are returned in reverse order iff reversed is true.
+     */
     public SSTableSliceIterator(SSTableReader ssTable, FileDataInput file, DecoratedKey key, byte[] startColumn, byte[] finishColumn, Predicate<IColumn> predicate, boolean reversed) 
     {
         this.reversed = reversed;
@@ -68,6 +81,7 @@ class SSTableSliceIterator extends Abstr
 
         if (file == null)
         {
+            closeFileWhenDone = true; //if we create it, we close it
             file = ssTable.getFileDataInput(decoratedKey, DatabaseDescriptor.getSlicedReadBufferSizeInKB() * 1024);
             if (file == null)
                 return;