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 2009/11/13 22:26:54 UTC

svn commit: r835999 - in /incubator/cassandra/trunk/src/java/org/apache/cassandra: db/ColumnFamilyStore.java utils/CloseableIterator.java

Author: jbellis
Date: Fri Nov 13 21:26:53 2009
New Revision: 835999

URL: http://svn.apache.org/viewvc?rev=835999&view=rev
Log:
make iterator closeable, again
patch by jbellis; tested by "elsif" for CASSANDRA-552

Added:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/CloseableIterator.java
Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=835999&r1=835998&r2=835999&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Fri Nov 13 21:26:53 2009
@@ -1245,7 +1245,7 @@
         {
             final SSTableScanner scanner = sstable.getScanner();
             scanner.seekTo(startWithDK);
-            Iterator<DecoratedKey> iter = new Iterator<DecoratedKey>()
+            Iterator<DecoratedKey> iter = new CloseableIterator<DecoratedKey>()
             {
                 public boolean hasNext()
                 {
@@ -1259,12 +1259,16 @@
                 {
                     throw new UnsupportedOperationException();
                 }
+                public void close() throws IOException
+                {
+                    scanner.close();
+                }
             };
+            assert iter instanceof Closeable; // otherwise we leak FDs
             iterators.add(iter);
         }
 
         Iterator<DecoratedKey> collated = IteratorUtils.collatedIterator(comparator, iterators);
-        
         Iterable<DecoratedKey> reduced = new ReducingIterator<DecoratedKey, DecoratedKey>(collated) {
             DecoratedKey current;
 

Added: incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/CloseableIterator.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/CloseableIterator.java?rev=835999&view=auto
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/CloseableIterator.java (added)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/CloseableIterator.java Fri Nov 13 21:26:53 2009
@@ -0,0 +1,9 @@
+package org.apache.cassandra.utils;
+
+import java.io.Closeable;
+import java.util.Iterator;
+
+// so we can instantiate anonymous classes implementing both interfaces
+public interface CloseableIterator<T> extends Iterator<T>, Closeable
+{
+}