Author: jbellis Date: Tue Sep 13 04:00:57 2011 New Revision: 1170027 URL: http://svn.apache.org/viewvc?rev=1170027&view=rev Log: merge from 1.0
Modified: cassandra/trunk/ (props changed) cassandra/trunk/CHANGES.txt cassandra/trunk/contrib/ (props changed) cassandra/trunk/doc/cql/CQL.textile cassandra/trunk/interface/cassandra.thrift cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java (props changed) cassandra/trunk/src/java/org/apache/cassandra/cache/SerializingCacheProvider.java cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java cassandra/trunk/src/resources/org/apache/cassandra/cli/CliHelp.yaml Propchange: cassandra/trunk/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Sep 13 04:00:57 2011 @@ -4,8 +4,8 @@ /cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1166782,1166809,1169823 /cassandra/branches/cassandra-0.8.0:1125021-1130369 /cassandra/branches/cassandra-0.8.1:1101014-1125018 -/cassandra/branches/cassandra-1.0:1167085-1169963 -/cassandra/branches/cassandra-1.0.0:1167104-1167229,1167232-1169874 +/cassandra/branches/cassandra-1.0:1167085-1170026 +/cassandra/branches/cassandra-1.0.0:1167104-1167229,1167232-1170025 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1:1102511-1125020 /incubator/cassandra/branches/cassandra-0.3:774578-796573 Modified: cassandra/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1170027&r1=1170026&r2=1170027&view=diff ============================================================================== --- cassandra/trunk/CHANGES.txt (original) +++ cassandra/trunk/CHANGES.txt Tue Sep 13 04:00:57 2011 @@ -74,6 +74,8 @@ * Arena-based allocation for memtables (CASSANDRA-2252, 3162, 3163, 3168) * Default RR chance to 0.1 (CASSANDRA-3169) * Add RowLevel support to secondary index API (CASSANDRA-3147) + * Make SerializingCacheProvider the default if JNA is available (CASSANDRA-3183) + * Fix backwards compatibilty for CQL memtable properties (CASSANDRA-3190) 0.8.6 * avoid trying to watch cassandra-topology.properties when loaded from jar Propchange: cassandra/trunk/contrib/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Sep 13 04:00:57 2011 @@ -4,8 +4,8 @@ /cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1166782,1166809,1169823 /cassandra/branches/cassandra-0.8.0/contrib:1125021-1130369 /cassandra/branches/cassandra-0.8.1/contrib:1101014-1125018 -/cassandra/branches/cassandra-1.0/contrib:1167085-1169963 -/cassandra/branches/cassandra-1.0.0/contrib:1167104-1167229,1167232-1169874 +/cassandra/branches/cassandra-1.0/contrib:1167085-1170026 +/cassandra/branches/cassandra-1.0.0/contrib:1167104-1167229,1167232-1170025 /cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1/contrib:1102511-1125020 /incubator/cassandra/branches/cassandra-0.3/contrib:774578-796573 Modified: cassandra/trunk/doc/cql/CQL.textile URL: http://svn.apache.org/viewvc/cassandra/trunk/doc/cql/CQL.textile?rev=1170027&r1=1170026&r2=1170027&view=diff ============================================================================== --- cassandra/trunk/doc/cql/CQL.textile (original) +++ cassandra/trunk/doc/cql/CQL.textile Tue Sep 13 04:00:57 2011 @@ -292,6 +292,7 @@ A number of optional keyword arguments c |_. keyword|_. default|_. description| |comparator|text|Determines sorting and validation of column names. Valid values are identical to the types listed in "Specifying Column Type":#columntypes above.| |comment|none|A free-form, human-readable comment.| +|row_cache_provider|SerializingCacheProvider if JNA is present, otherwise ConcurrentHashMapCacheProvider|A factory for the cache with which to back the row cache.| |row_cache_size|0|Number of rows whose entire contents to cache in memory.| |key_cache_size|200000|Number of keys per SSTable whose locations are kept in memory in "mostly LRU" order.| |read_repair_chance|1.0|The probability with which read repairs should be invoked on non-quorum reads.| @@ -301,9 +302,6 @@ A number of optional keyword arguments c |max_compaction_threshold|32|Maximum number of SSTables allowed before a minor compaction is forced.| |row_cache_save_period_in_seconds|0|Number of seconds between saving row caches.| |key_cache_save_period_in_seconds|14400|Number of seconds between saving key caches.| -|memtable_flush_after_mins|60|Maximum time to leave a dirty table unflushed.| -|memtable_throughput_in_mb|dynamic|Maximum size of the memtable before it is flushed.| -|memtable_operations_in_millions|dynamic|Number of operations in millions before the memtable is flushed.| |replicate_on_write|false| | h2. CREATE INDEX Modified: cassandra/trunk/interface/cassandra.thrift URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/cassandra.thrift?rev=1170027&r1=1170026&r2=1170027&view=diff ============================================================================== --- cassandra/trunk/interface/cassandra.thrift (original) +++ cassandra/trunk/interface/cassandra.thrift Tue Sep 13 04:00:57 2011 @@ -399,7 +399,7 @@ struct CfDef { 24: optional bool replicate_on_write, 25: optional double merge_shards_chance, 26: optional string key_validation_class, - 27: optional string row_cache_provider="org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider", + 27: optional string row_cache_provider, 28: optional binary key_alias, 29: optional string compaction_strategy, 30: optional map<string,string> compaction_strategy_options, Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Sep 13 04:00:57 2011 @@ -4,8 +4,8 @@ /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1166782,1166809,1169823 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1125021-1130369 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1101014-1125018 -/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167085-1169963 -/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167104-1167229,1167232-1169874 +/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167085-1170026 +/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167104-1167229,1167232-1170025 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1102511-1125020 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573 Modified: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java?rev=1170027&r1=1170026&r2=1170027&view=diff ============================================================================== --- cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java (original) +++ cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/CfDef.java Tue Sep 13 04:00:57 2011 @@ -322,8 +322,6 @@ public class CfDef implements org.apache this.read_repair_chance = 1; - this.row_cache_provider = "org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider"; - } public CfDef( @@ -465,8 +463,7 @@ public class CfDef implements org.apache setMerge_shards_chanceIsSet(false); this.merge_shards_chance = 0.0; this.key_validation_class = null; - this.row_cache_provider = "org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider"; - + this.row_cache_provider = null; this.key_alias = null; this.compaction_strategy = null; this.compaction_strategy_options = null; Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Sep 13 04:00:57 2011 @@ -4,8 +4,8 @@ /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1166782,1166809,1169823 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1125021-1130369 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1101014-1125018 -/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167085-1169963 -/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167104-1167229,1167232-1169874 +/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167085-1170026 +/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167104-1167229,1167232-1170025 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1102511-1125020 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Sep 13 04:00:57 2011 @@ -4,8 +4,8 @@ /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1166782,1166809,1169823 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1125021-1130369 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1101014-1125018 -/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167085-1169963 -/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167104-1167229,1167232-1169874 +/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167085-1170026 +/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167104-1167229,1167232-1170025 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1102511-1125020 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Sep 13 04:00:57 2011 @@ -4,8 +4,8 @@ /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1166782,1166809,1169823 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1125021-1130369 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1101014-1125018 -/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167085-1169963 -/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167104-1167229,1167232-1169874 +/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167085-1170026 +/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167104-1167229,1167232-1170025 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1102511-1125020 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Sep 13 04:00:57 2011 @@ -4,8 +4,8 @@ /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1166782,1166809,1169823 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1125021-1130369 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1101014-1125018 -/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167085-1169963 -/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167104-1167229,1167232-1169874 +/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167085-1170026 +/cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167104-1167229,1167232-1170025 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1102511-1125020 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198 Modified: cassandra/trunk/src/java/org/apache/cassandra/cache/SerializingCacheProvider.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cache/SerializingCacheProvider.java?rev=1170027&r1=1170026&r2=1170027&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/cache/SerializingCacheProvider.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/cache/SerializingCacheProvider.java Tue Sep 13 04:00:57 2011 @@ -20,7 +20,6 @@ package org.apache.cassandra.cache; * */ - import org.apache.cassandra.config.ConfigurationException; import org.apache.cassandra.db.ColumnFamily; import org.apache.cassandra.db.DecoratedKey; @@ -37,7 +36,7 @@ public class SerializingCacheProvider im } catch (NoClassDefFoundError e) { - throw new ConfigurationException("Cannot intialize SerializationCache without JNA in the class path"); + throw new ConfigurationException("Cannot initialize SerializationCache without JNA in the class path"); } } Modified: cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java?rev=1170027&r1=1170026&r2=1170027&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java Tue Sep 13 04:00:57 2011 @@ -37,6 +37,9 @@ import org.apache.cassandra.db.migration import org.apache.cassandra.io.IColumnSerializer; import org.apache.cassandra.io.compress.CompressionParameters; import org.apache.cassandra.thrift.InvalidRequestException; +import org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider; +import org.apache.cassandra.cache.SerializingCacheProvider; +import org.apache.cassandra.utils.CLibrary; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.FBUtilities; @@ -64,7 +67,7 @@ public final class CFMetaData public final static int DEFAULT_MIN_COMPACTION_THRESHOLD = 4; public final static int DEFAULT_MAX_COMPACTION_THRESHOLD = 32; public final static double DEFAULT_MERGE_SHARDS_CHANCE = 0.1; - public final static String DEFAULT_ROW_CACHE_PROVIDER = "org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider"; + public final static IRowCacheProvider DEFAULT_ROW_CACHE_PROVIDER = initDefaultRowCacheProvider(); public final static String DEFAULT_COMPACTION_STRATEGY_CLASS = "SizeTieredCompactionStrategy"; public final static ByteBuffer DEFAULT_KEY_NAME = ByteBufferUtil.bytes("KEY"); @@ -75,6 +78,18 @@ public final class CFMetaData public static final CFMetaData IndexCf = newSystemMetadata(SystemTable.INDEX_CF, 5, "indexes that have been completed", UTF8Type.instance, null); public static final CFMetaData NodeIdCf = newSystemMetadata(SystemTable.NODE_ID_CF, 6, "nodeId and their metadata", TimeUUIDType.instance, null); + private static IRowCacheProvider initDefaultRowCacheProvider() + { + try + { + return new SerializingCacheProvider(); + } + catch (ConfigurationException e) + { + return new ConcurrentLinkedHashCacheProvider(); + } + } + //REQUIRED public final Integer cfId; // internal id, never exposed to user public final String ksName; // name of keyspace @@ -171,14 +186,7 @@ public final class CFMetaData minCompactionThreshold = DEFAULT_MIN_COMPACTION_THRESHOLD; maxCompactionThreshold = DEFAULT_MAX_COMPACTION_THRESHOLD; mergeShardsChance = DEFAULT_MERGE_SHARDS_CHANCE; - try - { - rowCacheProvider = FBUtilities.newCacheProvider(DEFAULT_ROW_CACHE_PROVIDER); - } - catch (ConfigurationException e) - { - throw new AssertionError(e); // the default provider should not error out - } + rowCacheProvider = DEFAULT_ROW_CACHE_PROVIDER; // Defaults strange or simple enough to not need a DEFAULT_T for defaultValidator = BytesType.instance; @@ -368,7 +376,10 @@ public final class CFMetaData } catch (ConfigurationException e) { - throw new RuntimeException(e); + // default was already set upon newCFMD init + logger.warn("Unable to instantiate cache provider {}; using default {} instead", + cf.row_cache_provider, + DEFAULT_ROW_CACHE_PROVIDER); } } if (cf.key_alias != null) { newCFMD.keyAlias(cf.key_alias); } @@ -609,8 +620,6 @@ public final class CFMetaData cf_def.setRow_cache_keys_to_save(CFMetaData.DEFAULT_ROW_CACHE_KEYS_TO_SAVE); if (!cf_def.isSetMerge_shards_chance()) cf_def.setMerge_shards_chance(CFMetaData.DEFAULT_MERGE_SHARDS_CHANCE); - if (!cf_def.isSetRow_cache_provider()) - cf_def.setRow_cache_provider(CFMetaData.DEFAULT_ROW_CACHE_PROVIDER); if (null == cf_def.compaction_strategy) cf_def.compaction_strategy = DEFAULT_COMPACTION_STRATEGY_CLASS; if (null == cf_def.compaction_strategy_options) @@ -836,6 +845,7 @@ public final class CFMetaData def.setRow_cache_save_period_in_seconds(rowCacheSavePeriodInSeconds); def.setKey_cache_save_period_in_seconds(keyCacheSavePeriodInSeconds); def.setRow_cache_keys_to_save(rowCacheKeysToSave); + def.setRow_cache_provider(rowCacheProvider.getClass().getName()); def.setMerge_shards_chance(mergeShardsChance); def.setKey_alias(getKeyName()); List<org.apache.cassandra.thrift.ColumnDef> column_meta = new ArrayList<org.apache.cassandra.thrift.ColumnDef>(column_metadata.size()); @@ -962,6 +972,7 @@ public final class CFMetaData .append("rowCacheSavePeriodInSeconds", rowCacheSavePeriodInSeconds) .append("keyCacheSavePeriodInSeconds", keyCacheSavePeriodInSeconds) .append("rowCacheKeysToSave", rowCacheKeysToSave) + .append("rowCacheProvider", rowCacheProvider) .append("mergeShardsChance", mergeShardsChance) .append("keyAlias", keyAlias) .append("column_metadata", column_metadata) Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java?rev=1170027&r1=1170026&r2=1170027&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java Tue Sep 13 04:00:57 2011 @@ -28,6 +28,11 @@ import java.util.List; import java.util.Map; import java.util.Set; +import com.google.common.collect.Sets; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.config.ConfigurationException; @@ -41,6 +46,8 @@ import org.apache.cassandra.utils.FBUtil /** A <code>CREATE COLUMNFAMILY</code> parsed from a CQL query statement. */ public class CreateColumnFamilyStatement { + private static Logger logger = LoggerFactory.getLogger(CreateColumnFamilyStatement.class); + private static final String KW_COMPARATOR = "comparator"; private static final String KW_COMMENT = "comment"; private static final String KW_ROWCACHESIZE = "row_cache_size"; @@ -52,14 +59,13 @@ public class CreateColumnFamilyStatement private static final String KW_MAXCOMPACTIONTHRESHOLD = "max_compaction_threshold"; private static final String KW_ROWCACHESAVEPERIODSECS = "row_cache_save_period_in_seconds"; private static final String KW_KEYCACHESAVEPERIODSECS = "key_cache_save_period_in_seconds"; - private static final String KW_MEMTABLESIZEINMB = "memtable_throughput_in_mb"; - private static final String KW_MEMTABLEOPSINMILLIONS = "memtable_operations_in_millions"; private static final String KW_REPLICATEONWRITE = "replicate_on_write"; private static final String KW_ROW_CACHE_PROVIDER = "row_cache_provider"; // Maps CQL short names to the respective Cassandra comparator/validator class names public static final Map<String, String> comparators = new HashMap<String, String>(); private static final Set<String> keywords = new HashSet<String>(); + private static final Set<String> obsoleteKeywords = new HashSet<String>(); static { @@ -89,10 +95,12 @@ public class CreateColumnFamilyStatement keywords.add(KW_MAXCOMPACTIONTHRESHOLD); keywords.add(KW_ROWCACHESAVEPERIODSECS); keywords.add(KW_KEYCACHESAVEPERIODSECS); - keywords.add(KW_MEMTABLESIZEINMB); - keywords.add(KW_MEMTABLEOPSINMILLIONS); keywords.add(KW_REPLICATEONWRITE); keywords.add(KW_ROW_CACHE_PROVIDER); + + obsoleteKeywords.add("memtable_throughput_in_mb"); + obsoleteKeywords.add("memtable_operations_in_millions"); + obsoleteKeywords.add("memtable_flush_after_mins"); } private final String name; @@ -114,11 +122,10 @@ public class CreateColumnFamilyStatement throw new InvalidRequestException(String.format("\"%s\" is not a valid column family name", name)); // Catch the case where someone passed a kwarg that is not recognized. - Set<String> keywordsFound = new HashSet<String>(properties.keySet()); - keywordsFound.removeAll(keywords); - - for (String bogus : keywordsFound) + for (String bogus : Sets.difference(properties.keySet(), Sets.union(keywords, obsoleteKeywords))) throw new InvalidRequestException(bogus + " is not a valid keyword argument for CREATE COLUMNFAMILY"); + for (String obsolete : Sets.intersection(properties.keySet(), obsoleteKeywords)) + logger.warn("Ignoring obsolete property {}", obsolete); // Validate min/max compaction thresholds Integer minCompaction = getPropertyInt(KW_MINCOMPACTIONTHRESHOLD, null); @@ -148,17 +155,6 @@ public class CreateColumnFamilyStatement CFMetaData.DEFAULT_MIN_COMPACTION_THRESHOLD)); } - // Validate memtable settings - Integer memMb = getPropertyInt(KW_MEMTABLESIZEINMB, null); - Double memOps = getPropertyDouble(KW_MEMTABLEOPSINMILLIONS, null); - - if ((memMb != null) && (memMb <= 0)) - throw new InvalidRequestException(String.format("%s must be non-negative and greater than zero", - KW_MEMTABLESIZEINMB)); - if ((memOps != null) && (memOps <=0)) - throw new InvalidRequestException(String.format("%s must be non-negative and greater than zero", - KW_MEMTABLEOPSINMILLIONS)); - // Ensure that exactly one key has been specified. if (keyValidator.size() < 1) throw new InvalidRequestException("You must specify a PRIMARY KEY"); @@ -304,7 +300,7 @@ public class CreateColumnFamilyStatement .mergeShardsChance(0.0) .columnMetadata(getColumns(comparator)) .keyValidator(TypeParser.parse(comparators.get(getKeyType()))) - .rowCacheProvider(FBUtilities.newCacheProvider(getPropertyString(KW_ROW_CACHE_PROVIDER, CFMetaData.DEFAULT_ROW_CACHE_PROVIDER))) + .rowCacheProvider(FBUtilities.newCacheProvider(getPropertyString(KW_ROW_CACHE_PROVIDER, CFMetaData.DEFAULT_ROW_CACHE_PROVIDER.getClass().getName()))) .keyAlias(keyAlias); } catch (ConfigurationException e) Modified: cassandra/trunk/src/resources/org/apache/cassandra/cli/CliHelp.yaml URL: http://svn.apache.org/viewvc/cassandra/trunk/src/resources/org/apache/cassandra/cli/CliHelp.yaml?rev=1170027&r1=1170026&r2=1170027&view=diff ============================================================================== --- cassandra/trunk/src/resources/org/apache/cassandra/cli/CliHelp.yaml (original) +++ cassandra/trunk/src/resources/org/apache/cassandra/cli/CliHelp.yaml Tue Sep 13 04:00:57 2011 @@ -555,14 +555,13 @@ commands: It is also valid to specify the fully-qualified class name to a class that implements org.apache.cassandra.cache.IRowCacheProvider. - row_cache_provider defaults to ConcurrentLinkedHashCacheProvider, - but if you have JNA installed you should usually use - SerializingCacheProvider, which serialises the contents of the - row and stores it in native memory, i.e., off the JVM - Heap. Serialized rows take significantly less memory than - "live" rows in the JVM, so you can cache more rows in a given - memory footprint. And storing the cache off-heap means you - can use smaller heap sizes, reducing the impact of GC pauses. + row_cache_provider defaults to SerializingCacheProvider if you have JNA + enabled, otherwise ConcurrentLinkedHashCacheProvider. + SerializingCacheProvider serialises the contents of the row and stores + it in native memory, i.e., off the JVM Heap. Serialized rows take + significantly less memory than "live" rows in the JVM, so you can cache + more rows in a given memory footprint. And storing the cache off-heap + means you can use smaller heap sizes, reducing the impact of GC pauses. - compression: Use compression for SSTable data files.