You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by db...@apache.org on 2013/06/24 07:39:38 UTC
git commit: more pre create-table property validation checks
(compression,
speculative retry) patch by dbrosius reviewed by jbellis for cassandra 5693
Updated Branches:
refs/heads/trunk c0547983d -> 36ef643e4
more pre create-table property validation checks (compression, speculative retry)
patch by dbrosius reviewed by jbellis for cassandra 5693
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/36ef643e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/36ef643e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/36ef643e
Branch: refs/heads/trunk
Commit: 36ef643e423e3683fd8cef339cdd95357140af4f
Parents: c054798
Author: Dave Brosius <db...@apache.org>
Authored: Mon Jun 24 01:38:00 2013 -0400
Committer: Dave Brosius <db...@apache.org>
Committed: Mon Jun 24 01:38:00 2013 -0400
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../org/apache/cassandra/cql3/CFPropDefs.java | 21 ++++++++++++++++++++
.../io/compress/CompressionParameters.java | 4 ++--
3 files changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/36ef643e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 3a242ac..ebcdd4e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -62,6 +62,7 @@
(CASSANDRA-5149)
* Streaming 2.0 (CASSANDRA-5286)
* Conditional create/drop ks/table/index statements in CQL3 (CASSANDRA-2737)
+ * more pre-table creation property validation (CASSANDRA-5693)
1.2.7
http://git-wip-us.apache.org/repos/asf/cassandra/blob/36ef643e/src/java/org/apache/cassandra/cql3/CFPropDefs.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/CFPropDefs.java b/src/java/org/apache/cassandra/cql3/CFPropDefs.java
index 7bd8fa3..2416df9 100644
--- a/src/java/org/apache/cassandra/cql3/CFPropDefs.java
+++ b/src/java/org/apache/cassandra/cql3/CFPropDefs.java
@@ -23,6 +23,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.config.CFMetaData;
+import org.apache.cassandra.config.CFMetaData.SpeculativeRetry;
import org.apache.cassandra.db.compaction.AbstractCompactionStrategy;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.exceptions.SyntaxException;
@@ -98,9 +99,29 @@ public class CFPropDefs extends PropertyDefinitions
CFMetaData.validateCompactionOptions(compactionStrategyClass, compactionOptions);
}
+
+ Map<String, String> compressionOptions = getCompressionOptions();
+ if (!compressionOptions.isEmpty())
+ {
+ String sstableCompressionClass = compressionOptions.get(CompressionParameters.SSTABLE_COMPRESSION);
+ if (sstableCompressionClass == null)
+ throw new ConfigurationException("Missing sub-option '" + CompressionParameters.SSTABLE_COMPRESSION + "' for the '" + KW_COMPRESSION + "' option.");
+
+ String chunkLength = compressionOptions.get(CompressionParameters.CHUNK_LENGTH_KB);
+ if (chunkLength == null)
+ throw new ConfigurationException("Missing sub-option '" + CompressionParameters.CHUNK_LENGTH_KB + "' for the '" + KW_COMPRESSION + "' option.");
+
+ Map<String, String> remainingOptions = new HashMap<String, String>(compressionOptions);
+ remainingOptions.remove(CompressionParameters.SSTABLE_COMPRESSION);
+ remainingOptions.remove(CompressionParameters.CHUNK_LENGTH_KB);
+ CompressionParameters cp = new CompressionParameters(sstableCompressionClass, CompressionParameters.parseChunkLength(chunkLength), remainingOptions);
+ cp.validate();
+ }
validateMinimumInt(KW_DEFAULT_TIME_TO_LIVE, 0, CFMetaData.DEFAULT_DEFAULT_TIME_TO_LIVE);
validateMinimumInt(KW_INDEX_INTERVAL, 1, CFMetaData.DEFAULT_INDEX_INTERVAL);
+
+ SpeculativeRetry.fromString(getString(KW_SPECULATIVE_RETRY, SpeculativeRetry.RetryType.NONE.name()));
}
public Class<? extends AbstractCompactionStrategy> getCompactionStrategy()
http://git-wip-us.apache.org/repos/asf/cassandra/blob/36ef643e/src/java/org/apache/cassandra/io/compress/CompressionParameters.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/compress/CompressionParameters.java b/src/java/org/apache/cassandra/io/compress/CompressionParameters.java
index 6448d84..0850185 100644
--- a/src/java/org/apache/cassandra/io/compress/CompressionParameters.java
+++ b/src/java/org/apache/cassandra/io/compress/CompressionParameters.java
@@ -203,7 +203,7 @@ public class CompressionParameters
/**
* Parse the chunk length (in KB) and returns it as bytes.
*/
- private static Integer parseChunkLength(String chLengthKB) throws ConfigurationException
+ public static Integer parseChunkLength(String chLengthKB) throws ConfigurationException
{
if (chLengthKB == null)
return null;
@@ -224,7 +224,7 @@ public class CompressionParameters
// chunkLength must be a power of 2 because we assume so when
// computing the chunk number from an uncompressed file offset (see
// CompressedRandomAccessReader.decompresseChunk())
- private void validate() throws ConfigurationException
+ public void validate() throws ConfigurationException
{
// if chunk length was not set (chunkLength == null), this is fine, default will be used
if (chunkLength != null)