You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by gd...@apache.org on 2010/10/11 21:10:32 UTC
svn commit: r1021467 - in /cassandra/trunk: CHANGES.txt
src/java/org/apache/cassandra/db/CompactionManager.java
src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
Author: gdusbabek
Date: Mon Oct 11 19:10:31 2010
New Revision: 1021467
URL: http://svn.apache.org/viewvc?rev=1021467&view=rev
Log:
abandon temp sstables on compaction error. patch by gdusbabek, reviewed by jbellis. CASSANDRA-1596
Modified:
cassandra/trunk/CHANGES.txt
cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
Modified: cassandra/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1021467&r1=1021466&r2=1021467&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Mon Oct 11 19:10:31 2010
@@ -26,6 +26,7 @@ dev
* reduce index sample time by 75% (CASSANDRA-1572)
* add cli support for column metadata (CASSANDRA-1578)
* add cli support for schema modification (CASSANDRA-1584)
+ * delete temp files on failed compactions (CASSANDRA-1596)
0.7-beta2
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java?rev=1021467&r1=1021466&r2=1021467&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/CompactionManager.java Mon Oct 11 19:10:31 2010
@@ -283,9 +283,16 @@ public class CompactionManager implement
while (nni.hasNext())
{
AbstractCompactedRow row = nni.next();
- long prevpos = writer.getFilePointer();
-
- writer.append(row);
+ try
+ {
+ writer.append(row);
+ }
+ catch (IOException ex)
+ {
+ writer.abort();
+ // rethrow the exception so that caller knows compaction failed.
+ throw ex;
+ }
totalkeysWritten++;
}
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java?rev=1021467&r1=1021466&r2=1021467&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java Mon Oct 11 19:10:31 2010
@@ -22,6 +22,7 @@ package org.apache.cassandra.io.sstable;
import java.io.*;
import java.util.Set;
+import org.apache.cassandra.io.util.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -65,6 +66,30 @@ public class SSTableWriter extends SSTab
components.add(Component.PRIMARY_INDEX);
components.add(Component.STATS);
}
+
+ /** something bad happened and the files associated with this writer need to be deleted. */
+ public void abort()
+ {
+ try
+ {
+ dataFile.close();
+ FileUtils.deleteWithConfirm(dataFile.getPath());
+ }
+ catch (IOException ex)
+ {
+ logger.error(String.format("Caught exception while deleting aborted sstable (%s). %s", dataFile.getPath(), ex.getMessage()));
+ }
+
+ try
+ {
+ iwriter.close();
+ FileUtils.deleteWithConfirm(descriptor.filenameFor(SSTable.COMPONENT_INDEX));
+ }
+ catch (IOException ex)
+ {
+ logger.error(String.format("Caught exception while deleting aborted sstable (%s). %s", descriptor.filenameFor(SSTable.COMPONENT_INDEX), ex.getMessage()));
+ }
+ }
private long beforeAppend(DecoratedKey decoratedKey) throws IOException
{