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);
+ }
+ }
}