Author: jbellis
Date: Fri Dec 11 22:14:24 2009
New Revision: 889834

URL: http://svn.apache.org/viewvc?rev=889834&view=rev
Log:
check rename return code, and close before renaming.  patch by jbellis; 
reviewed by Stu Hood for CASSANDRA-630

Modified:
    
incubator/cassandra/trunk/src/java/org/apache/cassandra/io/SSTableWriter.java
    
incubator/cassandra/trunk/src/java/org/apache/cassandra/net/io/ContentStreamState.java
    
incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java

Modified: 
incubator/cassandra/trunk/src/java/org/apache/cassandra/io/SSTableWriter.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/io/SSTableWriter.java?rev=889834&r1=889833&r2=889834&view=diff
==============================================================================
--- 
incubator/cassandra/trunk/src/java/org/apache/cassandra/io/SSTableWriter.java 
(original)
+++ 
incubator/cassandra/trunk/src/java/org/apache/cassandra/io/SSTableWriter.java 
Fri Dec 11 22:14:24 2009
@@ -21,11 +21,7 @@
  */
 
 
-import java.io.File;
-import java.io.IOException;
-import java.io.FileOutputStream;
-import java.io.DataOutputStream;
-import java.util.Comparator;
+import java.io.*;
 import java.util.ArrayList;
 
 import org.apache.log4j.Logger;
@@ -34,6 +30,7 @@
 import org.apache.cassandra.dht.IPartitioner;
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.utils.BloomFilter;
+import org.apache.cassandra.utils.FBUtilities;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import 
com.reardencommerce.kernel.collections.shared.evictable.ConcurrentLinkedHashMap;
 
@@ -148,7 +145,14 @@
     static String rename(String tmpFilename)
     {
         String filename = tmpFilename.replace("-" + SSTable.TEMPFILE_MARKER, 
"");
-        new File(tmpFilename).renameTo(new File(filename));
+        try
+        {
+            FBUtilities.renameWithConfirm(tmpFilename, filename);
+        }
+        catch (IOException e)
+        {
+            throw new IOError(e);
+        }
         return filename;
     }
 

Modified: 
incubator/cassandra/trunk/src/java/org/apache/cassandra/net/io/ContentStreamState.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/net/io/ContentStreamState.java?rev=889834&r1=889833&r2=889834&view=diff
==============================================================================
--- 
incubator/cassandra/trunk/src/java/org/apache/cassandra/net/io/ContentStreamState.java
 (original)
+++ 
incubator/cassandra/trunk/src/java/org/apache/cassandra/net/io/ContentStreamState.java
 Fri Dec 11 22:14:24 2009
@@ -86,9 +86,9 @@
             {       
                 if (logger_.isDebugEnabled())
                     logger_.debug("Removing stream context " + 
streamContext_);                 
-                handleStreamCompletion(remoteAddress.getAddress());            
                  
-                bytesRead_ = 0L;
                 fc_.close();
+                handleStreamCompletion(remoteAddress.getAddress());
+                bytesRead_ = 0L;
                 morphState();
             }                            
         }

Modified: 
incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java?rev=889834&r1=889833&r2=889834&view=diff
==============================================================================
--- 
incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java 
(original)
+++ 
incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java 
Fri Dec 11 22:14:24 2009
@@ -280,4 +280,12 @@
             return null;
         return dis.readUTF();
     }
+
+    public static void renameWithConfirm(String tmpFilename, String filename) 
throws IOException
+    {
+        if (!new File(tmpFilename).renameTo(new File(filename)))
+        {
+            throw new IOException("rename failed of " + filename);
+        }
+    }
 }


Reply via email to