Merge branch 'cassandra-2.1' into trunk
Conflicts:
src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0c0891ac
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0c0891ac
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0c0891ac
Branch: refs/heads/trunk
Commit: 0c0891ac65b395610752b98abd21343d1b2902a8
Parents: 076b5bd a6e953c
Author: Yuki Morishita <[email protected]>
Authored: Thu Jan 15 11:01:00 2015 -0600
Committer: Yuki Morishita <[email protected]>
Committed: Thu Jan 15 11:01:00 2015 -0600
----------------------------------------------------------------------
.../io/sstable/AbstractSSTableSimpleWriter.java | 16 +++++----
.../cassandra/io/sstable/CQLSSTableWriter.java | 34 ++++++++++++++------
.../io/sstable/SSTableSimpleUnsortedWriter.java | 22 +++++++------
.../cassandra/db/ColumnFamilyStoreTest.java | 2 +-
4 files changed, 49 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0c0891ac/src/java/org/apache/cassandra/io/sstable/AbstractSSTableSimpleWriter.java
----------------------------------------------------------------------
diff --cc
src/java/org/apache/cassandra/io/sstable/AbstractSSTableSimpleWriter.java
index 2854308,67d160d..988923e
--- a/src/java/org/apache/cassandra/io/sstable/AbstractSSTableSimpleWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/AbstractSSTableSimpleWriter.java
@@@ -56,20 -53,21 +56,25 @@@ public abstract class AbstractSSTableSi
DatabaseDescriptor.setPartitioner(partitioner);
}
+ protected void setSSTableFormatType(SSTableFormat.Type type)
+ {
+ this.formatType = type;
+ }
+
protected SSTableWriter getWriter()
{
- return
SSTableWriter.create(Descriptor.fromFilename(makeFilename(directory,
metadata.ksName, metadata.cfName, formatType)), 0,
ActiveRepairService.UNREPAIRED_SSTABLE);
- return new SSTableWriter(
- makeFilename(directory, metadata.ksName, metadata.cfName),
- 0, // We don't care about the bloom filter
- ActiveRepairService.UNREPAIRED_SSTABLE,
- metadata,
- DatabaseDescriptor.getPartitioner(),
- new MetadataCollector(metadata.comparator));
++ return SSTableWriter.create(createDescriptor(directory,
metadata.ksName, metadata.cfName, formatType), 0,
ActiveRepairService.UNREPAIRED_SSTABLE);
}
-- // find available generation and pick up filename from that
- protected static String makeFilename(File directory, final String
keyspace, final String columnFamily, final SSTableFormat.Type fmt)
- protected static String makeFilename(File directory, final String
keyspace, final String columnFamily)
++ protected static Descriptor createDescriptor(File directory, final String
keyspace, final String columnFamily, final SSTableFormat.Type fmt)
{
-- final Set<Descriptor> existing = new HashSet<Descriptor>();
++ int maxGen = getNextGeneration(directory, columnFamily);
++ return new Descriptor(directory, keyspace, columnFamily, maxGen + 1,
Descriptor.Type.TEMP, fmt);
++ }
++
++ private static int getNextGeneration(File directory, final String
columnFamily)
++ {
++ final Set<Descriptor> existing = new HashSet<>();
directory.list(new FilenameFilter()
{
public boolean accept(File dir, String name)
@@@ -93,8 -91,8 +98,7 @@@
maxGen = generation.getAndIncrement();
}
}
--
- return new Descriptor(directory, keyspace, columnFamily, maxGen + 1,
Descriptor.Type.TEMP, fmt).filenameFor(Component.DATA);
- return new Descriptor(directory, keyspace, columnFamily, maxGen + 1,
Descriptor.Type.TEMP).filenameFor(Component.DATA);
++ return maxGen;
}
/**
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0c0891ac/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
index ec590f3,85e54ab..a019d41
--- a/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/CQLSSTableWriter.java
@@@ -21,19 -21,20 +21,22 @@@ import java.io.Closeable
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
--import java.util.Arrays;
--import java.util.ArrayList;
--import java.util.Collections;
--import java.util.List;
--import java.util.Map;
++import java.util.*;
import com.google.common.collect.ImmutableMap;
--import com.google.common.collect.Iterables;
--import org.apache.cassandra.cql3.statements.*;
++import org.apache.cassandra.config.CFMetaData;
++import org.apache.cassandra.config.KSMetaData;
++import org.apache.cassandra.config.Schema;
import org.apache.cassandra.cql3.*;
--import org.apache.cassandra.config.*;
--import org.apache.cassandra.db.*;
++import org.apache.cassandra.cql3.statements.CreateTableStatement;
++import org.apache.cassandra.cql3.statements.ParsedStatement;
++import org.apache.cassandra.cql3.statements.UpdateStatement;
++import org.apache.cassandra.db.ArrayBackedSortedColumns;
++import org.apache.cassandra.db.Cell;
++import org.apache.cassandra.db.ColumnFamily;
++import org.apache.cassandra.db.Keyspace;
+ import org.apache.cassandra.db.commitlog.CommitLog;
import org.apache.cassandra.db.composites.Composite;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.dht.IPartitioner;
@@@ -77,6 -77,12 +80,11 @@@ import org.apache.cassandra.utils.Pair
*/
public class CQLSSTableWriter implements Closeable
{
+ static
+ {
- // The Keyspace need to be initialized before we can call
Keyspace.open
+ Keyspace.setInitialized();
+ }
+
private final AbstractSSTableSimpleWriter writer;
private final UpdateStatement insert;
private final List<ColumnSpecification> boundNames;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0c0891ac/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
----------------------------------------------------------------------
diff --cc
src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
index 2dcbe3d,3cfdc7b..4c2e409
--- a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleUnsortedWriter.java
@@@ -205,9 -202,9 +205,10 @@@ public class SSTableSimpleUnsortedWrite
public void run()
{
SSTableWriter writer = null;
-- try
++
++ while (true)
{
-- while (true)
++ try
{
Buffer b = writeQueue.take();
if (b == SENTINEL)
@@@ -218,14 -215,14 +219,17 @@@
writer.append(entry.getKey(), entry.getValue());
writer.close();
}
++ catch (Throwable e)
++ {
++ JVMStabilityInspector.inspectThrowable(e);
++ if (writer != null)
++ writer.abort();
++ // Keep only the first exception
++ if (exception == null)
++ exception = e;
++ }
}
-- catch (Throwable e)
-- {
-- JVMStabilityInspector.inspectThrowable(e);
-- if (writer != null)
-- writer.abort();
-- exception = e;
-- }
++
}
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0c0891ac/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
index ad8646b,2732be5..479bb16
--- a/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
+++ b/test/unit/org/apache/cassandra/db/ColumnFamilyStoreTest.java
@@@ -1778,12 -1737,12 +1778,12 @@@ public class ColumnFamilyStoreTes
{
MetadataCollector collector = new
MetadataCollector(cfmeta.comparator);
collector.addAncestor(sstable1.descriptor.generation); // add
ancestor from previously written sstable
- return
SSTableWriter.create(Descriptor.fromFilename(makeFilename(directory,
metadata.ksName, metadata.cfName, DatabaseDescriptor.getSSTableFormat())),
- return new SSTableWriter(makeFilename(directory,
metadata.ksName, metadata.cfName),
- 0,
-
ActiveRepairService.UNREPAIRED_SSTABLE,
- metadata,
- StorageService.getPartitioner(),
- collector);
++ return SSTableWriter.create(createDescriptor(directory,
metadata.ksName, metadata.cfName, DatabaseDescriptor.getSSTableFormat()),
+ 0L,
+ ActiveRepairService.UNREPAIRED_SSTABLE,
+ metadata,
+ DatabaseDescriptor.getPartitioner(),
+ collector);
}
};
writer.newRow(key);