You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2011/04/07 22:12:22 UTC

svn commit: r1089976 - in /cassandra/branches/cassandra-0.7: CHANGES.txt src/java/org/apache/cassandra/io/CompactionIterator.java src/java/org/apache/cassandra/io/util/FileUtils.java

Author: slebresne
Date: Thu Apr  7 20:12:22 2011
New Revision: 1089976

URL: http://svn.apache.org/viewvc?rev=1089976&view=rev
Log:
Try harder to close files after compaction
patch by stuhood; reviewed by slebresne for CASSANDRA-2431

Modified:
    cassandra/branches/cassandra-0.7/CHANGES.txt
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/CompactionIterator.java
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/FileUtils.java

Modified: cassandra/branches/cassandra-0.7/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1089976&r1=1089975&r2=1089976&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.7/CHANGES.txt Thu Apr  7 20:12:22 2011
@@ -24,6 +24,7 @@
  * fix race condition that could leave orphaned data files when
    dropping CF or KS (CASSANDRA-2381)
  * halve default memtable thresholds (CASSANDRA-2413)
+ * Try harder to close files after compaction (CASSANDRA-2431)
 
 
 0.7.4

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/CompactionIterator.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/CompactionIterator.java?rev=1089976&r1=1089975&r2=1089976&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/CompactionIterator.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/CompactionIterator.java Thu Apr  7 20:12:22 2011
@@ -36,6 +36,7 @@ import org.apache.cassandra.db.ColumnFam
 import org.apache.cassandra.io.sstable.SSTableIdentityIterator;
 import org.apache.cassandra.io.sstable.SSTableReader;
 import org.apache.cassandra.io.sstable.SSTableScanner;
+import org.apache.cassandra.io.util.FileUtils;
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.FBUtilities;
 import org.apache.cassandra.utils.ReducingIterator;
@@ -149,10 +150,7 @@ implements Closeable, ICompactionInfo
 
     public void close() throws IOException
     {
-        for (SSTableScanner scanner : getScanners())
-        {
-            scanner.close();
-        }
+        FileUtils.close(getScanners());
     }
 
     protected Iterable<SSTableScanner> getScanners()

Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/FileUtils.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/FileUtils.java?rev=1089976&r1=1089975&r2=1089976&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/FileUtils.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/util/FileUtils.java Thu Apr  7 20:12:22 2011
@@ -20,6 +20,7 @@ package org.apache.cassandra.io.util;
 
 import java.io.*;
 import java.text.DecimalFormat;
+import java.util.Collection;
 import java.util.Comparator;
 import java.util.List;
 
@@ -95,6 +96,26 @@ public class FileUtils
         }
     }
 
+    public static void close(Iterable<? extends Closeable> cs) throws IOException
+    {
+        IOException e = null;
+        for (Closeable c : cs)
+        {
+            try
+            {
+                if (c != null)
+                    c.close();
+            }
+            catch (IOException ex)
+            {
+                e = ex;
+                logger_.warn("Failed closing stream " + c, ex);
+            }
+        }
+        if (e != null)
+            throw e;
+    }
+
     public static class FileComparator implements Comparator<File>
     {
         public int compare(File f, File f2)