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 2012/04/17 23:27:42 UTC
[9/10] git commit: avoid streaming empty files with bulk loader if
sstablewriter errors out patch by yukim;
reviewed by jbellis for CASSANDRA-3946
avoid streaming empty files with bulk loader if sstablewriter errors out
patch by yukim; reviewed by jbellis for CASSANDRA-3946
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/10a64bd6
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/10a64bd6
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/10a64bd6
Branch: refs/heads/cassandra-1.1.0
Commit: 10a64bd681c8f7e213fc74f04ac598cad2427464
Parents: 5434ac4
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Apr 17 16:21:50 2012 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Apr 17 16:21:50 2012 -0500
----------------------------------------------------------------------
CHANGES.txt | 2 +
.../io/sstable/AbstractSSTableSimpleWriter.java | 2 +-
.../io/sstable/SSTableSimpleUnsortedWriter.java | 18 +++++++++++---
.../cassandra/io/sstable/SSTableSimpleWriter.java | 14 +++++++++--
4 files changed, 28 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10a64bd6/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index f370ebc..814fe99 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
1.0.10
+ * avoid streaming empty files with bulk loader if sstablewriter errors out
+ (CASSANDRA-3946)
* support PropertyFileSnitch in bulk loader (CASSANDRA-4145)
* add auto_snapshot option allowing disabling snapshot before drop/truncate
(CASSANDRA-3710)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10a64bd6/src/java/org/apache/cassandra/io/sstable/AbstractSSTableSimpleWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/AbstractSSTableSimpleWriter.java b/src/java/org/apache/cassandra/io/sstable/AbstractSSTableSimpleWriter.java
index 163bbbd..80531e6 100644
--- a/src/java/org/apache/cassandra/io/sstable/AbstractSSTableSimpleWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/AbstractSSTableSimpleWriter.java
@@ -79,7 +79,7 @@ public abstract class AbstractSSTableSimpleWriter
int maxGen = 0;
for (Descriptor desc : existing)
maxGen = Math.max(maxGen, desc.generation);
- return new Descriptor(directory, keyspace, columnFamily, maxGen + 1, false).filenameFor(Component.DATA);
+ return new Descriptor(directory, keyspace, columnFamily, maxGen + 1, true).filenameFor(Component.DATA);
}
/**
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10a64bd6/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
index 40e37e2..175512e 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
@@ -105,12 +105,22 @@ public class SSTableSimpleUnsortedWriter extends AbstractSSTableSimpleWriter
if (keys.isEmpty())
return;
- SSTableWriter writer = getWriter();
- for (Map.Entry<DecoratedKey, ColumnFamily> entry : keys.entrySet())
+ SSTableWriter writer = null;
+ try
{
- writer.append(entry.getKey(), entry.getValue());
+ writer = getWriter();
+ for (Map.Entry<DecoratedKey, ColumnFamily> entry : keys.entrySet())
+ {
+ writer.append(entry.getKey(), entry.getValue());
+ }
+ writer.closeAndOpenReader();
+ }
+ catch (IOException e)
+ {
+ if (writer != null)
+ writer.abort();
+ throw e;
}
- writer.closeAndOpenReader();
currentSize = 0;
keys.clear();
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10a64bd6/src/java/org/apache/cassandra/io/sstable/SSTableSimpleWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleWriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleWriter.java
index 340fb4f..92a7ba9 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleWriter.java
@@ -67,9 +67,17 @@ public class SSTableSimpleWriter extends AbstractSSTableSimpleWriter
public void close() throws IOException
{
- if (currentKey != null)
- writeRow(currentKey, columnFamily);
- writer.closeAndOpenReader();
+ try
+ {
+ if (currentKey != null)
+ writeRow(currentKey, columnFamily);
+ writer.closeAndOpenReader();
+ }
+ catch (IOException e)
+ {
+ writer.abort();
+ throw e;
+ }
}
protected void writeRow(DecoratedKey key, ColumnFamily columnFamily) throws IOException