Author: goffinet Date: Thu Jun 16 20:44:50 2011 New Revision: 1136662 URL: http://svn.apache.org/viewvc?rev=1136662&view=rev Log: Fixed the ability to set compaction strategy in cli using create column family command patch by alanliang; reviewed by goffinet for CASSANDRA-2778
Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java?rev=1136662&r1=1136661&r2=1136662&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Thu Jun 16 20:44:50 2011 @@ -1731,7 +1731,7 @@ public class CliClient sessionState.out.printf(" Compaction Strategy: %s%n", cf_def.compaction_strategy); if (!cf_def.compaction_strategy_options.isEmpty()) { - sessionState.out.printf(" Compaction Strategy Options: %s%n", cf_def.compaction_strategy); + sessionState.out.println(" Compaction Strategy Options:"); for (Map.Entry<String, String> e : cf_def.compaction_strategy_options.entrySet()) sessionState.out.printf(" %s: %s%n", e.getKey(), e.getValue()); } 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=1136662&r1=1136661&r2=1136662&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/config/CFMetaData.java Thu Jun 16 20:44:50 2011 @@ -705,6 +705,19 @@ public final class CFMetaData if (cf_def.isSetRow_cache_provider()) { newCFMD.rowCacheProvider(FBUtilities.newCacheProvider(cf_def.row_cache_provider)); } if (cf_def.isSetKey_alias()) { newCFMD.keyAlias(cf_def.key_alias); } if (cf_def.isSetKey_validation_class()) { newCFMD.keyValidator(TypeParser.parse(cf_def.key_validation_class)); } + if (cf_def.isSetCompaction_strategy()) + { + try + { + newCFMD.compactionStrategyClass((Class<? extends AbstractCompactionStrategy>)Class.forName(cf_def.compaction_strategy)); + } + catch (Exception e) + { + throw new ConfigurationException("Unable to set Compaction Strategy Class of " + cf_def.compaction_strategy, e); + } + } + if (cf_def.isSetCompaction_strategy_options()) + newCFMD.compactionStrategyOptions(new HashMap<String, String>(cf_def.compaction_strategy_options)); return newCFMD.comment(cf_def.comment) .rowCacheSize(cf_def.row_cache_size) @@ -817,6 +830,7 @@ public final class CFMetaData if (null != cf_def.compaction_strategy_options) { + compactionStrategyOptions = new HashMap<String, String>(); for (Map.Entry<CharSequence, CharSequence> e : cf_def.compaction_strategy_options.entrySet()) compactionStrategyOptions.put(e.getKey().toString(), e.getValue().toString()); } Modified: cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1136662&r1=1136661&r2=1136662&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Thu Jun 16 20:44:50 2011 @@ -195,7 +195,9 @@ public class ColumnFamilyStore implement rowCacheSaveInSeconds = new DefaultInteger(metadata.getRowCacheSavePeriodInSeconds()); if (!keyCacheSaveInSeconds.isModified()) keyCacheSaveInSeconds = new DefaultInteger(metadata.getKeyCacheSavePeriodInSeconds()); - + + compactionStrategy = metadata.createCompactionStrategyInstance(this); + updateCacheSizes(); scheduleCacheSaving(rowCacheSaveInSeconds.value(), keyCacheSaveInSeconds.value());