You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2010/10/22 06:19:40 UTC

svn commit: r1026208 - /cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java

Author: jbellis
Date: Fri Oct 22 04:19:40 2010
New Revision: 1026208

URL: http://svn.apache.org/viewvc?rev=1026208&view=rev
Log:
add cache save periods, default validation class, and compaction threshold to what you can edit with the cli.  patch by jbellis

Modified:
    cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.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=1026208&r1=1026207&r2=1026208&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Fri Oct 22 04:19:40 2010
@@ -82,21 +82,45 @@ public class CliClient 
      * the <i>add column family</i> command requires a list of arguments, 
      *  this enum defines which arguments are valid.
      */
-    private enum AddColumnFamilyArgument {
+    private enum ColumnFamilyArgument
+    {
         COLUMN_TYPE,
         COMPARATOR,
         SUBCOMPARATOR,
         COMMENT,
         ROWS_CACHED,
-        PRELOAD_ROW_CACHE,
-        KEY_CACHE_SIZE,
+        ROW_CACHE_SAVE_PERIOD,
+        KEYS_CACHED,
+        KEY_CACHE_SAVE_PERIOD,
         READ_REPAIR_CHANCE,
-        GC_GRACE_SECONDS,
+        GC_GRACE,
         COLUMN_METADATA,
-        MEMTABLE_OPERATIONS_IN_MILLIONS,
-        MEMTABLE_THROUGHPUT_IN_MB,
-        MEMTABLE_FLUSH_AFTER_MINS
-    }
+        MEMTABLE_OPERATIONS,
+        MEMTABLE_THROUGHPUT,
+        MEMTABLE_FLUSH_AFTER,
+        DEFAULT_VALIDATION_CLASS,
+        MIN_COMPACTION_THRESHOLD,
+        MAX_COMPACTION_THRESHOLD,
+    }
+
+    private EnumMap<ColumnFamilyArgument, String> argumentExplanations = new EnumMap<ColumnFamilyArgument, String>(ColumnFamilyArgument.class)
+    {{
+        put(ColumnFamilyArgument.COLUMN_TYPE, "Super or Standard");
+        put(ColumnFamilyArgument.COMMENT, "Human-readable column family description. Any string is acceptable");
+        put(ColumnFamilyArgument.COMPARATOR, "The class used as a comparator when sorting column names.\n                  Valid options include: AsciiType, BytesType, LexicalUUIDType,\n                  LongType, TimeUUIDType, and UTF8Type");
+        put(ColumnFamilyArgument.SUBCOMPARATOR, "Comparator for sorting subcolumn names, for Super columns only");
+        put(ColumnFamilyArgument.MEMTABLE_OPERATIONS, "Flush memtables after this many operations");
+        put(ColumnFamilyArgument.MEMTABLE_THROUGHPUT, "... or after this many bytes have been written");
+        put(ColumnFamilyArgument.MEMTABLE_FLUSH_AFTER, "... or after this many seconds");
+        put(ColumnFamilyArgument.ROWS_CACHED, "Number or percentage of rows to cache");
+        put(ColumnFamilyArgument.ROW_CACHE_SAVE_PERIOD, "Period with which to persist the row cache, in seconds");
+        put(ColumnFamilyArgument.KEYS_CACHED, "Number or percentage of keys to cache");
+        put(ColumnFamilyArgument.KEY_CACHE_SAVE_PERIOD, "Period with which to persist the key cache, in seconds");
+        put(ColumnFamilyArgument.READ_REPAIR_CHANCE, "Probability (0.0-1.0) with which to perform read repairs on CL.ONE reads");
+        put(ColumnFamilyArgument.GC_GRACE, "Discard tombstones after this many seconds");
+        put(ColumnFamilyArgument.MIN_COMPACTION_THRESHOLD, "Avoid minor compactions of less than this number of sstable files");
+        put(ColumnFamilyArgument.MAX_COMPACTION_THRESHOLD, "Compact no more than this number of sstable files at once");
+    }};
 
     /*
      * the <i>add keyspace</i> command requires a list of arguments,
@@ -308,19 +332,8 @@ public class CliClient 
                 css_.out.println("Create a new column family with the specified values for the given set of");
                 css_.out.println("attributes. Note that you must be using a keyspace.\n");
                 css_.out.println("valid attributes are:");
-                css_.out.println("    - column_type: One of Super or Standard");
-                css_.out.println("    - comparator: The class used as a comparator when sorting column names.");
-                css_.out.println("                  Valid options include: AsciiType, BytesType, LexicalUUIDType,");
-                css_.out.println("                  LongType, TimeUUIDType, and UTF8Type");
-                css_.out.println("    - subcomparator: Name of comparator used for subcolumns (when");
-                css_.out.println("                     column_type=Super only). Valid options are identical to");
-                css_.out.println("                     comparator above.");
-                css_.out.println("    - comment: Human-readable column family description. Any string is valid.");
-                css_.out.println("    - rows_cached: Number of rows to cache");
-                css_.out.println("    - preload_row_cache: Set to true to automatically load the row cache");
-                css_.out.println("    - key_cache_size: Number of keys to cache");
-                css_.out.println("    - read_repair_chance: Valid values for this attribute are any number");
-                css_.out.println("                          between 0.0 and 1.0\n");
+                for (ColumnFamilyArgument argument : ColumnFamilyArgument.values())
+                    css_.out.printf("    - %s: %s\n", argument.toString().toLowerCase(), argumentExplanations.get(argument));
                 css_.out.println("    - column_metadata: Metadata which describes columns of column family.");
                 css_.out.println("        Supported format is [{ k:v, k:v, ... }, { ... }, ...]");
                 css_.out.println("        Valid attributes: column_name, validation_class (see comparator),");
@@ -341,12 +354,12 @@ public class CliClient 
                 css_.out.println("Update a column family with the specified values for the given set of");
                 css_.out.println("attributes. Note that you must be using a keyspace.\n");
                 css_.out.println("valid attributes are:");
-                css_.out.println("    - comment: Human-readable column family description. Any string is valid.");
-                css_.out.println("    - rows_cached: Number of rows to cache");
-                css_.out.println("    - preload_row_cache: Set to true to automatically load the row cache");
-                css_.out.println("    - key_cache_size: Number of keys to cache");
-                css_.out.println("    - read_repair_chance: Valid values for this attribute are any number");
-                css_.out.println("                          between 0.0 and 1.0\n");
+                for (ColumnFamilyArgument argument : ColumnFamilyArgument.values())
+                {
+                    if (argument == ColumnFamilyArgument.COMPARATOR || argument == ColumnFamilyArgument.SUBCOMPARATOR)
+                        continue;
+                    css_.out.printf("    - %s: %s\n", argument.toString().toLowerCase(), argumentExplanations.get(argument));
+                }
                 css_.out.println("    - column_metadata: Metadata which describes columns of column family.");
                 css_.out.println("        Supported format is [{ k:v, k:v, ... }, { ... }, ...]");
                 css_.out.println("        Valid attributes: column_name, validation_class (see comparator),");
@@ -1112,7 +1125,7 @@ public class CliClient 
         for (int i = 1; i < statement.getChildCount(); i += 2)
         {
             String currentArgument = statement.getChild(i).getText().toUpperCase();
-            AddColumnFamilyArgument mArgument = AddColumnFamilyArgument.valueOf(currentArgument);
+            ColumnFamilyArgument mArgument = ColumnFamilyArgument.valueOf(currentArgument);
             String mValue = statement.getChild(i + 1).getText();
 
             switch(mArgument)
@@ -1120,62 +1133,57 @@ public class CliClient 
             case COLUMN_TYPE:
                 cfDef.setColumn_type(CliUtils.unescapeSQLString(mValue));
                 break;
-
             case COMPARATOR:
                 cfDef.setComparator_type(CliUtils.unescapeSQLString(mValue));
                 break;
-
             case SUBCOMPARATOR:
                 cfDef.setSubcomparator_type(CliUtils.unescapeSQLString(mValue));
                 break;
-
             case COMMENT:
                 cfDef.setComment(CliUtils.unescapeSQLString(mValue));
                 break;
-
             case ROWS_CACHED:
                 cfDef.setRow_cache_size(Double.parseDouble(mValue));
                 break;
-
-            case PRELOAD_ROW_CACHE:
-                cfDef.setPreload_row_cache(Boolean.parseBoolean(CliUtils.unescapeSQLString(mValue)));
-                break;
-
-            case KEY_CACHE_SIZE:
+            case KEYS_CACHED:
                 cfDef.setKey_cache_size(Double.parseDouble(mValue));
                 break;
-
             case READ_REPAIR_CHANCE:
                 cfDef.setRead_repair_chance(Double.parseDouble(mValue));
                 break;
-
-            case GC_GRACE_SECONDS:
+            case GC_GRACE:
                 cfDef.setGc_grace_seconds(Integer.parseInt(mValue));
                 break;
-
             case COLUMN_METADATA:
                 Tree arrayOfMetaAttributes = statement.getChild(i + 1);
-
                 if (!arrayOfMetaAttributes.getText().equals("ARRAY"))
-                {
                     throw new RuntimeException("'column_metadata' format - [{ k:v, k:v, ..}, { ... }, ...]");
-                }
-
                 cfDef.setColumn_metadata(getCFColumnMetaFromTree(arrayOfMetaAttributes));
                 break;
-
-            case MEMTABLE_OPERATIONS_IN_MILLIONS:
+            case MEMTABLE_OPERATIONS:
                 cfDef.setMemtable_operations_in_millions(Double.parseDouble(mValue));
                 break;
-            
-            case MEMTABLE_FLUSH_AFTER_MINS:
+            case MEMTABLE_FLUSH_AFTER:
                 cfDef.setMemtable_flush_after_mins(Integer.parseInt(mValue));
                 break;
-                
-            case MEMTABLE_THROUGHPUT_IN_MB:
+            case MEMTABLE_THROUGHPUT:
                 cfDef.setMemtable_throughput_in_mb(Integer.parseInt(mValue));
                 break;
-                
+            case ROW_CACHE_SAVE_PERIOD:
+                cfDef.setRow_cache_save_period_in_seconds(Integer.parseInt(mValue));
+                break;
+            case KEY_CACHE_SAVE_PERIOD:
+                cfDef.setKey_cache_save_period_in_seconds(Integer.parseInt(mValue));
+                break;
+            case DEFAULT_VALIDATION_CLASS:
+                cfDef.setDefault_validation_class(mValue);
+                break;
+            case MIN_COMPACTION_THRESHOLD:
+                cfDef.setMin_compaction_threshold(Integer.parseInt(mValue));
+                break;
+            case MAX_COMPACTION_THRESHOLD:
+                cfDef.setMax_compaction_threshold(Integer.parseInt(mValue));
+                break;
             default:
                 //must match one of the above or we'd throw an exception at the valueOf statement above.
                 assert(false);