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;