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/12/23 21:05:53 UTC

svn commit: r893618 - in /incubator/cassandra/trunk/src/java/org/apache/cassandra: db/CompactionManager.java io/CompactionIterator.java

Author: jbellis
Date: Wed Dec 23 20:05:53 2009
New Revision: 893618

URL: http://svn.apache.org/viewvc?rev=893618&view=rev
Log:
fix bad merge; add overrideable CompactionIterator.getScanners for cleaner subclassing.  patch by jbellis

Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
    incubator/cassandra/trunk/src/java/org/apache/cassandra/io/CompactionIterator.java

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java?rev=893618&r1=893617&r2=893618&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java Wed Dec 23 20:05:53 2009
@@ -509,6 +509,8 @@
 
     private static class AntiCompactionIterator extends CompactionIterator
     {
+        private Set<SSTableScanner> scanners;
+
         public AntiCompactionIterator(Collection<SSTableReader> sstables, Collection<Range> ranges, int gcBefore, boolean isMajor)
                 throws IOException
         {
@@ -534,12 +536,17 @@
             return iter;
         }
 
-        public void close() throws IOException
+        public Iterable<SSTableScanner> getScanners()
         {
-            for (Object o : ((CollatingIterator)source).getIterators())
+            if (scanners == null)
             {
-                ((SSTableScanner)((FilterIterator)o).getIterator()).close();
+                scanners = new HashSet<SSTableScanner>();
+                for (Object o : ((CollatingIterator)source).getIterators())
+                {
+                    scanners.add((SSTableScanner)((FilterIterator)o).getIterator());
+                }
             }
+            return scanners;
         }
     }
 

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/io/CompactionIterator.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/io/CompactionIterator.java?rev=893618&r1=893617&r2=893618&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/io/CompactionIterator.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/io/CompactionIterator.java Wed Dec 23 20:05:53 2009
@@ -53,7 +53,6 @@
 
     public CompactionIterator(Iterable<SSTableReader> sstables, int gcBefore, boolean major) throws IOException
     {
-<<<<<<< HEAD
         this(getCollatingIterator(sstables), gcBefore, major);
     }
 
@@ -61,15 +60,12 @@
     protected CompactionIterator(Iterator iter, int gcBefore, boolean major)
     {
         super(iter);
-=======
-        super(getCollatingIterator(sstables));
         row = 0;
         totalBytes = bytesRead = 0;
-        for (SSTableScanner iter : (List<SSTableScanner>)((CollatingIterator)source).getIterators())
+        for (SSTableScanner scanner : getScanners())
         {
-            totalBytes += iter.getFileLength();
+            totalBytes += scanner.getFileLength();
         }
->>>>>>> make estimation of pendingtasks for CompactionManager sane
         this.gcBefore = gcBefore;
         this.major = major;
     }
@@ -152,9 +148,9 @@
             if ((row++ % 1000) == 0)
             {
                 bytesRead = 0;
-                for (SSTableScanner iter : (List<SSTableScanner>)((CollatingIterator)source).getIterators())
+                for (SSTableScanner scanner : getScanners())
                 {
-                    bytesRead += iter.getFilePointer();
+                    bytesRead += scanner.getFilePointer();
                 }
             }
         }
@@ -163,12 +159,17 @@
 
     public void close() throws IOException
     {
-        for (Object o : ((CollatingIterator)source).getIterators())
+        for (SSTableScanner scanner : getScanners())
         {
-            ((SSTableScanner)o).close();
+            scanner.close();
         }
     }
 
+    protected Iterable<SSTableScanner> getScanners()
+    {
+        return ((CollatingIterator)source).getIterators();
+    }
+
     public long getTotalBytes()
     {
         return totalBytes;