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)
         {


Reply via email to