Author: gdusbabek
Date: Tue Oct 5 15:43:41 2010
New Revision: 1004678
URL: http://svn.apache.org/viewvc?rev=1004678&view=rev
Log:
use avro includes and aliases in order to have less duplicated structures.
patch by stuhood, reviewed by gdusbabek. CASSANDRA-1436
Added:
cassandra/trunk/lib/avro-1.4.0-fixes.jar
- copied, changed from r1004454, cassandra/trunk/lib/avro-1.4.0-rc4.jar
cassandra/trunk/lib/avro-1.4.0-sources-fixes.jar
Removed:
cassandra/trunk/lib/avro-1.4.0-rc4.jar
Modified:
cassandra/trunk/build.xml
cassandra/trunk/interface/cassandra.genavro
cassandra/trunk/src/avro/internode.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/Migration.java
cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
Modified: cassandra/trunk/build.xml
URL:
http://svn.apache.org/viewvc/cassandra/trunk/build.xml?rev=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/build.xml (original)
+++ cassandra/trunk/build.xml Tue Oct 5 15:43:41 2010
@@ -187,8 +187,12 @@
<target name="avro-interface-generate-client"
unless="avroInterfaceUpToDate"
depends="init,check-avro-generate,ivy-retrieve-build">
+ <!-- A copy for interested clients. TODO: Jar this stuff up. -->
<avromacro protocolname="cassandra"
inputfile="${interface.dir}/cassandra.genavro"
- jsondir="${interface.avro.dir}"
outputdir="${interface.avro.dir}" />
+ jsondir="${interface.avro.dir}" outputdir="${interface.avro.dir}" />
+ <!-- A copy for our build. -->
+ <avromacro protocolname="api"
inputfile="${interface.dir}/cassandra.genavro"
+ jsondir="${build.dir}" outputdir="${build.src}" />
</target>
<target name="avro-interface-generate-internode"
unless="avroINProtoUpToDate"
depends="init,check-avro-generate,ivy-retrieve-build">
@@ -271,7 +275,6 @@
<src path="${build.src.java}"/>
<src path="${build.src.gen-java}"/>
<src path="${interface.thrift.dir}/gen-java"/>
- <src path="${interface.avro.dir}/gen-java"/>
<classpath refid="cassandra.classpath"/>
</javac>
Modified: cassandra/trunk/interface/cassandra.genavro
URL:
http://svn.apache.org/viewvc/cassandra/trunk/interface/cassandra.genavro?rev=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/interface/cassandra.genavro (original)
+++ cassandra/trunk/interface/cassandra.genavro Tue Oct 5 15:43:41 2010
@@ -117,13 +117,13 @@ protocol Cassandra {
union { Deletion, null } deletion;
}
- /* NB: Until AVRO-495: must be kept sync'd with
src/avro/internode.genavro. */
+ @aliases(["org.apache.cassandra.config.avro.IndexType"])
enum IndexType {
KEYS
}
/* describes a column in a column family. */
- /* NB: Until AVRO-495: must be kept sync'd with
src/avro/internode.genavro. */
+ @aliases(["org.apache.cassandra.config.avro.ColumnDef"])
record ColumnDef {
bytes name;
string validation_class;
@@ -135,7 +135,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
src/avro/internode.genavro. */
+ @aliases(["org.apache.cassandra.config.avro.CfDef"])
record CfDef {
string keyspace;
string name;
@@ -156,7 +156,7 @@ protocol Cassandra {
}
/* describes a keyspace. */
- /* NB: Until AVRO-495: must be kept sync'd with
src/avro/internode.genavro. */
+ @aliases(["org.apache.cassandra.config.avro.KsDef"])
record KsDef {
string name;
string strategy_class;
Copied: cassandra/trunk/lib/avro-1.4.0-fixes.jar (from r1004454,
cassandra/trunk/lib/avro-1.4.0-rc4.jar)
URL:
http://svn.apache.org/viewvc/cassandra/trunk/lib/avro-1.4.0-fixes.jar?p2=cassandra/trunk/lib/avro-1.4.0-fixes.jar&p1=cassandra/trunk/lib/avro-1.4.0-rc4.jar&r1=1004454&r2=1004678&rev=1004678&view=diff
==============================================================================
Files cassandra/trunk/lib/avro-1.4.0-rc4.jar (original) and
cassandra/trunk/lib/avro-1.4.0-fixes.jar Tue Oct 5 15:43:41 2010 differ
Added: cassandra/trunk/lib/avro-1.4.0-sources-fixes.jar
URL:
http://svn.apache.org/viewvc/cassandra/trunk/lib/avro-1.4.0-sources-fixes.jar?rev=1004678&view=auto
==============================================================================
Files cassandra/trunk/lib/avro-1.4.0-sources-fixes.jar (added) and
cassandra/trunk/lib/avro-1.4.0-sources-fixes.jar Tue Oct 5 15:43:41 2010 differ
Modified: cassandra/trunk/src/avro/internode.genavro
URL:
http://svn.apache.org/viewvc/cassandra/trunk/src/avro/internode.genavro?rev=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/src/avro/internode.genavro (original)
+++ cassandra/trunk/src/avro/internode.genavro Tue Oct 5 15:43:41 2010
@@ -22,63 +22,20 @@
@namespace("org.apache.cassandra")
protocol InterNode {
+ // import the public client API
+ import idl "../../interface/cassandra.genavro";
+
@namespace("org.apache.cassandra.utils.avro")
fixed UUID(16);
- /* 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 } comparator_type;
- union { string, null } subcomparator_type;
- 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 { null, string } default_validation_class = null;
- union { null, int } min_compaction_threshold = null;
- union { null, int } max_compaction_threshold = null;
- union { int, null } id;
- union { array<ColumnDef>, null } column_metadata;
- }
-
- /* 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;
- }
-
@namespace("org.apache.cassandra.db.migration.avro")
record AddColumnFamily {
- org.apache.cassandra.config.avro.CfDef cf;
+ org.apache.cassandra.avro.CfDef cf;
}
@namespace("org.apache.cassandra.db.migration.avro")
record AddKeyspace {
- org.apache.cassandra.config.avro.KsDef ks;
+ org.apache.cassandra.avro.KsDef ks;
}
@namespace("org.apache.cassandra.db.migration.avro")
@@ -110,14 +67,14 @@ protocol InterNode {
@namespace("org.apache.cassandra.db.migration.avro")
record UpdateKeyspace {
- org.apache.cassandra.config.avro.KsDef oldKs;
- org.apache.cassandra.config.avro.KsDef newKs;
+ org.apache.cassandra.avro.KsDef oldKs;
+ org.apache.cassandra.avro.KsDef newKs;
}
@namespace("org.apache.cassandra.db.migration.avro")
record UpdateColumnFamily {
- org.apache.cassandra.config.avro.CfDef oldCf;
- org.apache.cassandra.config.avro.CfDef newCf;
+ org.apache.cassandra.avro.CfDef oldCf;
+ org.apache.cassandra.avro.CfDef newCf;
}
@namespace("org.apache.cassandra.db.migration.avro")
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=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java Tue
Oct 5 15:43:41 2010
@@ -24,20 +24,23 @@ import java.util.concurrent.atomic.Atomi
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
+import org.apache.cassandra.avro.ColumnDef;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.avro.util.Utf8;
-import org.apache.cassandra.config.avro.ColumnDef;
import org.apache.cassandra.db.*;
+
+import org.apache.cassandra.db.marshal.TimeUUIDType;
+import org.apache.cassandra.db.marshal.UTF8Type;
+import org.apache.cassandra.io.SerDeUtils;
+import org.apache.cassandra.db.ColumnFamilyType;
+import org.apache.cassandra.db.ClockType;
import org.apache.cassandra.db.clock.AbstractReconciler;
import org.apache.cassandra.db.clock.TimestampReconciler;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.db.marshal.BytesType;
-import org.apache.cassandra.db.marshal.TimeUUIDType;
-import org.apache.cassandra.db.marshal.UTF8Type;
import org.apache.cassandra.db.migration.Migration;
-import org.apache.cassandra.io.SerDeUtils;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.Pair;
@@ -297,9 +300,19 @@ public final class CFMetaData
cfIdMap.remove(new Pair<String, String>(cfm.tableName, cfm.cfName));
}
- public org.apache.cassandra.config.avro.CfDef deflate()
+ // a quick and dirty pretty printer for describing the column family...
+ //TODO: Make it prettier, use it in the CLI
+ public String pretty()
+ {
+ return tableName + "." + cfName + "\n"
+ + "Column Family Type: " + cfType + "\n"
+ + "Column Family Clock Type: " + clockType + "\n"
+ + "Columns Sorted By: " + comparator + "\n";
+ }
+
+ public org.apache.cassandra.avro.CfDef deflate()
{
- org.apache.cassandra.config.avro.CfDef cf = new
org.apache.cassandra.config.avro.CfDef();
+ org.apache.cassandra.avro.CfDef cf = new
org.apache.cassandra.avro.CfDef();
cf.id = cfId;
cf.keyspace = new Utf8(tableName);
cf.name = new Utf8(cfName);
@@ -317,13 +330,13 @@ public final class CFMetaData
cf.min_compaction_threshold = minCompactionThreshold;
cf.max_compaction_threshold = maxCompactionThreshold;
cf.column_metadata = SerDeUtils.createArray(column_metadata.size(),
-
org.apache.cassandra.config.avro.ColumnDef.SCHEMA$);
+
org.apache.cassandra.avro.ColumnDef.SCHEMA$);
for (ColumnDefinition cd : column_metadata.values())
cf.column_metadata.add(cd.deflate());
return cf;
}
- public static CFMetaData inflate(org.apache.cassandra.config.avro.CfDef cf)
+ public static CFMetaData inflate(org.apache.cassandra.avro.CfDef cf)
{
AbstractType comparator;
AbstractType subcolumnComparator = null;
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=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/ColumnDefinition.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/ColumnDefinition.java
Tue Oct 5 15:43:41 2010
@@ -75,18 +75,18 @@ public class ColumnDefinition {
return result;
}
- public org.apache.cassandra.config.avro.ColumnDef deflate()
+ public org.apache.cassandra.avro.ColumnDef deflate()
{
- org.apache.cassandra.config.avro.ColumnDef cd = new
org.apache.cassandra.config.avro.ColumnDef();
+ org.apache.cassandra.avro.ColumnDef cd = new
org.apache.cassandra.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.config.avro.IndexType.class,
index_type.name());
+ Enum.valueOf(org.apache.cassandra.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.config.avro.ColumnDef cd)
+ public static ColumnDefinition inflate(org.apache.cassandra.avro.ColumnDef
cd)
{
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=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/KSMetaData.java Tue
Oct 5 15:43:41 2010
@@ -71,9 +71,9 @@ public final class KSMetaData
return cfMetaData;
}
- public org.apache.cassandra.config.avro.KsDef deflate()
+ public org.apache.cassandra.avro.KsDef deflate()
{
- org.apache.cassandra.config.avro.KsDef ks = new
org.apache.cassandra.config.avro.KsDef();
+ org.apache.cassandra.avro.KsDef ks = new
org.apache.cassandra.avro.KsDef();
ks.name = new Utf8(name);
ks.strategy_class = new Utf8(strategyClass.getName());
if (strategyOptions != null)
@@ -85,13 +85,13 @@ public final class KSMetaData
}
}
ks.replication_factor = replicationFactor;
- ks.cf_defs = SerDeUtils.createArray(cfMetaData.size(),
org.apache.cassandra.config.avro.CfDef.SCHEMA$);
+ ks.cf_defs = SerDeUtils.createArray(cfMetaData.size(),
org.apache.cassandra.avro.CfDef.SCHEMA$);
for (CFMetaData cfm : cfMetaData.values())
ks.cf_defs.add(cfm.deflate());
return ks;
}
- public static KSMetaData inflate(org.apache.cassandra.config.avro.KsDef ks)
+ public static KSMetaData inflate(org.apache.cassandra.avro.KsDef ks)
{
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.config.avro.CfDef> cfiter =
ks.cf_defs.iterator();
+ Iterator<org.apache.cassandra.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=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/DefsTable.java Tue Oct 5
15:43:41 2010
@@ -70,7 +70,7 @@ public class DefsTable
rm.add(new QueryPath(Migration.SCHEMA_CF,
null,
DEFINITION_SCHEMA_COLUMN_NAME),
-
org.apache.cassandra.config.avro.KsDef.SCHEMA$.toString().getBytes(UTF_8),
+
org.apache.cassandra.avro.KsDef.SCHEMA$.toString().getBytes(UTF_8),
now);
rm.apply();
@@ -102,7 +102,7 @@ public class DefsTable
{
if (Arrays.equals(column.name(), DEFINITION_SCHEMA_COLUMN_NAME))
continue;
- org.apache.cassandra.config.avro.KsDef ks =
SerDeUtils.deserialize(schema, column.value(), new
org.apache.cassandra.config.avro.KsDef());
+ org.apache.cassandra.avro.KsDef ks =
SerDeUtils.deserialize(schema, column.value(), new
org.apache.cassandra.avro.KsDef());
keyspaces.add(KSMetaData.inflate(ks));
}
return keyspaces;
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=1004678&r1=1004677&r2=1004678&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
Tue Oct 5 15:43:41 2010
@@ -223,7 +223,7 @@ public abstract class Migration
rm.add(new QueryPath(SCHEMA_CF,
null,
DefsTable.DEFINITION_SCHEMA_COLUMN_NAME),
-
org.apache.cassandra.config.avro.KsDef.SCHEMA$.toString().getBytes(UTF_8),
+
org.apache.cassandra.avro.KsDef.SCHEMA$.toString().getBytes(UTF_8),
now);
return rm;
}
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=1004678&r1=1004677&r2=1004678&view=diff
==============================================================================
---
cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
(original)
+++
cassandra/trunk/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
Tue Oct 5 15:43:41 2010
@@ -59,7 +59,7 @@ public class DatabaseDescriptorTest
{
for (CFMetaData cfm :
DatabaseDescriptor.getTableMetaData(table).values())
{
- CFMetaData cfmDupe = CFMetaData.inflate(serDe(cfm.deflate(),
new org.apache.cassandra.config.avro.CfDef()));
+ CFMetaData cfmDupe = CFMetaData.inflate(serDe(cfm.deflate(),
new org.apache.cassandra.avro.CfDef()));
assert cfmDupe != null;
assert cfmDupe.equals(cfm);
}
@@ -71,7 +71,7 @@ public class DatabaseDescriptorTest
{
for (KSMetaData ksm : DatabaseDescriptor.tables.values())
{
- KSMetaData ksmDupe = KSMetaData.inflate(serDe(ksm.deflate(), new
org.apache.cassandra.config.avro.KsDef()));
+ KSMetaData ksmDupe = KSMetaData.inflate(serDe(ksm.deflate(), new
org.apache.cassandra.avro.KsDef()));
assert ksmDupe != null;
assert ksmDupe.equals(ksm);
}