You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by al...@apache.org on 2013/05/31 03:05:24 UTC
git commit: Ninja-kill what's left from avro
Updated Branches:
refs/heads/trunk be0523a24 -> 6f5d8a56f
Ninja-kill what's left from avro
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6f5d8a56
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6f5d8a56
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6f5d8a56
Branch: refs/heads/trunk
Commit: 6f5d8a56fc026fbf7173cfc364346def3806c7d5
Parents: be0523a
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Fri May 31 04:04:36 2013 +0300
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Fri May 31 04:05:07 2013 +0300
----------------------------------------------------------------------
build.xml | 64 +----
lib/avro-1.4.0-fixes.jar | Bin 596381 -> 0 bytes
lib/avro-1.4.0-sources-fixes.jar | Bin 276425 -> 0 bytes
lib/licenses/avro-1.4.0.txt | 202 ------------
src/avro/internode.genavro | 131 --------
src/java/org/apache/cassandra/config/Avro.java | 254 ---------------
src/java/org/apache/cassandra/db/DefsTable.java | 93 ------
.../apache/cassandra/config/CFMetaDataTest.java | 3 +-
.../cassandra/config/DatabaseDescriptorTest.java | 1 -
9 files changed, 3 insertions(+), 745 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6f5d8a56/build.xml
----------------------------------------------------------------------
diff --git a/build.xml b/build.xml
index 5a2feff..97d0efd 100644
--- a/build.xml
+++ b/build.xml
@@ -35,7 +35,6 @@
<property name="build.src" value="${basedir}/src"/>
<property name="build.src.java" value="${basedir}/src/java"/>
<property name="build.src.resources" value="${basedir}/src/resources"/>
- <property name="avro.src" value="${basedir}/src/avro"/>
<property name="build.src.gen-java" value="${basedir}/src/gen-java"/>
<property name="build.lib" value="${basedir}/lib"/>
<property name="build.dir" value="${basedir}/build"/>
@@ -168,7 +167,6 @@
<delete dir="${build.classes}" />
<delete dir="${cobertura.classes.dir}" />
<delete dir="${build.src.gen-java}" />
- <delete file="${build.dir}/internode.avpr" />
</target>
<target depends="clean" name="cleanall"/>
@@ -356,16 +354,8 @@
<dependency groupId="com.github.stephenc.high-scale-lib" artifactId="high-scale-lib" version="1.1.2"/>
<dependency groupId="com.github.stephenc" artifactId="jamm" version="0.2.5"/>
<dependency groupId="org.yaml" artifactId="snakeyaml" version="1.6"/>
- <dependency groupId="org.apache.cassandra.deps" artifactId="avro" version="1.4.0-cassandra-1">
- <exclusion groupId="org.jboss.netty" artifactId="netty"/>
- <exclusion groupId="com.thoughtworks.paranamer" artifactId="paranamer"/>
- <exclusion groupId="com.thoughtworks.paranamer" artifactId="paranamer-ant"/>
- <exclusion groupId="org.apache.velocity" artifactId="velocity"/>
- </dependency>
-
<dependency groupId="org.apache.thrift" artifactId="libthrift" version="0.9.0"/>
- <dependency groupId="com.thoughtworks.paranamer" artifactId="paranamer-ant" version="2.1"/>
<dependency groupId="junit" artifactId="junit" version="4.6" />
<dependency groupId="commons-logging" artifactId="commons-logging" version="1.1.1"/>
<dependency groupId="org.apache.rat" artifactId="apache-rat" version="0.6">
@@ -412,9 +402,6 @@
<parent groupId="org.apache.cassandra"
artifactId="cassandra-parent"
version="${version}"/>
- <!-- FIXME: paranamer can be dropped after we're depending on avro
- (since it depends on them). -->
- <dependency groupId="com.thoughtworks.paranamer" artifactId="paranamer-ant"/>
<dependency groupId="junit" artifactId="junit"/>
<dependency groupId="commons-logging" artifactId="commons-logging"/>
<dependency groupId="org.apache.rat" artifactId="apache-rat"/>
@@ -463,7 +450,6 @@
<dependency groupId="com.googlecode.concurrentlinkedhashmap" artifactId="concurrentlinkedhashmap-lru"/>
<dependency groupId="org.antlr" artifactId="antlr"/>
<dependency groupId="org.slf4j" artifactId="slf4j-api"/>
- <dependency groupId="org.apache.cassandra.deps" artifactId="avro"/>
<dependency groupId="org.codehaus.jackson" artifactId="jackson-core-asl"/>
<dependency groupId="org.codehaus.jackson" artifactId="jackson-mapper-asl"/>
<dependency groupId="jline" artifactId="jline"/>
@@ -573,48 +559,6 @@
</copy>
</target>
- <!--
- Generate avro code
- -->
- <target name="check-avro-generate" depends="init">
- <taskdef name="avro-protocol" classname="org.apache.avro.specific.ProtocolTask">
- <classpath refid="cassandra.classpath" />
- </taskdef>
- <uptodate property="avroINProtoUpToDate" srcfile="${avro.src}/internode.genavro"
- targetfile="${build.dir}/internode.avpr" />
- </target>
-
- <target name="avro-generate"
- unless="avroINProtoUpToDate"
- depends="init,check-avro-generate,maven-ant-tasks-retrieve-build"
- description="Generates Java Avro classes for internal use.">
- <avromacro protocolname="internode" inputfile="${avro.src}/internode.genavro"
- jsondir="${build.dir}" outputdir="${build.src}"/>
- </target>
-
- <macrodef name="avromacro">
- <attribute name="protocolname" />
- <attribute name="inputfile" />
- <attribute name="jsondir" />
- <attribute name="outputdir" />
- <sequential>
- <echo message="Generating Avro @{protocolname} code..." />
- <mkdir dir="@{jsondir}" />
- <!-- Generate json schema from genavro IDL -->
- <java classname="org.apache.avro.tool.Main" fork="true">
- <classpath refid="cassandra.classpath" />
- <arg value="idl" />
- <arg value="@{inputfile}" />
- <arg value="@{jsondir}/@{protocolname}.avpr" />
- </java>
-
- <!-- Generate java code from JSON protocol schema -->
- <avro-protocol destdir="@{outputdir}/gen-java">
- <fileset file="@{jsondir}/@{protocolname}.avpr" />
- </avro-protocol>
- </sequential>
- </macrodef>
-
<!--
Generate thrift code. We have targets to build java because
@@ -692,7 +636,7 @@
depends="maven-ant-tasks-retrieve-build,build-project" description="Compile Cassandra classes"/>
<target name="codecoverage" depends="cobertura-instrument,test,cobertura-report" description="Create code coverage report"/>
- <target depends="init,avro-generate,gen-cli-grammar,gen-cql2-grammar,gen-cql3-grammar"
+ <target depends="init,gen-cli-grammar,gen-cql2-grammar,gen-cql3-grammar"
name="build-project">
<echo message="${ant.project.name}: ${ant.file}"/>
<!-- Order matters! -->
@@ -710,10 +654,6 @@
<copy todir="${build.classes.main}">
<fileset dir="${build.src.resources}" />
</copy>
- <taskdef name="paranamer" classname="com.thoughtworks.paranamer.ant.ParanamerGeneratorTask">
- <classpath refid="cassandra.classpath" />
- </taskdef>
-
<antcall target="createVersionPropFile"/>
</target>
@@ -879,7 +819,7 @@
<!--
The sources-jar target makes cassandra-sources.jar output required for publishing to Maven central repository.
-->
- <target name="sources-jar" depends="init,avro-generate" description="Assemble Cassandra Sources JAR file">
+ <target name="sources-jar" depends="init" description="Assemble Cassandra Sources JAR file">
<jar jarfile="${build.dir}/${ant.project.name}-thrift-${version}-sources.jar">
<fileset dir="${interface.thrift.dir}/gen-java" defaultexcludes="yes">
<include name="org/apache/**/*.java"/>
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6f5d8a56/lib/avro-1.4.0-fixes.jar
----------------------------------------------------------------------
diff --git a/lib/avro-1.4.0-fixes.jar b/lib/avro-1.4.0-fixes.jar
deleted file mode 100644
index 6733756..0000000
Binary files a/lib/avro-1.4.0-fixes.jar and /dev/null differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6f5d8a56/lib/avro-1.4.0-sources-fixes.jar
----------------------------------------------------------------------
diff --git a/lib/avro-1.4.0-sources-fixes.jar b/lib/avro-1.4.0-sources-fixes.jar
deleted file mode 100644
index 2b6e2cb..0000000
Binary files a/lib/avro-1.4.0-sources-fixes.jar and /dev/null differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6f5d8a56/lib/licenses/avro-1.4.0.txt
----------------------------------------------------------------------
diff --git a/lib/licenses/avro-1.4.0.txt b/lib/licenses/avro-1.4.0.txt
deleted file mode 100644
index d645695..0000000
--- a/lib/licenses/avro-1.4.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed 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.
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6f5d8a56/src/avro/internode.genavro
----------------------------------------------------------------------
diff --git a/src/avro/internode.genavro b/src/avro/internode.genavro
deleted file mode 100644
index d7ba60f..0000000
--- a/src/avro/internode.genavro
+++ /dev/null
@@ -1,131 +0,0 @@
-/**
- * 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
- *
- * NOTE: in order to maintain backwards compatibility you *must*
- * only append new fields *and* they must have a default value.
- */
-@namespace("org.apache.cassandra")
-
-protocol InterNode {
- @aliases(["org.apache.cassandra.config.avro.IndexType"])
- @namespace("org.apache.cassandra.db.migration.avro")
- enum IndexType {
- KEYS,
- CUSTOM
- }
-
- @aliases(["org.apache.cassandra.config.avro.ColumnDef"])
- @namespace("org.apache.cassandra.db.migration.avro")
- record ColumnDef {
- bytes name;
- string validation_class;
- union { IndexType, null } index_type;
- union { string, null } index_name;
- union { null, map<string> } index_options = null;
- }
-
- @aliases(["org.apache.cassandra.config.avro.CfDef"])
- @namespace("org.apache.cassandra.db.migration.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 } read_repair_chance;
- boolean replicate_on_write = false;
- union { int, null } gc_grace_seconds;
- union { null, string } default_validation_class = null;
- union { null, string } key_validation_class = null;
- union { null, int } min_compaction_threshold = null;
- union { null, int } max_compaction_threshold = null;
- union { null, double} merge_shards_chance = null;
- union { int, null } id;
- union { array<ColumnDef>, null } column_metadata;
- union { null, bytes } key_alias = null;
- union { null, string } compaction_strategy = null;
- union { null, map<string> } compaction_strategy_options = null;
- union { null, map<string> } compression_options = null;
- union { null, double } bloom_filter_fp_chance = null;
- union { null, string } caching = null;
- union { null, array<bytes> } column_aliases = null;
- union { null, bytes } value_alias = null;
- union { double, null } dclocal_read_repair_chance = 0.0;
- union { double, null } row_cache_size;
- union { double, null } key_cache_size;
- }
-
- @aliases(["org.apache.cassandra.config.avro.KsDef"])
- @namespace("org.apache.cassandra.db.migration.avro")
- record KsDef {
- string name;
- string strategy_class;
- union{ map<string>, null } strategy_options;
- union{ int, null } replication_factor;
- array<CfDef> cf_defs;
- boolean durable_writes = true;
- }
-
- @namespace("org.apache.cassandra.utils.avro")
- fixed UUID(16);
-
- @namespace("org.apache.cassandra.db.migration.avro")
- record AddColumnFamily {
- CfDef cf;
- }
-
- @namespace("org.apache.cassandra.db.migration.avro")
- record AddKeyspace {
- KsDef ks;
- }
-
- @namespace("org.apache.cassandra.db.migration.avro")
- record DropColumnFamily {
- string ksname;
- string cfname;
- }
-
- @namespace("org.apache.cassandra.db.migration.avro")
- record DropKeyspace {
- string ksname;
- }
-
- @namespace("org.apache.cassandra.db.migration.avro")
- record UpdateKeyspace {
- KsDef oldKs;
- KsDef newKs;
- }
-
- @namespace("org.apache.cassandra.db.migration.avro")
- record UpdateColumnFamily {
- CfDef metadata;
- }
-
- @namespace("org.apache.cassandra.db.migration.avro")
- record Migration {
- org.apache.cassandra.utils.avro.UUID old_version;
- org.apache.cassandra.utils.avro.UUID new_version;
- bytes row_mutation;
- string classname;
- union { AddColumnFamily,DropColumnFamily,AddKeyspace,DropKeyspace,UpdateKeyspace,UpdateColumnFamily } migration;
- }
-}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6f5d8a56/src/java/org/apache/cassandra/config/Avro.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/Avro.java b/src/java/org/apache/cassandra/config/Avro.java
deleted file mode 100644
index c712e07..0000000
--- a/src/java/org/apache/cassandra/config/Avro.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * 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.
- */
-package org.apache.cassandra.config;
-
-import java.nio.ByteBuffer;
-import java.util.*;
-
-import org.apache.cassandra.db.ColumnFamilyType;
-import org.apache.cassandra.db.marshal.AbstractType;
-import org.apache.cassandra.db.marshal.BytesType;
-import org.apache.cassandra.db.marshal.CompositeType;
-import org.apache.cassandra.db.marshal.TypeParser;
-import org.apache.cassandra.db.migration.avro.CfDef;
-import org.apache.cassandra.exceptions.ConfigurationException;
-import org.apache.cassandra.exceptions.RequestValidationException;
-import org.apache.cassandra.io.compress.CompressionParameters;
-import org.apache.cassandra.locator.AbstractReplicationStrategy;
-import org.apache.cassandra.locator.NetworkTopologyStrategy;
-import org.apache.cassandra.thrift.IndexType;
-import org.apache.cassandra.utils.ByteBufferUtil;
-
-import static org.apache.cassandra.config.CFMetaData.Caching;
-
-/**
- * methods to load schema definitions from old-style Avro serialization
- */
-public class Avro
-{
- @Deprecated
- public static KSMetaData ksFromAvro(org.apache.cassandra.db.migration.avro.KsDef ks)
- {
- Class<? extends AbstractReplicationStrategy> repStratClass;
- try
- {
- String strategyClassName = KSMetaData.convertOldStrategyName(ks.strategy_class.toString());
- repStratClass = (Class<AbstractReplicationStrategy>)Class.forName(strategyClassName);
- }
- catch (Exception ex)
- {
- throw new RuntimeException("Could not create ReplicationStrategy of type " + ks.strategy_class, ex);
- }
-
- Map<String, String> strategyOptions = new HashMap<String, String>();
- if (ks.strategy_options != null)
- {
- for (Map.Entry<CharSequence, CharSequence> e : ks.strategy_options.entrySet())
- {
- String name = e.getKey().toString();
- // Silently discard a replication_factor option to NTS.
- // The history is, people were creating CFs with the default settings (which in the CLI is NTS) and then
- // giving it a replication_factor option, which is nonsensical. Initially our strategy was to silently
- // ignore this option, but that turned out to confuse people more. So in 0.8.2 we switched to throwing
- // an exception in the NTS constructor, which would be turned into an InvalidRequestException for the
- // client. But, it also prevented startup for anyone upgrading without first cleaning that option out.
- if (repStratClass == NetworkTopologyStrategy.class && name.trim().toLowerCase().equals("replication_factor"))
- continue;
- strategyOptions.put(name, e.getValue().toString());
- }
- }
- maybeAddReplicationFactor(strategyOptions, ks.strategy_class.toString(), ks.replication_factor);
-
- int cfsz = ks.cf_defs.size();
- List<CFMetaData> cfMetaData = new ArrayList<CFMetaData>(cfsz);
-
- for (CfDef cf_def : ks.cf_defs)
- {
- double keysCached = cf_def.key_cache_size == null ? -1 : cf_def.key_cache_size;
- double rowsCached = cf_def.row_cache_size == null ? -1 : cf_def.row_cache_size;
-
- if (keysCached > 0 && rowsCached > 0)
- cf_def.caching = Caching.ALL.name();
- else if (keysCached <= 0 && rowsCached <= 0)
- cf_def.caching = Caching.NONE.name();
- else if (keysCached > 0 && rowsCached <= 0)
- cf_def.caching = Caching.KEYS_ONLY.name();
- else
- cf_def.caching = Caching.ROWS_ONLY.name();
-
- cfMetaData.add(cfFromAvro(cf_def));
- }
-
- return new KSMetaData(ks.name.toString(), repStratClass, strategyOptions, ks.durable_writes, cfMetaData);
- }
-
- @Deprecated
- private static void maybeAddReplicationFactor(Map<String, String> options, String cls, Integer rf)
- {
- if (rf != null && (cls.endsWith("SimpleStrategy") || cls.endsWith("OldNetworkTopologyStrategy")))
- options.put("replication_factor", rf.toString());
- }
-
- @Deprecated
- public static CFMetaData cfFromAvro(CfDef cf)
- {
- AbstractType<?> comparator;
- AbstractType<?> subcolumnComparator = null;
- AbstractType<?> validator;
- AbstractType<?> keyValidator;
-
- try
- {
- comparator = TypeParser.parse(cf.comparator_type.toString());
- if (cf.subcomparator_type != null)
- subcolumnComparator = TypeParser.parse(cf.subcomparator_type);
- validator = TypeParser.parse(cf.default_validation_class);
- keyValidator = TypeParser.parse(cf.key_validation_class);
- }
- catch (Exception ex)
- {
- throw new RuntimeException("Could not inflate CFMetaData for " + cf, ex);
- }
- Map<ByteBuffer, ColumnDefinition> column_metadata = new TreeMap<ByteBuffer, ColumnDefinition>(BytesType.instance);
- for (org.apache.cassandra.db.migration.avro.ColumnDef aColumn_metadata : cf.column_metadata)
- {
- ColumnDefinition cd = columnFromAvro(aColumn_metadata);
- if (cd.getIndexType() != null && cd.getIndexName() == null)
- cd.setIndexName(CFMetaData.getDefaultIndexName(cf.name.toString(), comparator, cd.name));
- column_metadata.put(cd.name, cd);
- }
-
- CFMetaData newCFMD = new CFMetaData(cf.keyspace.toString(),
- cf.name.toString(),
- ColumnFamilyType.create(cf.column_type.toString()),
- comparator,
- subcolumnComparator);
-
- // When we pull up an old avro CfDef which doesn't have these arguments,
- // it doesn't default them correctly. Without explicit defaulting,
- // grandfathered metadata becomes wrong or causes crashes.
- // Isn't AVRO supposed to handle stuff like this?
- if (cf.min_compaction_threshold != null) { newCFMD.minCompactionThreshold(cf.min_compaction_threshold); }
- if (cf.max_compaction_threshold != null) { newCFMD.maxCompactionThreshold(cf.max_compaction_threshold); }
-
- if (cf.key_alias != null)
- newCFMD.addOrReplaceColumnDefinition(ColumnDefinition.partitionKeyDef(cf.key_alias, keyValidator, null));
- if (cf.column_aliases != null)
- {
- if (comparator instanceof CompositeType)
- {
- List<AbstractType<?>> components = ((CompositeType)comparator).types;
- for (int i = 0; i < cf.column_aliases.size(); ++i)
- if (cf.column_aliases.get(i) != null)
- newCFMD.addOrReplaceColumnDefinition(ColumnDefinition.clusteringKeyDef(cf.column_aliases.get(i), components.get(i), i));
- }
- else
- {
- assert cf.column_aliases.size() <= 1;
- if (cf.column_aliases.get(0) != null)
- newCFMD.addOrReplaceColumnDefinition(ColumnDefinition.clusteringKeyDef(cf.column_aliases.get(0), comparator, null));
- }
- }
- if (cf.value_alias != null)
- newCFMD.addOrReplaceColumnDefinition(ColumnDefinition.compactValueDef(cf.value_alias, validator));
-
- if (cf.compaction_strategy != null)
- {
- try
- {
- newCFMD.compactionStrategyClass = CFMetaData.createCompactionStrategy(cf.compaction_strategy.toString());
- }
- catch (ConfigurationException e)
- {
- throw new RuntimeException(e);
- }
- }
- if (cf.compaction_strategy_options != null)
- {
- for (Map.Entry<CharSequence, CharSequence> e : cf.compaction_strategy_options.entrySet())
- newCFMD.compactionStrategyOptions.put(e.getKey().toString(), e.getValue().toString());
- }
-
- CompressionParameters cp;
- try
- {
- cp = CompressionParameters.create(cf.compression_options);
- }
- catch (ConfigurationException e)
- {
- throw new RuntimeException(e);
- }
-
- CFMetaData.Caching caching;
-
- try
- {
- caching = cf.caching == null ? CFMetaData.DEFAULT_CACHING_STRATEGY : CFMetaData.Caching.fromString(cf.caching.toString());
- }
- catch (ConfigurationException e)
- {
- throw new RuntimeException(e);
- }
-
- return newCFMD.comment(cf.comment.toString())
- .readRepairChance(cf.read_repair_chance)
- .dcLocalReadRepairChance(cf.dclocal_read_repair_chance)
- .replicateOnWrite(cf.replicate_on_write)
- .gcGraceSeconds(cf.gc_grace_seconds)
- .defaultValidator(validator)
- .keyValidator(keyValidator)
- .columnMetadata(column_metadata)
- .compressionParameters(cp)
- .bloomFilterFpChance(cf.bloom_filter_fp_chance)
- .caching(caching);
- }
-
- @Deprecated
- public static ColumnDefinition columnFromAvro(org.apache.cassandra.db.migration.avro.ColumnDef cd)
- {
- IndexType index_type = cd.index_type == null ? null : Enum.valueOf(IndexType.class, cd.index_type.name());
- String index_name = cd.index_name == null ? null : cd.index_name.toString();
- try
- {
- AbstractType<?> validatorType = TypeParser.parse(cd.validation_class);
- ColumnDefinition def = ColumnDefinition.regularDef(ByteBufferUtil.clone(cd.name), validatorType, null);
- def.setIndexName(index_name);
- def.setIndexType(index_type, getStringMap(cd.index_options));
- return def;
- }
- catch (RequestValidationException e)
- {
- throw new RuntimeException(e);
- }
- }
-
- public static Map<String,String> getStringMap(Map<CharSequence, CharSequence> charMap)
- {
- if (charMap == null)
- return null;
-
- Map<String,String> stringMap = new HashMap<String, String>();
-
- for (Map.Entry<CharSequence, CharSequence> entry : charMap.entrySet())
- stringMap.put(entry.getKey().toString(), entry.getValue().toString());
-
-
- return stringMap;
- }
-}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6f5d8a56/src/java/org/apache/cassandra/db/DefsTable.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DefsTable.java b/src/java/org/apache/cassandra/db/DefsTable.java
index 482f2f9..df551e0 100644
--- a/src/java/org/apache/cassandra/db/DefsTable.java
+++ b/src/java/org/apache/cassandra/db/DefsTable.java
@@ -21,23 +21,15 @@ import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import com.google.common.collect.Iterables;
import com.google.common.collect.MapDifference;
import com.google.common.collect.Maps;
-import org.apache.avro.io.BinaryDecoder;
-import org.apache.avro.io.DecoderFactory;
-import org.apache.avro.specific.SpecificDatumReader;
-import org.apache.avro.specific.SpecificRecord;
import org.apache.cassandra.config.*;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.marshal.AsciiType;
import org.apache.cassandra.db.marshal.UTF8Type;
-import org.apache.cassandra.db.migration.avro.KsDef;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.service.MigrationManager;
@@ -113,18 +105,6 @@ import org.apache.cassandra.utils.FBUtilities;
*/
public class DefsTable
{
- private final static Logger logger = LoggerFactory.getLogger(DefsTable.class);
-
- // unbuffered decoders
- private final static DecoderFactory DIRECT_DECODERS = new DecoderFactory().configureDirectDecoder(true);
-
- // column name for the schema storing serialized keyspace definitions
- // NB: must be an invalid keyspace name
- public static final ByteBuffer DEFINITION_SCHEMA_COLUMN_NAME = ByteBufferUtil.bytes("Avro/Schema");
-
- public static final String OLD_MIGRATIONS_CF = "Migrations";
- public static final String OLD_SCHEMA_CF = "Schema";
-
/* saves keyspace definitions to system schema columnfamilies */
public static synchronized void save(Collection<KSMetaData> keyspaces)
{
@@ -176,55 +156,6 @@ public class DefsTable
}
/**
- * Loads a version of keyspace definitions from storage (using old SCHEMA_CF as a data source)
- * Note: If definitions where found in SCHEMA_CF this method would load them into new schema handling table KEYSPACE_CF
- *
- * @param version The version of the latest migration.
- *
- * @return Collection of found keyspace definitions
- *
- * @throws IOException if failed to read SCHEMA_CF or failed to deserialize Avro schema
- */
- public static synchronized Collection<KSMetaData> loadFromStorage(UUID version) throws IOException
- {
- DecoratedKey vkey = StorageService.getPartitioner().decorateKey(toUTF8Bytes(version));
- Table defs = Table.open(Table.SYSTEM_KS);
- ColumnFamilyStore cfStore = defs.getColumnFamilyStore(OLD_SCHEMA_CF);
- ColumnFamily cf = cfStore.getColumnFamily(QueryFilter.getIdentityFilter(vkey, OLD_SCHEMA_CF));
- Column avroschema = cf.getColumn(DEFINITION_SCHEMA_COLUMN_NAME);
-
- Collection<KSMetaData> keyspaces = Collections.emptyList();
-
- if (avroschema != null)
- {
- ByteBuffer value = avroschema.value();
- org.apache.avro.Schema schema = org.apache.avro.Schema.parse(ByteBufferUtil.string(value));
-
- // deserialize keyspaces using schema
- keyspaces = new ArrayList<KSMetaData>(Iterables.size(cf));
-
- for (Column column : cf)
- {
- if (column.name().equals(DEFINITION_SCHEMA_COLUMN_NAME))
- continue;
- KsDef ks = deserializeAvro(schema, column.value(), new KsDef());
- keyspaces.add(Avro.ksFromAvro(ks));
- }
-
- // store deserialized keyspaces into new place
- save(keyspaces);
-
- flushSchemaCFs();
-
- logger.info("Truncating deprecated system column families (migrations, schema)...");
- dropColumnFamily(Table.SYSTEM_KS, OLD_MIGRATIONS_CF);
- dropColumnFamily(Table.SYSTEM_KS, OLD_SCHEMA_CF);
- }
-
- return keyspaces;
- }
-
- /**
* Merge remote schema in form of row mutations with local and mutate ks/cf metadata objects
* (which also involves fs operations on add/drop ks/cf)
*
@@ -528,28 +459,4 @@ public class DefsTable
{
FBUtilities.waitOnFuture(SystemTable.schemaCFS(cfName).forceFlush());
}
-
- private static ByteBuffer toUTF8Bytes(UUID version)
- {
- return ByteBufferUtil.bytes(version.toString());
- }
-
- /**
- * Deserialize a single object based on the given Schema.
- *
- * @param writer writer's schema
- * @param bytes Array to deserialize from
- * @param ob An empty object to deserialize into (must not be null).
- *
- * @return serialized Avro object
- *
- * @throws IOException if deserialization failed
- */
- public static <T extends SpecificRecord> T deserializeAvro(org.apache.avro.Schema writer, ByteBuffer bytes, T ob) throws IOException
- {
- BinaryDecoder dec = DIRECT_DECODERS.createBinaryDecoder(ByteBufferUtil.getArray(bytes), null);
- SpecificDatumReader<T> reader = new SpecificDatumReader<T>(writer);
- reader.setExpected(ob.getSchema());
- return reader.read(ob, dec);
- }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6f5d8a56/test/unit/org/apache/cassandra/config/CFMetaDataTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/config/CFMetaDataTest.java b/test/unit/org/apache/cassandra/config/CFMetaDataTest.java
index 1621776..3627cd8 100644
--- a/test/unit/org/apache/cassandra/config/CFMetaDataTest.java
+++ b/test/unit/org/apache/cassandra/config/CFMetaDataTest.java
@@ -64,7 +64,7 @@ public class CFMetaDataTest extends SchemaLoader
}
@Test
- public void testThriftToAvroConversion() throws Exception
+ public void testThriftConversion() throws Exception
{
CfDef cfDef = new CfDef().setDefault_validation_class(AsciiType.class.getCanonicalName())
.setComment("Test comment")
@@ -75,7 +75,6 @@ public class CFMetaDataTest extends SchemaLoader
// convert Thrift to CFMetaData
CFMetaData cfMetaData = CFMetaData.fromThrift(cfDef);
- // make a correct Avro object
CfDef thriftCfDef = new CfDef();
thriftCfDef.keyspace = KEYSPACE;
thriftCfDef.name = COLUMN_FAMILY;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6f5d8a56/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java b/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
index 4433b57..ee14ab5 100644
--- a/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
+++ b/test/unit/org/apache/cassandra/config/DatabaseDescriptorTest.java
@@ -58,7 +58,6 @@ public class DatabaseDescriptorTest
for (KSMetaData ksm : Schema.instance.getTableDefinitions())
{
// Not testing round-trip on the KsDef via serDe() because maps
- // cannot be compared in avro.
KSMetaData ksmDupe = KSMetaData.fromThrift(ksm.toThrift());
assert ksmDupe != null;
assert ksmDupe.equals(ksm);