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 2011/10/19 15:35:59 UTC
svn commit: r1186209 [2/2] - in /cassandra/trunk: ./ contrib/
contrib/pig/src/java/org/apache/cassandra/hadoop/pig/
interface/thrift/gen-java/org/apache/cassandra/thrift/ src/avro/
src/java/org/apache/cassandra/cli/ src/java/org/apache/cassandra/client...
Modified: cassandra/trunk/src/java/org/apache/cassandra/hadoop/ConfigHelper.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/hadoop/ConfigHelper.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/hadoop/ConfigHelper.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/hadoop/ConfigHelper.java Wed Oct 19 13:35:57 2011
@@ -19,9 +19,13 @@ package org.apache.cassandra.hadoop;
* under the License.
*
*/
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.dht.IPartitioner;
+import org.apache.cassandra.thrift.Cassandra;
import org.apache.cassandra.thrift.KeyRange;
import org.apache.cassandra.thrift.SlicePredicate;
import org.apache.cassandra.thrift.TBinaryProtocol;
@@ -31,6 +35,13 @@ import org.apache.hadoop.conf.Configurat
import org.apache.thrift.TDeserializer;
import org.apache.thrift.TException;
import org.apache.thrift.TSerializer;
+import org.apache.thrift.transport.TFramedTransport;
+import org.apache.thrift.transport.TSocket;
+import org.apache.thrift.transport.TTransport;
+import org.apache.thrift.transport.TTransportException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
public class ConfigHelper
{
@@ -54,6 +65,9 @@ public class ConfigHelper
private static final String INITIAL_THRIFT_ADDRESS = "cassandra.thrift.address";
private static final String READ_CONSISTENCY_LEVEL = "cassandra.consistencylevel.read";
private static final String WRITE_CONSISTENCY_LEVEL = "cassandra.consistencylevel.write";
+
+ private static final Logger logger = LoggerFactory.getLogger(ColumnFamilyInputFormat.class);
+
/**
* Set the keyspace and column family for the input of this job.
@@ -331,4 +345,50 @@ public class ConfigHelper
throw new RuntimeException(e);
}
}
+
+
+ public static Cassandra.Client getClientFromAddressList(Configuration conf) throws IOException
+ {
+ String[] addresses = ConfigHelper.getInitialAddress(conf).split(",");
+ Cassandra.Client client = null;
+ List<IOException> exceptions = new ArrayList<IOException>();
+ for (String address : addresses)
+ {
+ try
+ {
+ client = createConnection(address, ConfigHelper.getRpcPort(conf), true);
+ break;
+ }
+ catch (IOException ioe)
+ {
+ exceptions.add(ioe);
+ }
+ }
+ if (client == null)
+ {
+ logger.error("failed to connect to any initial addresses");
+ for (IOException ioe : exceptions)
+ {
+ logger.error("", ioe);
+ }
+ throw exceptions.get(exceptions.size() - 1);
+ }
+ return client;
+ }
+
+ public static Cassandra.Client createConnection(String host, Integer port, boolean framed)
+ throws IOException
+ {
+ TSocket socket = new TSocket(host, port);
+ TTransport trans = framed ? new TFramedTransport(socket) : socket;
+ try
+ {
+ trans.open();
+ }
+ catch (TTransportException e)
+ {
+ throw new IOException("unable to connect to server", e);
+ }
+ return new Cassandra.Client(new TBinaryProtocol(trans));
+ }
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressionMetadata.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressionMetadata.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressionMetadata.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/compress/CompressionMetadata.java Wed Oct 19 13:35:57 2011
@@ -199,7 +199,7 @@ public class CompressionMetadata
seek(dataLengthOffset
+ 8 // size reserved for uncompressed data length
+ 4 // size reserved for chunk count
- + (chunkIndex * 8));
+ + (chunkIndex * 8L));
try
{
@@ -221,7 +221,7 @@ public class CompressionMetadata
seek(dataLengthOffset
+ 8 // size reserved for uncompressed data length
+ 4 // size reserved for chunk count
- + (chunkIndex * 8));
+ + (chunkIndex * 8L));
getChannel().truncate(getFilePointer());
}
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java Wed Oct 19 13:35:57 2011
@@ -30,6 +30,9 @@ import org.apache.cassandra.utils.Closea
import org.apache.cassandra.utils.IMergeIterator;
import org.apache.cassandra.utils.MergeIterator;
+/**
+ * Caller must acquire and release references to the sstables used here.
+ */
public class ReducingKeyIterator implements CloseableIterator<DecoratedKey>
{
private final IMergeIterator<DecoratedKey,DecoratedKey> mi;
Modified: cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java Wed Oct 19 13:35:57 2011
@@ -128,10 +128,14 @@ public class FileUtils
public static void createDirectory(String directory) throws IOException
{
- File file = new File(directory);
- if (!file.exists())
+ createDirectory(new File(directory));
+ }
+
+ public static void createDirectory(File directory) throws IOException
+ {
+ if (!directory.exists())
{
- if (!file.mkdirs())
+ if (!directory.mkdirs())
{
throw new IOException("unable to mkdirs " + directory);
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/ClientState.java Wed Oct 19 13:35:57 2011
@@ -57,7 +57,12 @@ public class ClientState
{
reset();
}
-
+
+ public String getRawKeyspace()
+ {
+ return keyspace;
+ }
+
public String getKeyspace() throws InvalidRequestException
{
if (keyspace == null)
@@ -150,6 +155,11 @@ public class ClientState
*/
public void hasColumnFamilyAccess(String columnFamily, Permission perm) throws InvalidRequestException
{
+ hasColumnFamilyAccess(keyspace, columnFamily, perm);
+ }
+
+ public void hasColumnFamilyAccess(String keyspace, String columnFamily, Permission perm) throws InvalidRequestException
+ {
validateLogin();
validateKeyspace();
Modified: cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java Wed Oct 19 13:35:57 2011
@@ -169,6 +169,7 @@ public class StorageProxy implements Sto
*/
public static void mutate(List<? extends IMutation> mutations, ConsistencyLevel consistency_level) throws UnavailableException, TimeoutException
{
+ logger.debug("Mutations/ConsistencyLevel are {}/{}", mutations, consistency_level);
final String localDataCenter = DatabaseDescriptor.getEndpointSnitch().getDatacenter(FBUtilities.getBroadcastAddress());
long startTime = System.nanoTime();
Modified: cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java Wed Oct 19 13:35:57 2011
@@ -433,7 +433,7 @@ public class StorageService implements I
for (Table table : Table.all())
{
KSMetaData ksm = Schema.instance.getKSMetaData(table.name);
- if (!ksm.isDurableWrites())
+ if (!ksm.durableWrites)
{
for (ColumnFamilyStore cfs : table.getColumnFamilyStores())
{
Modified: cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java Wed Oct 19 13:35:57 2011
@@ -126,18 +126,16 @@ public class StreamInSession
if (files.isEmpty())
{
HashMap <ColumnFamilyStore, List<SSTableReader>> cfstores = new HashMap<ColumnFamilyStore, List<SSTableReader>>();
- List<SSTableReader> referenced = new LinkedList<SSTableReader>();
try
{
for (SSTableReader sstable : readers)
{
assert sstable.getTableName().equals(table);
- // Acquiring the reference (for secondary index building) before adding it makes sure we don't have to care about races
+ // Acquire the reference (for secondary index building) before submitting the index build,
+ // so it can't get compacted out of existence in between
if (!sstable.acquireReference())
- throw new RuntimeException("We shouldn't fail acquiring a reference on a sstable that has just been transfered");
-
- referenced.add(sstable);
+ throw new AssertionError("We shouldn't fail acquiring a reference on a sstable that has just been transfered");
ColumnFamilyStore cfs = Table.open(sstable.getTableName()).getColumnFamilyStore(sstable.getColumnFamilyName());
cfs.addSSTable(sstable);
@@ -155,7 +153,8 @@ public class StreamInSession
}
finally
{
- SSTableReader.releaseReferences(referenced);
+ for (List<SSTableReader> referenced : cfstores.values())
+ SSTableReader.releaseReferences(referenced);
}
// send reply to source that we're done
Modified: cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java Wed Oct 19 13:35:57 2011
@@ -702,19 +702,11 @@ public class ThriftValidation
{
if (cf_def.isSetMin_compaction_threshold() && cf_def.isSetMax_compaction_threshold())
{
- if ((cf_def.min_compaction_threshold > cf_def.max_compaction_threshold)
- && cf_def.max_compaction_threshold != 0)
- {
- throw new ConfigurationException("min_compaction_threshold cannot be greater than max_compaction_threshold");
- }
+ validateMinCompactionThreshold(cf_def.min_compaction_threshold, cf_def.max_compaction_threshold);
}
else if (cf_def.isSetMin_compaction_threshold())
{
- if (cf_def.min_compaction_threshold > CFMetaData.DEFAULT_MAX_COMPACTION_THRESHOLD)
- {
- throw new ConfigurationException(String.format("min_compaction_threshold cannot be greather than max_compaction_threshold (default %d)",
- CFMetaData.DEFAULT_MAX_COMPACTION_THRESHOLD));
- }
+ validateMinCompactionThreshold(cf_def.min_compaction_threshold, CFMetaData.DEFAULT_MAX_COMPACTION_THRESHOLD);
}
else if (cf_def.isSetMax_compaction_threshold())
{
@@ -729,6 +721,26 @@ public class ThriftValidation
}
}
+ public static void validateMinCompactionThreshold(int min_compaction_threshold, int max_compaction_threshold) throws ConfigurationException
+ {
+ if (min_compaction_threshold <= 1)
+ throw new ConfigurationException("min_compaction_threshold cannot be less than 2.");
+
+ if (min_compaction_threshold > max_compaction_threshold && max_compaction_threshold != 0)
+ throw new ConfigurationException(String.format("min_compaction_threshold cannot be greater than max_compaction_threshold %d",
+ max_compaction_threshold));
+ }
+
+ public static void validateMemtableSettings(org.apache.cassandra.thrift.CfDef cf_def) throws ConfigurationException
+ {
+ if (cf_def.isSetMemtable_flush_after_mins())
+ DatabaseDescriptor.validateMemtableFlushPeriod(cf_def.memtable_flush_after_mins);
+ if (cf_def.isSetMemtable_throughput_in_mb())
+ DatabaseDescriptor.validateMemtableThroughput(cf_def.memtable_throughput_in_mb);
+ if (cf_def.isSetMemtable_operations_in_millions())
+ DatabaseDescriptor.validateMemtableOperations(cf_def.memtable_operations_in_millions);
+ }
+
public static void validateKeyspaceNotYetExisting(String newKsName) throws InvalidRequestException
{
// keyspace names must be unique case-insensitively because the keyspace name becomes the directory
Modified: cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java (original)
+++ cassandra/trunk/test/distributed/org/apache/cassandra/TestBase.java Wed Oct 19 13:35:57 2011
@@ -301,6 +301,8 @@ public abstract class TestBase
protected List<InetAddress> endpointsForKey(InetAddress seed, ByteBuffer key, String keyspace)
throws IOException
{
+ Configuration conf = new Configuration();
+
RingCache ring = new RingCache(keyspace, new RandomPartitioner(), seed.getHostAddress(), 9160);
List<InetAddress> privateendpoints = ring.getEndpoint(key);
List<InetAddress> endpoints = new ArrayList<InetAddress>();
Modified: cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java Wed Oct 19 13:35:57 2011
@@ -111,142 +111,141 @@ public class SchemaLoader
"Column42"));
// Keyspace 1
- schema.add(new KSMetaData(ks1,
- simple,
- opts_rf1,
-
- // Column Families
- standardCFMD(ks1, "Standard1"),
- standardCFMD(ks1, "Standard2"),
- standardCFMD(ks1, "Standard3"),
- standardCFMD(ks1, "Standard4"),
- standardCFMD(ks1, "StandardLong1"),
- standardCFMD(ks1, "StandardLong2"),
- new CFMetaData(ks1,
- "ValuesWithQuotes",
- st,
- BytesType.instance,
- null)
- .defaultValidator(UTF8Type.instance),
- superCFMD(ks1, "Super1", LongType.instance),
- superCFMD(ks1, "Super2", LongType.instance),
- superCFMD(ks1, "Super3", LongType.instance),
- superCFMD(ks1, "Super4", UTF8Type.instance),
- superCFMD(ks1, "Super5", bytes),
- indexCFMD(ks1, "Indexed1", true),
- indexCFMD(ks1, "Indexed2", false),
- new CFMetaData(ks1,
- "StandardInteger1",
- st,
- IntegerType.instance,
- null)
- .keyCacheSize(0),
- new CFMetaData(ks1,
- "Counter1",
- st,
- bytes,
- null)
- .defaultValidator(CounterColumnType.instance)
- .mergeShardsChance(1.0),
- new CFMetaData(ks1,
- "SuperCounter1",
- su,
- bytes,
- bytes)
- .defaultValidator(CounterColumnType.instance)
- .mergeShardsChance(1.0),
- jdbcCFMD(ks1, "JdbcInteger", IntegerType.instance).columnMetadata(integerColumn),
- jdbcCFMD(ks1, "JdbcUtf8", UTF8Type.instance).columnMetadata(utf8Column),
- jdbcCFMD(ks1, "JdbcLong", LongType.instance),
- jdbcCFMD(ks1, "JdbcBytes", bytes),
- jdbcCFMD(ks1, "JdbcAscii", AsciiType.instance),
- new CFMetaData(ks1,
- "StandardComposite",
- st,
- composite,
- null),
- new CFMetaData(ks1,
- "StandardDynamicComposite",
- st,
- dynamicComposite,
- null)));
+ schema.add(KSMetaData.testMetadata(ks1,
+ simple,
+ opts_rf1,
+
+ // Column Families
+ standardCFMD(ks1, "Standard1"),
+ standardCFMD(ks1, "Standard2"),
+ standardCFMD(ks1, "Standard3"),
+ standardCFMD(ks1, "Standard4"),
+ standardCFMD(ks1, "StandardLong1"),
+ standardCFMD(ks1, "StandardLong2"),
+ new CFMetaData(ks1,
+ "ValuesWithQuotes",
+ st,
+ BytesType.instance,
+ null)
+ .defaultValidator(UTF8Type.instance),
+ superCFMD(ks1, "Super1", LongType.instance),
+ superCFMD(ks1, "Super2", LongType.instance),
+ superCFMD(ks1, "Super3", LongType.instance),
+ superCFMD(ks1, "Super4", UTF8Type.instance),
+ superCFMD(ks1, "Super5", bytes),
+ indexCFMD(ks1, "Indexed1", true),
+ indexCFMD(ks1, "Indexed2", false),
+ new CFMetaData(ks1,
+ "StandardInteger1",
+ st,
+ IntegerType.instance,
+ null)
+ .keyCacheSize(0),
+ new CFMetaData(ks1,
+ "Counter1",
+ st,
+ bytes,
+ null)
+ .defaultValidator(CounterColumnType.instance)
+ .mergeShardsChance(1.0),
+ new CFMetaData(ks1,
+ "SuperCounter1",
+ su,
+ bytes,
+ bytes)
+ .defaultValidator(CounterColumnType.instance)
+ .mergeShardsChance(1.0),
+ jdbcCFMD(ks1, "JdbcInteger", IntegerType.instance).columnMetadata(integerColumn),
+ jdbcCFMD(ks1, "JdbcUtf8", UTF8Type.instance).columnMetadata(utf8Column),
+ jdbcCFMD(ks1, "JdbcLong", LongType.instance),
+ jdbcCFMD(ks1, "JdbcBytes", bytes),
+ jdbcCFMD(ks1, "JdbcAscii", AsciiType.instance),
+ new CFMetaData(ks1,
+ "StandardComposite",
+ st,
+ composite,
+ null),
+ new CFMetaData(ks1,
+ "StandardDynamicComposite",
+ st,
+ dynamicComposite,
+ null)));
// Keyspace 2
- schema.add(new KSMetaData(ks2,
- simple,
- opts_rf1,
-
- // Column Families
- standardCFMD(ks2, "Standard1"),
- standardCFMD(ks2, "Standard3"),
- superCFMD(ks2, "Super3", bytes),
- superCFMD(ks2, "Super4", TimeUUIDType.instance),
- indexCFMD(ks2, "Indexed1", true)));
+ schema.add(KSMetaData.testMetadata(ks2,
+ simple,
+ opts_rf1,
+
+ // Column Families
+ standardCFMD(ks2, "Standard1"),
+ standardCFMD(ks2, "Standard3"),
+ superCFMD(ks2, "Super3", bytes),
+ superCFMD(ks2, "Super4", TimeUUIDType.instance),
+ indexCFMD(ks2, "Indexed1", true)));
// Keyspace 3
- schema.add(new KSMetaData(ks3,
- simple,
- opts_rf5,
-
- // Column Families
- standardCFMD(ks3, "Standard1"),
- indexCFMD(ks3, "Indexed1", true)));
+ schema.add(KSMetaData.testMetadata(ks3,
+ simple,
+ opts_rf5,
+
+ // Column Families
+ standardCFMD(ks3, "Standard1"),
+ indexCFMD(ks3, "Indexed1", true)));
// Keyspace 4
- schema.add(new KSMetaData(ks4,
- simple,
- opts_rf3,
-
- // Column Families
- standardCFMD(ks4, "Standard1"),
- standardCFMD(ks4, "Standard3"),
- superCFMD(ks4, "Super3", bytes),
- superCFMD(ks4, "Super4", TimeUUIDType.instance),
- new CFMetaData(ks4,
- "Super5",
- su,
- TimeUUIDType.instance,
- bytes)
- .keyCacheSize(0)));
+ schema.add(KSMetaData.testMetadata(ks4,
+ simple,
+ opts_rf3,
+
+ // Column Families
+ standardCFMD(ks4, "Standard1"),
+ standardCFMD(ks4, "Standard3"),
+ superCFMD(ks4, "Super3", bytes),
+ superCFMD(ks4, "Super4", TimeUUIDType.instance),
+ new CFMetaData(ks4,
+ "Super5",
+ su,
+ TimeUUIDType.instance,
+ bytes)
+ .keyCacheSize(0)));
// Keyspace 5
- schema.add(new KSMetaData(ks5,
- simple,
- opts_rf2,
- standardCFMD(ks5, "Standard1"),
- standardCFMD(ks5, "Counter1")
- .defaultValidator(CounterColumnType.instance)));
+ schema.add(KSMetaData.testMetadata(ks5,
+ simple,
+ opts_rf2,
+ standardCFMD(ks5, "Standard1"),
+ standardCFMD(ks5, "Counter1")
+ .defaultValidator(CounterColumnType.instance)));
// Keyspace 6
- schema.add(new KSMetaData(ks6,
- simple,
- opts_rf1,
- indexCFMD(ks6, "Indexed1", true)));
+ schema.add(KSMetaData.testMetadata(ks6,
+ simple,
+ opts_rf1,
+ indexCFMD(ks6, "Indexed1", true)));
// KeyCacheSpace
- schema.add(new KSMetaData(ks_kcs,
- simple,
- opts_rf1,
- standardCFMD(ks_kcs, "Standard1")
- .keyCacheSize(0.5),
- standardCFMD(ks_kcs, "Standard2")
- .keyCacheSize(1.0),
- standardCFMD(ks_kcs, "Standard3")
- .keyCacheSize(1.0)));
+ schema.add(KSMetaData.testMetadata(ks_kcs,
+ simple,
+ opts_rf1,
+ standardCFMD(ks_kcs, "Standard1")
+ .keyCacheSize(0.5),
+ standardCFMD(ks_kcs, "Standard2")
+ .keyCacheSize(1.0),
+ standardCFMD(ks_kcs, "Standard3")
+ .keyCacheSize(1.0)));
// RowCacheSpace
- schema.add(new KSMetaData(ks_rcs,
- simple,
- opts_rf1,
- standardCFMD(ks_rcs, "CFWithoutCache"),
- standardCFMD(ks_rcs, "CachedCF")
- .rowCacheSize(100)));
-
- schema.add(new KSMetaData(ks_nocommit,
- simple,
- opts_rf1,
- false,
- standardCFMD(ks_nocommit, "Standard1")));
+ schema.add(KSMetaData.testMetadata(ks_rcs,
+ simple,
+ opts_rf1,
+ standardCFMD(ks_rcs, "CFWithoutCache"),
+ standardCFMD(ks_rcs, "CachedCF")
+ .rowCacheSize(100)));
+
+ schema.add(KSMetaData.testMetadataNotDurable(ks_nocommit,
+ simple,
+ opts_rf1,
+ standardCFMD(ks_nocommit, "Standard1")));
if (Boolean.parseBoolean(System.getProperty("cassandra.test.compression", "false")))
Modified: cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/cli/CliTest.java Wed Oct 19 13:35:57 2011
@@ -158,6 +158,7 @@ public class CliTest extends CleanupHelp
"drop column family cF8;",
"create keyspace TESTIN;",
"drop keyspace tesTIN;",
+ "update column family 123 with comparator=UTF8Type and column_metadata=[];",
"drop column family 123;",
"create column family myCF with column_type='Super' and comparator='UTF8Type' AND subcomparator='UTF8Type';",
"assume myCF keys as utf8;",
Modified: cassandra/trunk/test/unit/org/apache/cassandra/client/TestRingCache.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/client/TestRingCache.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/client/TestRingCache.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/client/TestRingCache.java Wed Oct 19 13:35:57 2011
@@ -23,16 +23,18 @@ import java.nio.ByteBuffer;
import java.util.Collection;
import org.apache.cassandra.config.DatabaseDescriptor;
+import org.apache.cassandra.hadoop.ConfigHelper;
import org.apache.cassandra.thrift.Cassandra;
import org.apache.cassandra.thrift.Column;
import org.apache.cassandra.thrift.ColumnParent;
import org.apache.cassandra.thrift.ColumnPath;
import org.apache.cassandra.thrift.ConsistencyLevel;
+import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.commons.lang.StringUtils;
+import org.apache.hadoop.conf.Configuration;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TSocket;
-import org.apache.cassandra.utils.ByteBufferUtil;
/**
@@ -42,11 +44,12 @@ public class TestRingCache
{
private RingCache ringCache;
private Cassandra.Client thriftClient;
+ private Configuration conf;
public TestRingCache(String keyspace) throws IOException
{
- String seed = DatabaseDescriptor.getSeeds().iterator().next().getHostAddress();
- ringCache = new RingCache(keyspace, DatabaseDescriptor.getPartitioner(), seed, DatabaseDescriptor.getRpcPort());
+ ConfigHelper.setOutputColumnFamily(conf, keyspace, "Standard1");
+ ringCache = new RingCache(conf);
}
private void setup(String server, int port) throws Exception
@@ -58,6 +61,12 @@ public class TestRingCache
Cassandra.Client cassandraClient = new Cassandra.Client(binaryProtocol);
socket.open();
thriftClient = cassandraClient;
+ String seed = DatabaseDescriptor.getSeeds().iterator().next().getHostAddress();
+ conf = new Configuration();
+ ConfigHelper.setPartitioner(conf, DatabaseDescriptor.getPartitioner().getClass().getName());
+ ConfigHelper.setInitialAddress(conf, seed);
+ ConfigHelper.setRpcPort(conf, Integer.toString(DatabaseDescriptor.getRpcPort()));
+
}
/**
Modified: cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java Wed Oct 19 13:35:57 2011
@@ -80,9 +80,9 @@ public class DatabaseDescriptorTest
assert Schema.instance.getNonSystemTables().size() == 0;
// add a few.
- AddKeyspace ks0 = new AddKeyspace(new KSMetaData("ks0", SimpleStrategy.class, KSMetaData.optsWithRF(3)));
+ AddKeyspace ks0 = new AddKeyspace(KSMetaData.testMetadata("ks0", SimpleStrategy.class, KSMetaData.optsWithRF(3)));
ks0.apply();
- AddKeyspace ks1 = new AddKeyspace(new KSMetaData("ks1", SimpleStrategy.class, KSMetaData.optsWithRF(3)));
+ AddKeyspace ks1 = new AddKeyspace(KSMetaData.testMetadata("ks1", SimpleStrategy.class, KSMetaData.optsWithRF(3)));
ks1.apply();
assert Schema.instance.getTableDefinition("ks0") != null;
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java?rev=1186209&r1=1186208&r2=1186209&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/DefsTest.java Wed Oct 19 13:35:57 2011
@@ -39,8 +39,6 @@ import org.apache.cassandra.db.migration
import org.apache.cassandra.db.migration.DropColumnFamily;
import org.apache.cassandra.db.migration.DropKeyspace;
import org.apache.cassandra.db.migration.Migration;
-import org.apache.cassandra.db.migration.RenameColumnFamily;
-import org.apache.cassandra.db.migration.RenameKeyspace;
import org.apache.cassandra.db.migration.UpdateColumnFamily;
import org.apache.cassandra.db.migration.UpdateKeyspace;
import org.apache.cassandra.io.SerDeUtils;
@@ -207,24 +205,18 @@ public class DefsTest extends CleanupHel
UUID ver1 = m1.getVersion();
assert Schema.instance.getVersion().equals(ver1);
- // rename it.
- Migration m2 = new RenameColumnFamily("Keyspace1", "MigrationCf_1", "MigrationCf_2");
- m2.apply();
- UUID ver2 = m2.getVersion();
- assert Schema.instance.getVersion().equals(ver2);
-
// drop it.
- Migration m3 = new DropColumnFamily("Keyspace1", "MigrationCf_2");
+ Migration m3 = new DropColumnFamily("Keyspace1", "MigrationCf_1");
m3.apply();
UUID ver3 = m3.getVersion();
assert Schema.instance.getVersion().equals(ver3);
// now lets load the older migrations to see if that code works.
Collection<IColumn> serializedMigrations = Migration.getLocalMigrations(ver1, ver3);
- assert serializedMigrations.size() == 3;
+ assert serializedMigrations.size() == 2;
// test deserialization of the migrations.
- Migration[] reconstituded = new Migration[3];
+ Migration[] reconstituded = new Migration[2];
int i = 0;
for (IColumn col : serializedMigrations)
{
@@ -235,13 +227,11 @@ public class DefsTest extends CleanupHel
}
assert m1.getClass().equals(reconstituded[0].getClass());
- assert m2.getClass().equals(reconstituded[1].getClass());
- assert m3.getClass().equals(reconstituded[2].getClass());
+ assert m3.getClass().equals(reconstituded[1].getClass());
// verify that the row mutations are the same. rather than exposing the private fields, serialize and verify.
assert m1.serialize().equals(reconstituded[0].serialize());
- assert m2.serialize().equals(reconstituded[1].serialize());
- assert m3.serialize().equals(reconstituded[2].serialize());
+ assert m3.serialize().equals(reconstituded[1].serialize());
}
@Test
@@ -336,60 +326,14 @@ public class DefsTest extends CleanupHel
throw new AssertionError("undeleted file " + file);
}
}
-
- @Test
- public void renameCf() throws ConfigurationException, IOException, ExecutionException, InterruptedException
- {
- DecoratedKey dk = Util.dk("key0");
- final KSMetaData ks = Schema.instance.getTableDefinition("Keyspace2");
- assert ks != null;
- final CFMetaData oldCfm = ks.cfMetaData().get("Standard1");
- assert oldCfm != null;
-
- // write some data, force a flush, then verify that files exist on disk.
- RowMutation rm = new RowMutation(ks.name, dk.key);
- for (int i = 0; i < 100; i++)
- rm.add(new QueryPath(oldCfm.cfName, null, ByteBufferUtil.bytes(("col" + i))), ByteBufferUtil.bytes("anyvalue"), 1L);
- rm.apply();
- ColumnFamilyStore store = Table.open(oldCfm.ksName).getColumnFamilyStore(oldCfm.cfName);
- assert store != null;
- store.forceBlockingFlush();
- int fileCount = DefsTable.getFiles(oldCfm.ksName, oldCfm.cfName).size();
- assert fileCount > 0;
-
- final String cfName = "St4ndard1Replacement";
- new RenameColumnFamily(oldCfm.ksName, oldCfm.cfName, cfName).apply();
- assert !Schema.instance.getTableDefinition(ks.name).cfMetaData().containsKey(oldCfm.cfName);
- assert Schema.instance.getTableDefinition(ks.name).cfMetaData().containsKey(cfName);
-
- // verify that new files are there.
- assert DefsTable.getFiles(oldCfm.ksName, cfName).size() == fileCount;
-
- // do some reads.
- store = Table.open(oldCfm.ksName).getColumnFamilyStore(cfName);
- assert store != null;
- ColumnFamily cfam = store.getColumnFamily(QueryFilter.getSliceFilter(dk, new QueryPath(cfName), ByteBufferUtil.EMPTY_BYTE_BUFFER, ByteBufferUtil.EMPTY_BYTE_BUFFER, false, 1000));
- assert cfam.getSortedColumns().size() == 100; // should be good enough?
-
- // do some writes
- rm = new RowMutation(ks.name, dk.key);
- rm.add(new QueryPath(cfName, null, ByteBufferUtil.bytes("col5")), ByteBufferUtil.bytes("updated"), 2L);
- rm.apply();
- store.forceBlockingFlush();
-
- cfam = store.getColumnFamily(QueryFilter.getNamesFilter(dk, new QueryPath(cfName), ByteBufferUtil.bytes("col5")));
- assert cfam.getColumnCount() == 1;
- assert cfam.getColumn(ByteBufferUtil.bytes("col5")).value().equals( ByteBufferUtil.bytes("updated"));
- }
-
@Test
public void addNewKS() throws ConfigurationException, IOException, ExecutionException, InterruptedException
{
DecoratedKey dk = Util.dk("key0");
CFMetaData newCf = addTestCF("NewKeyspace1", "AddedStandard1", "A new cf for a new ks");
- KSMetaData newKs = new KSMetaData(newCf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(5), newCf);
+ KSMetaData newKs = KSMetaData.testMetadata(newCf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(5), newCf);
new AddKeyspace(newKs).apply();
@@ -483,92 +427,11 @@ public class DefsTest extends CleanupHel
}
@Test
- public void renameKs() throws ConfigurationException, IOException, ExecutionException, InterruptedException
- {
- DecoratedKey dk = Util.dk("renameKs");
- final KSMetaData oldKs = Schema.instance.getTableDefinition("Keyspace2");
- assert oldKs != null;
- final String cfName = "Standard3";
- assert oldKs.cfMetaData().containsKey(cfName);
- assert oldKs.cfMetaData().get(cfName).ksName.equals(oldKs.name);
-
- // write some data that we hope to read back later.
- RowMutation rm = new RowMutation(oldKs.name, dk.key);
- for (int i = 0; i < 10; i++)
- rm.add(new QueryPath(cfName, null, ByteBufferUtil.bytes(("col" + i))), ByteBufferUtil.bytes("value"), 1L);
- rm.apply();
- ColumnFamilyStore store = Table.open(oldKs.name).getColumnFamilyStore(cfName);
- assert store != null;
- store.forceBlockingFlush();
- assert DefsTable.getFiles(oldKs.name, cfName).size() > 0;
-
- final String newKsName = "RenamedKeyspace2";
- new RenameKeyspace(oldKs.name, newKsName).apply();
- KSMetaData newKs = Schema.instance.getTableDefinition(newKsName);
-
- assert Schema.instance.getTableDefinition(oldKs.name) == null;
- assert newKs != null;
- assert newKs.name.equals(newKsName);
- assert newKs.cfMetaData().containsKey(cfName);
- assert newKs.cfMetaData().get(cfName).ksName.equals(newKsName);
- assert DefsTable.getFiles(newKs.name, cfName).size() > 0;
-
- // read on old should fail.
- // reads should fail too.
- boolean threw = false;
- try
- {
- Table.open(oldKs.name);
- }
- catch (Throwable th)
- {
- threw = true;
- }
- assert threw;
-
- // write on old should fail.
- rm = new RowMutation(oldKs.name, ByteBufferUtil.bytes("any key will do"));
- boolean success = true;
- try
- {
- rm.add(new QueryPath(cfName, null, ByteBufferUtil.bytes("col0")), ByteBufferUtil.bytes("value0"), 1L);
- rm.apply();
- }
- catch (Throwable th)
- {
- success = false;
- }
- assert !success : "This mutation should have failed since the CF/Table no longer exists.";
-
- // write on new should work.
- rm = new RowMutation(newKsName, dk.key);
- rm.add(new QueryPath(cfName, null, ByteBufferUtil.bytes("col0")), ByteBufferUtil.bytes("newvalue"), 2L);
- rm.apply();
- store = Table.open(newKs.name).getColumnFamilyStore(cfName);
- assert store != null;
- store.forceBlockingFlush();
-
- // read on new should work.
- SortedSet<ByteBuffer> cols = new TreeSet<ByteBuffer>(BytesType.instance);
- cols.add(ByteBufferUtil.bytes("col0"));
- cols.add(ByteBufferUtil.bytes("col1"));
- ColumnFamily cfam = store.getColumnFamily(QueryFilter.getNamesFilter(dk, new QueryPath(cfName), cols));
- assert cfam.getColumnCount() == cols.size();
- // tests new write.
-
- ByteBuffer val = cfam.getColumn(ByteBufferUtil.bytes("col0")).value();
- assertEquals(ByteBufferUtil.string(val), "newvalue");
- // tests old write.
- val = cfam.getColumn(ByteBufferUtil.bytes("col1")).value();
- assertEquals(ByteBufferUtil.string(val), "value");
- }
-
- @Test
public void createEmptyKsAddNewCf() throws ConfigurationException, IOException, ExecutionException, InterruptedException
{
assert Schema.instance.getTableDefinition("EmptyKeyspace") == null;
- KSMetaData newKs = new KSMetaData("EmptyKeyspace", SimpleStrategy.class, KSMetaData.optsWithRF(5));
+ KSMetaData newKs = KSMetaData.testMetadata("EmptyKeyspace", SimpleStrategy.class, KSMetaData.optsWithRF(5));
new AddKeyspace(newKs).apply();
assert Schema.instance.getTableDefinition("EmptyKeyspace") != null;
@@ -604,7 +467,7 @@ public class DefsTest extends CleanupHel
{
// create a keyspace to serve as existing.
CFMetaData cf = addTestCF("UpdatedKeyspace", "AddedStandard1", "A new cf for a new ks");
- KSMetaData oldKs = new KSMetaData(cf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(5), cf);
+ KSMetaData oldKs = KSMetaData.testMetadata(cf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(5), cf);
new AddKeyspace(oldKs).apply();
@@ -613,7 +476,7 @@ public class DefsTest extends CleanupHel
// anything with cf defs should fail.
CFMetaData cf2 = addTestCF(cf.ksName, "AddedStandard2", "A new cf for a new ks");
- KSMetaData newBadKs = new KSMetaData(cf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(4), cf2);
+ KSMetaData newBadKs = KSMetaData.testMetadata(cf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(4), cf2);
try
{
new UpdateKeyspace(newBadKs).apply();
@@ -625,7 +488,7 @@ public class DefsTest extends CleanupHel
}
// names should match.
- KSMetaData newBadKs2 = new KSMetaData(cf.ksName + "trash", SimpleStrategy.class, KSMetaData.optsWithRF(4));
+ KSMetaData newBadKs2 = KSMetaData.testMetadata(cf.ksName + "trash", SimpleStrategy.class, KSMetaData.optsWithRF(4));
try
{
new UpdateKeyspace(newBadKs2).apply();
@@ -636,7 +499,7 @@ public class DefsTest extends CleanupHel
// expected.
}
- KSMetaData newKs = new KSMetaData(cf.ksName, OldNetworkTopologyStrategy.class, KSMetaData.optsWithRF(1));
+ KSMetaData newKs = KSMetaData.testMetadata(cf.ksName, OldNetworkTopologyStrategy.class, KSMetaData.optsWithRF(1));
new UpdateKeyspace(newKs).apply();
KSMetaData newFetchedKs = Schema.instance.getKSMetaData(newKs.name);
@@ -649,7 +512,7 @@ public class DefsTest extends CleanupHel
{
// create a keyspace with a cf to update.
CFMetaData cf = addTestCF("UpdatedCfKs", "Standard1added", "A new cf that will be updated");
- KSMetaData ksm = new KSMetaData(cf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(1), cf);
+ KSMetaData ksm = KSMetaData.testMetadata(cf.ksName, SimpleStrategy.class, KSMetaData.optsWithRF(1), cf);
new AddKeyspace(ksm).apply();
assert Schema.instance.getTableDefinition(cf.ksName) != null;