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/08/02 20:18:41 UTC
svn commit: r981645 - in /cassandra/trunk: ./ interface/ internode/
src/java/org/apache/cassandra/config/ src/java/org/apache/cassandra/db/
src/java/org/apache/cassandra/db/migration/
Author: gdusbabek
Date: Mon Aug 2 18:18:40 2010
New Revision: 981645
URL: http://svn.apache.org/viewvc?rev=981645&view=rev
Log:
internode structures for migrations. changes migration disk format. patch by stuhood, reviewed by gdusbabek. CASSANDRA-1308
Added:
cassandra/trunk/internode/
cassandra/trunk/internode/cassandra.genavro
Modified:
cassandra/trunk/build.xml
cassandra/trunk/interface/cassandra.genavro
cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java
cassandra/trunk/src/java/org/apache/cassandra/config/ColumnDefinition.java
cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java
cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java
cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddColumnFamily.java
cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddKeyspace.java
cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java
Modified: cassandra/trunk/build.xml
URL: http://svn.apache.org/viewvc/cassandra/trunk/build.xml?rev=981645&r1=981644&r2=981645&view=diff
==============================================================================
--- cassandra/trunk/build.xml (original)
+++ cassandra/trunk/build.xml Mon Aug 2 18:18:40 2010
@@ -36,6 +36,8 @@
<property name="interface.thrift.dir" value="${interface.dir}/thrift"/>
<property name="interface.thrift.gen-java" value="${interface.thrift.dir}/gen-java"/>
<property name="interface.avro.dir" value="${interface.dir}/avro"/>
+ <property name="internode.dir" value="${basedir}/internode"/>
+ <property name="internode.avro.dir" value="${internode.dir}/avro"/>
<property name="test.dir" value="${basedir}/test"/>
<property name="test.resources" value="${test.dir}/resources"/>
<property name="test.classes" value="${build.dir}/test/classes"/>
@@ -111,6 +113,7 @@
<delete dir="${build.classes}" />
<delete dir="${build.src.gen-java}" />
<delete dir="${interface.avro.dir}" />
+ <delete dir="${internode.avro.dir}" />
</target>
<target depends="clean" name="cleanall"/>
@@ -179,6 +182,8 @@
</taskdef>
<uptodate property="avroInterfaceUpToDate" srcfile="${interface.dir}/cassandra.genavro"
targetfile="${interface.avro.dir}/cassandra.avpr" />
+ <uptodate property="avroINProtoUpToDate" srcfile="${internode.dir}/cassandra.genavro"
+ targetfile="${internode.avro.dir}/cassandra.avpr" />
</target>
<target name="avro-generate" depends="avro-interface-generate"
@@ -187,6 +192,7 @@
<target name="avro-interface-generate" unless="avroInterfaceUpToDate"
depends="init,check-avro-generate">
<avromacro protocolname="client" inputfile="${interface.dir}/cassandra.genavro" outputdir="${interface.avro.dir}" />
+ <avromacro protocolname="internode" inputfile="${internode.dir}/cassandra.genavro" outputdir="${internode.avro.dir}" />
</target>
<macrodef name="avromacro">
@@ -264,11 +270,14 @@
<src path="${build.src.gen-java}"/>
<src path="${interface.thrift.dir}/gen-java"/>
<src path="${interface.avro.dir}"/>
+ <src path="${internode.avro.dir}"/>
<classpath refid="cassandra.classpath"/>
</javac>
<paranamer sourceDirectory="${interface.avro.dir}"
outputDirectory="${build.classes}"/>
+ <paranamer sourceDirectory="${internode.avro.dir}"
+ outputDirectory="${build.classes}"/>
<antcall target="createVersionPropFile"/>
</target>
Modified: cassandra/trunk/interface/cassandra.genavro
URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/cassandra.genavro?rev=981645&r1=981644&r2=981645&view=diff
==============================================================================
--- cassandra/trunk/interface/cassandra.genavro (original)
+++ cassandra/trunk/interface/cassandra.genavro Mon Aug 2 18:18:40 2010
@@ -82,11 +82,13 @@ protocol Cassandra {
union { Deletion, null } deletion;
}
+ /* NB: Until AVRO-495: must be kept sync'd with private fields. */
enum IndexType {
KEYS
}
/* describes a column in a column family. */
+ /* NB: Until AVRO-495: must be kept sync'd with private fields. */
record ColumnDef {
bytes name;
string validation_class;
@@ -98,6 +100,7 @@ protocol Cassandra {
* describes a keyspace:
* NB: the id field is ignored during column family creation: the server will choose an appropriate value.
*/
+ /* NB: Until AVRO-495: must be kept sync'd with private fields. */
record CfDef {
string keyspace;
string name;
@@ -117,6 +120,7 @@ protocol Cassandra {
}
/* describes a keyspace. */
+ /* NB: Until AVRO-495: must be kept sync'd with private fields. */
record KsDef {
string name;
string strategy_class;
Added: cassandra/trunk/internode/cassandra.genavro
URL: http://svn.apache.org/viewvc/cassandra/trunk/internode/cassandra.genavro?rev=981645&view=auto
==============================================================================
--- cassandra/trunk/internode/cassandra.genavro (added)
+++ cassandra/trunk/internode/cassandra.genavro Mon Aug 2 18:18:40 2010
@@ -0,0 +1,69 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Cassandra internal/internode communication protocol
+ */
+@namespace("org.apache.cassandra")
+
+protocol InterNode {
+ /* NB: Until AVRO-495: must be kept sync'd with the public IndexType. */
+ @namespace("org.apache.cassandra.config.avro")
+ enum IndexType {
+ KEYS
+ }
+
+ /* NB: Until AVRO-495: must be kept sync'd with ColumnDefinition and the public ColumnDef. */
+ @namespace("org.apache.cassandra.config.avro")
+ record ColumnDef {
+ bytes name;
+ string validation_class;
+ union { IndexType, null } index_type;
+ union { string, null } index_name;
+ }
+
+ /* NB: Until AVRO-495: must be kept sync'd with CFMetaData and the public CfDef. */
+ @namespace("org.apache.cassandra.config.avro")
+ record CfDef {
+ string keyspace;
+ string name;
+ union { string, null } column_type;
+ union { string, null } clock_type;
+ union { string, null } comparator_type;
+ union { string, null } subcomparator_type;
+ union { string, null } reconciler;
+ union { string, null } comment;
+ union { double, null } row_cache_size;
+ union { boolean, null } preload_row_cache;
+ union { double, null } key_cache_size;
+ union { double, null } read_repair_chance;
+ union { int, null } gc_grace_seconds;
+ union { array<ColumnDef>, null } column_metadata;
+ union { int, null } id;
+ }
+
+ /* NB: Until AVRO-495: must be kept sync'd with KSMetaData and the public KsDef. */
+ @namespace("org.apache.cassandra.config.avro")
+ record KsDef {
+ string name;
+ string strategy_class;
+ union{ map<string>, null } strategy_options;
+ int replication_factor;
+ array<CfDef> cf_defs;
+ }
+}
Modified: cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java?rev=981645&r1=981644&r2=981645&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java Mon Aug 2 18:18:40 2010
@@ -206,9 +206,9 @@ public final class CFMetaData
+ "Columns Sorted By: " + comparator + "\n";
}
- public org.apache.cassandra.avro.CfDef deflate()
+ public org.apache.cassandra.config.avro.CfDef deflate()
{
- org.apache.cassandra.avro.CfDef cf = new org.apache.cassandra.avro.CfDef();
+ org.apache.cassandra.config.avro.CfDef cf = new org.apache.cassandra.config.avro.CfDef();
cf.id = cfId;
cf.keyspace = new Utf8(tableName);
cf.name = new Utf8(cfName);
@@ -225,13 +225,13 @@ public final class CFMetaData
cf.read_repair_chance = readRepairChance;
cf.gc_grace_seconds = gcGraceSeconds;
cf.column_metadata = SerDeUtils.createArray(column_metadata.size(),
- org.apache.cassandra.avro.ColumnDef.SCHEMA$);
+ org.apache.cassandra.config.avro.ColumnDef.SCHEMA$);
for (ColumnDefinition cd : column_metadata.values())
cf.column_metadata.add(cd.deflate());
return cf;
}
- public static CFMetaData inflate(org.apache.cassandra.avro.CfDef cf) throws ConfigurationException
+ public static CFMetaData inflate(org.apache.cassandra.config.avro.CfDef cf) throws ConfigurationException
{
AbstractType comparator = DatabaseDescriptor.getComparator(cf.comparator_type.toString());
AbstractType subcolumnComparator = null;
@@ -247,7 +247,7 @@ public final class CFMetaData
throw new ConfigurationException("Could not create Reconciler of type " + cf.reconciler, ex);
}
Map<byte[], ColumnDefinition> column_metadata = new TreeMap<byte[], ColumnDefinition>(FBUtilities.byteArrayComparator);
- Iterator<org.apache.cassandra.avro.ColumnDef> cditer = cf.column_metadata.iterator();
+ Iterator<org.apache.cassandra.config.avro.ColumnDef> cditer = cf.column_metadata.iterator();
while (cditer.hasNext())
{
ColumnDefinition cd = ColumnDefinition.inflate(cditer.next());
Modified: cassandra/trunk/src/java/org/apache/cassandra/config/ColumnDefinition.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/ColumnDefinition.java?rev=981645&r1=981644&r2=981645&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/ColumnDefinition.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/ColumnDefinition.java Mon Aug 2 18:18:40 2010
@@ -54,18 +54,18 @@ public class ColumnDefinition {
return result;
}
- public org.apache.cassandra.avro.ColumnDef deflate()
+ public org.apache.cassandra.config.avro.ColumnDef deflate()
{
- org.apache.cassandra.avro.ColumnDef cd = new org.apache.cassandra.avro.ColumnDef();
+ org.apache.cassandra.config.avro.ColumnDef cd = new org.apache.cassandra.config.avro.ColumnDef();
cd.name = ByteBuffer.wrap(name);
cd.validation_class = new Utf8(validator.getClass().getName());
cd.index_type = index_type == null ? null :
- Enum.valueOf(org.apache.cassandra.avro.IndexType.class, index_type.name());
+ Enum.valueOf(org.apache.cassandra.config.avro.IndexType.class, index_type.name());
cd.index_name = index_name == null ? null : new Utf8(index_name);
return cd;
}
- public static ColumnDefinition inflate(org.apache.cassandra.avro.ColumnDef cd) throws ConfigurationException
+ public static ColumnDefinition inflate(org.apache.cassandra.config.avro.ColumnDef cd) throws ConfigurationException
{
byte[] name = new byte[cd.name.remaining()];
cd.name.get(name, 0, name.length);
Modified: cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java?rev=981645&r1=981644&r2=981645&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java Mon Aug 2 18:18:40 2010
@@ -72,9 +72,9 @@ public final class KSMetaData
return cfMetaData;
}
- public org.apache.cassandra.avro.KsDef deflate()
+ public org.apache.cassandra.config.avro.KsDef deflate()
{
- org.apache.cassandra.avro.KsDef ks = new org.apache.cassandra.avro.KsDef();
+ org.apache.cassandra.config.avro.KsDef ks = new org.apache.cassandra.config.avro.KsDef();
ks.name = new Utf8(name);
ks.strategy_class = new Utf8(strategyClass.getName());
if (strategyOptions != null)
@@ -86,13 +86,13 @@ public final class KSMetaData
}
}
ks.replication_factor = replicationFactor;
- ks.cf_defs = SerDeUtils.createArray(cfMetaData.size(), org.apache.cassandra.avro.CfDef.SCHEMA$);
+ ks.cf_defs = SerDeUtils.createArray(cfMetaData.size(), org.apache.cassandra.config.avro.CfDef.SCHEMA$);
for (CFMetaData cfm : cfMetaData.values())
ks.cf_defs.add(cfm.deflate());
return ks;
}
- public static KSMetaData inflate(org.apache.cassandra.avro.KsDef ks) throws ConfigurationException
+ public static KSMetaData inflate(org.apache.cassandra.config.avro.KsDef ks) throws ConfigurationException
{
Class<AbstractReplicationStrategy> repStratClass;
try
@@ -114,7 +114,7 @@ public final class KSMetaData
}
int cfsz = (int)ks.cf_defs.size();
CFMetaData[] cfMetaData = new CFMetaData[cfsz];
- Iterator<org.apache.cassandra.avro.CfDef> cfiter = ks.cf_defs.iterator();
+ Iterator<org.apache.cassandra.config.avro.CfDef> cfiter = ks.cf_defs.iterator();
for (int i = 0; i < cfsz; i++)
cfMetaData[i] = CFMetaData.inflate(cfiter.next());
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java?rev=981645&r1=981644&r2=981645&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java Mon Aug 2 18:18:40 2010
@@ -19,7 +19,6 @@
package org.apache.cassandra.db;
import org.apache.avro.Schema;
-import org.apache.avro.io.BinaryDecoder;
import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.config.DatabaseDescriptor;
@@ -75,7 +74,7 @@ public class DefsTable
rm.add(new QueryPath(Migration.SCHEMA_CF,
null,
DEFINITION_SCHEMA_COLUMN_NAME),
- org.apache.cassandra.avro.KsDef.SCHEMA$.toString().getBytes(UTF_8),
+ org.apache.cassandra.config.avro.KsDef.SCHEMA$.toString().getBytes(UTF_8),
now);
rm.apply();
@@ -109,7 +108,7 @@ public class DefsTable
{
if (Arrays.equals(column.name(), DEFINITION_SCHEMA_COLUMN_NAME))
continue;
- org.apache.cassandra.avro.KsDef ks = SerDeUtils.<org.apache.cassandra.avro.KsDef>deserialize(schema, column.value());
+ org.apache.cassandra.config.avro.KsDef ks = SerDeUtils.<org.apache.cassandra.config.avro.KsDef>deserialize(schema, column.value());
keyspaces.add(KSMetaData.inflate(ks));
}
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddColumnFamily.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddColumnFamily.java?rev=981645&r1=981644&r2=981645&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddColumnFamily.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddColumnFamily.java Mon Aug 2 18:18:40 2010
@@ -1,7 +1,6 @@
package org.apache.cassandra.db.migration;
import org.apache.avro.Schema;
-import org.apache.avro.io.BinaryDecoder;
import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.ConfigurationException;
@@ -53,7 +52,7 @@ public class AddColumnFamily extends Mig
// deserialize cf
try
{
- cfm = CFMetaData.inflate(SerDeUtils.<org.apache.cassandra.avro.CfDef>deserializeWithSchema(FBUtilities.readShortByteArray(din)));
+ cfm = CFMetaData.inflate(SerDeUtils.<org.apache.cassandra.config.avro.CfDef>deserializeWithSchema(FBUtilities.readShortByteArray(din)));
}
catch (ConfigurationException e)
{
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddKeyspace.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddKeyspace.java?rev=981645&r1=981644&r2=981645&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddKeyspace.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/migration/AddKeyspace.java Mon Aug 2 18:18:40 2010
@@ -19,7 +19,6 @@
package org.apache.cassandra.db.migration;
import org.apache.avro.Schema;
-import org.apache.avro.io.BinaryDecoder;
import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.ConfigurationException;
@@ -51,7 +50,7 @@ public class AddKeyspace extends Migrati
// deserialize ks
try
{
- ksm = KSMetaData.inflate(SerDeUtils.<org.apache.cassandra.avro.KsDef>deserializeWithSchema(FBUtilities.readShortByteArray(din)));
+ ksm = KSMetaData.inflate(SerDeUtils.<org.apache.cassandra.config.avro.KsDef>deserializeWithSchema(FBUtilities.readShortByteArray(din)));
}
catch (ConfigurationException e)
{
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java?rev=981645&r1=981644&r2=981645&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/migration/Migration.java Mon Aug 2 18:18:40 2010
@@ -227,7 +227,7 @@ public abstract class Migration
rm.add(new QueryPath(SCHEMA_CF,
null,
DefsTable.DEFINITION_SCHEMA_COLUMN_NAME),
- org.apache.cassandra.avro.KsDef.SCHEMA$.toString().getBytes(UTF_8),
+ org.apache.cassandra.config.avro.KsDef.SCHEMA$.toString().getBytes(UTF_8),
now);
return rm;
}