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());
         


Reply via email to