Author: xedin
Date: Mon Dec 5 20:18:57 2011
New Revision: 1210606
URL: http://svn.apache.org/viewvc?rev=1210606&view=rev
Log:
validate compression parameters on add/update of the ColumnFamily
patch by Pavel Yaskevich; reviewed by Brandon Williams for CASSANDRA-3573
Modified:
cassandra/branches/cassandra-1.0/CHANGES.txt
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/CliMain.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/compress/CompressionParameters.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/compress/SnappyCompressor.java
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/thrift/ThriftValidation.java
Modified: cassandra/branches/cassandra-1.0/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/CHANGES.txt?rev=1210606&r1=1210605&r2=1210606&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/CHANGES.txt (original)
+++ cassandra/branches/cassandra-1.0/CHANGES.txt Mon Dec 5 20:18:57 2011
@@ -13,6 +13,7 @@
* Optimize componentsFor method for compaction and startup time
(CASSANDRA-3532)
* (CQL) Proper ColumnFamily metadata validation on CREATE COLUMNFAMILY
(CASSANDRA-3565)
+ * validate compression parameters on add/update of the ColumnFamily
(CASSANDRA-3573)
Merged from 0.8:
* use cannonical host for local node in nodetool info (CASSANDRA-3556)
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/CliMain.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/CliMain.java?rev=1210606&r1=1210605&r2=1210606&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/CliMain.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/cli/CliMain.java
Mon Dec 5 20:18:57 2011
@@ -223,7 +223,9 @@ public class CliMain
{
String errorTemplate = sessionState.inFileMode() ? "Line " +
lineNumber + " => " : "";
- String message = (e.getCause() == null) ? e.getMessage() :
e.getCause().getMessage();
+ Throwable exception = (e.getCause() == null) ? e : e.getCause();
+ String message = (exception instanceof InvalidRequestException) ?
((InvalidRequestException) exception).getWhy() : e.getMessage();
+
sessionState.err.println(errorTemplate + message);
if (!(e instanceof RuntimeException))
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/compress/CompressionParameters.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/compress/CompressionParameters.java?rev=1210606&r1=1210605&r2=1210606&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/compress/CompressionParameters.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/compress/CompressionParameters.java
Mon Dec 5 20:18:57 2011
@@ -116,7 +116,11 @@ public class CompressionParameters
}
catch (InvocationTargetException e)
{
- throw new ConfigurationException(compressorClass.getSimpleName() +
".create() throwed an error", e);
+ Throwable cause = e.getCause();
+ throw new ConfigurationException(String.format("%s.create() threw
an error: %s",
+ compressorClass.getSimpleName(),
+ cause == null ?
e.getClass().getName() + " " + e.getMessage() : cause.getClass().getName() + "
" + cause.getMessage()),
+ e);
}
catch (ExceptionInInitializerError e)
{
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/compress/SnappyCompressor.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/compress/SnappyCompressor.java?rev=1210606&r1=1210605&r2=1210606&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/compress/SnappyCompressor.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/compress/SnappyCompressor.java
Mon Dec 5 20:18:57 2011
@@ -19,7 +19,6 @@
package org.apache.cassandra.io.compress;
import java.io.IOException;
-import java.util.HashMap;
import java.util.Map;
import org.xerial.snappy.Snappy;
@@ -30,6 +29,10 @@ public class SnappyCompressor implements
public static SnappyCompressor create(Map<String, String>
compressionOptions)
{
+ // this would throw java.lang.NoClassDefFoundError if Snappy class
+ // wasn't found at runtime which should be processed by calling method
+ Snappy.getNativeLibraryVersion();
+
// no specific options supported so far
return instance;
}
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/thrift/ThriftValidation.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/thrift/ThriftValidation.java?rev=1210606&r1=1210605&r2=1210606&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/thrift/ThriftValidation.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/thrift/ThriftValidation.java
Mon Dec 5 20:18:57 2011
@@ -39,6 +39,7 @@ import org.apache.cassandra.dht.RandomPa
import org.apache.cassandra.dht.Token;
import org.apache.cassandra.locator.*;
import org.apache.cassandra.service.StorageService;
+import org.apache.cassandra.io.compress.CompressionParameters;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.FBUtilities;
@@ -653,6 +654,9 @@ public class ThriftValidation
}
}
validateMinMaxCompactionThresholds(cf_def);
+
+ // validates compression parameters
+ CompressionParameters.create(cf_def.compression_options);
}
catch (ConfigurationException e)
{