Author: jbellis
Date: Wed Oct 19 04:15:15 2011
New Revision: 1185963
URL: http://svn.apache.org/viewvc?rev=1185963&view=rev
Log:
finish fixing changing durable_writes keyspace option during CF creation
patch by jbellis; reviewed by pyaskevich for CASSANDRA-3292
Modified:
cassandra/branches/cassandra-0.8/CHANGES.txt
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/KSMetaData.java
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/SchemaLoader.java
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java
Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1185963&r1=1185962&r2=1185963&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Wed Oct 19 04:15:15 2011
@@ -21,6 +21,9 @@
in lower case (CASSANDRA-3366)
* CLI `describe cluster;` output should be on separate lines for separate
versions
(CASSANDRA-3170)
+ * fix changing durable_writes keyspace option during CF creation
+ (CASSANDRA-3292)
+
0.8.7
* Kill server on wrapped OOME such as from FileChannel.map (CASSANDRA-3201)
Modified:
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=1185963&r1=1185962&r2=1185963&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
(original)
+++
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
Wed Oct 19 04:15:15 2011
@@ -18,10 +18,7 @@
package org.apache.cassandra.config;
-import java.io.File;
-import java.io.FileFilter;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
import java.net.InetAddress;
import java.net.URL;
import java.net.UnknownHostException;
Modified:
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/KSMetaData.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/KSMetaData.java?rev=1185963&r1=1185962&r2=1185963&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/KSMetaData.java
(original)
+++
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/config/KSMetaData.java
Wed Oct 19 04:15:15 2011
@@ -40,23 +40,6 @@ public final class KSMetaData
private final Map<String, CFMetaData> cfMetaData;
public final boolean durableWrites;
- public KSMetaData(String name, Class<? extends
AbstractReplicationStrategy> strategyClass, Map<String, String>
strategyOptions, CFMetaData... cfDefs)
- {
- this(name, strategyClass, strategyOptions, true, cfDefs);
- }
-
- public KSMetaData(String name, Class<? extends
AbstractReplicationStrategy> strategyClass, Map<String, String>
strategyOptions, boolean durable_writes, CFMetaData... cfDefs)
- {
- this.name = name;
- this.strategyClass = strategyClass == null ?
NetworkTopologyStrategy.class : strategyClass;
- this.strategyOptions = strategyOptions;
- Map<String, CFMetaData> cfmap = new HashMap<String, CFMetaData>();
- for (CFMetaData cfm : cfDefs)
- cfmap.put(cfm.cfName, cfm);
- this.cfMetaData = Collections.unmodifiableMap(cfmap);
- this.durableWrites = durable_writes;
- }
-
private KSMetaData(String name, Class<? extends
AbstractReplicationStrategy> strategyClass, Map<String, String>
strategyOptions, boolean durableWrites, Iterable<CFMetaData> cfDefs)
{
this.name = name;
@@ -85,6 +68,15 @@ public final class KSMetaData
return new KSMetaData(Table.SYSTEM_TABLE, LocalStrategy.class,
optsWithRF(1), false, cfDefs);
}
+ public static KSMetaData testMetadata(String name, Class<? extends
AbstractReplicationStrategy> strategyClass, Map<String, String>
strategyOptions, CFMetaData... cfDefs)
+ {
+ return new KSMetaData(name, strategyClass, strategyOptions, true,
Arrays.asList(cfDefs));
+ }
+
+ public static KSMetaData testMetadataNotDurable(String name, Class<?
extends AbstractReplicationStrategy> strategyClass, Map<String, String>
strategyOptions, CFMetaData... cfDefs)
+ {
+ return new KSMetaData(name, strategyClass, strategyOptions, false,
Arrays.asList(cfDefs));
+ }
public static Map<String, String> forwardsCompatibleOptions(KsDef ks_def)
{
Modified:
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/SchemaLoader.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/SchemaLoader.java?rev=1185963&r1=1185962&r2=1185963&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/SchemaLoader.java
(original)
+++
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/SchemaLoader.java
Wed Oct 19 04:15:15 2011
@@ -69,7 +69,7 @@ public class SchemaLoader
String ks_kcs = "KeyCacheSpace";
String ks_rcs = "RowCacheSpace";
String ks_nocommit = "NoCommitlogSpace";
-
+
Class<? extends AbstractReplicationStrategy> simple =
SimpleStrategy.class;
Map<String, String> opts_rf1 = KSMetaData.optsWithRF(1);
@@ -81,164 +81,163 @@ public class SchemaLoader
ColumnFamilyType su = ColumnFamilyType.Super;
AbstractType bytes = BytesType.instance;
- AbstractType composite = CompositeType.getInstance(Arrays.asList(new
AbstractType[]{BytesType.instance, TimeUUIDType.instance,
IntegerType.instance}));
+ AbstractType composite = CompositeType.getInstance(Arrays.asList(new
AbstractType[]{ BytesType.instance, TimeUUIDType.instance, IntegerType.instance
}));
Map<Byte, AbstractType> aliases = new HashMap<Byte, AbstractType>();
- aliases.put((byte)'b', BytesType.instance);
- aliases.put((byte)'t', TimeUUIDType.instance);
+ aliases.put((byte) 'b', BytesType.instance);
+ aliases.put((byte) 't', TimeUUIDType.instance);
AbstractType dynamicComposite =
DynamicCompositeType.getInstance(aliases);
-
+
// these column definitions will will be applied to the jdbc utf and
integer column familes respectively.
Map<ByteBuffer, ColumnDefinition> integerColumn = new
HashMap<ByteBuffer, ColumnDefinition>();
integerColumn.put(IntegerType.instance.fromString("42"), new
ColumnDefinition(
- IntegerType.instance.fromString("42"),
- UTF8Type.instance,
- null,
- "Column42"));
+ IntegerType.instance.fromString("42"),
+ UTF8Type.instance,
+ null,
+ "Column42"));
Map<ByteBuffer, ColumnDefinition> utf8Column = new HashMap<ByteBuffer,
ColumnDefinition>();
utf8Column.put(UTF8Type.instance.fromString("fortytwo"), new
ColumnDefinition(
- UTF8Type.instance.fromString("fortytwo"),
- IntegerType.instance,
- null,
- "Column42"));
+ UTF8Type.instance.fromString("fortytwo"),
+ IntegerType.instance,
+ null,
+ "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),
- 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),
+ 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")));
+
-
return schema;
}
Modified:
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java?rev=1185963&r1=1185962&r2=1185963&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
(original)
+++
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
Wed Oct 19 04:15:15 2011
@@ -80,9 +80,9 @@ public class DatabaseDescriptorTest
assert DatabaseDescriptor.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 DatabaseDescriptor.getTableDefinition("ks0") != null;
Modified:
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java?rev=1185963&r1=1185962&r2=1185963&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java
(original)
+++
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/DefsTest.java
Wed Oct 19 04:15:15 2011
@@ -339,7 +339,7 @@ public class DefsTest extends CleanupHel
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();
@@ -437,7 +437,7 @@ public class DefsTest extends CleanupHel
{
assert DatabaseDescriptor.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 DatabaseDescriptor.getTableDefinition("EmptyKeyspace") != null;
@@ -473,7 +473,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();
@@ -482,7 +482,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();
@@ -494,7 +494,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();
@@ -505,7 +505,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 = DatabaseDescriptor.getKSMetaData(newKs.name);
@@ -518,7 +518,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 DatabaseDescriptor.getTableDefinition(cf.ksName) != null;