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