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 2009/10/22 19:45:41 UTC

svn commit: r828796 - in /incubator/cassandra/branches/cassandra-0.4: CHANGES.txt src/java/org/apache/cassandra/service/StorageService.java src/java/org/apache/cassandra/service/StorageServiceMBean.java src/java/org/apache/cassandra/tools/NodeProbe.java

Author: jbellis
Date: Thu Oct 22 17:45:41 2009
New Revision: 828796

URL: http://svn.apache.org/viewvc?rev=828796&view=rev
Log:
replace flush_binary with flush, affecting both binary and standard memtables.  patch by gdusbabek; reviewd by jbellis for CASSANDRA-505

Modified:
    incubator/cassandra/branches/cassandra-0.4/CHANGES.txt
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/service/StorageService.java
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/service/StorageServiceMBean.java
    incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/tools/NodeProbe.java

Modified: incubator/cassandra/branches/cassandra-0.4/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/CHANGES.txt?rev=828796&r1=828795&r2=828796&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/CHANGES.txt (original)
+++ incubator/cassandra/branches/cassandra-0.4/CHANGES.txt Thu Oct 22 17:45:41 2009
@@ -4,6 +4,8 @@
  * Fix using non-utf8-aware comparison as a sanity check.
    (CASSANDRA-493)
  * Improve default garbage collector options (CASSANDRA-504)
+ * Add "nodeprobe flush" (CASSANDRA-505)
+
 
 0.4.1
  * Fix FlushPeriod columnfamily configuration regression

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/service/StorageService.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/service/StorageService.java?rev=828796&r1=828795&r2=828796&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/service/StorageService.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/service/StorageService.java Thu Oct 22 17:45:41 2009
@@ -770,7 +770,13 @@
             logger_.debug("Cleared out all snapshot directories");
     }
 
-    public void forceTableFlushBinary(String tableName) throws IOException
+    /**
+     * Flush all memtables for a table and column families.
+     * @param tableName
+     * @param columnFamilies
+     * @throws IOException
+     */
+    public void forceTableFlush(String tableName, String... columnFamilies) throws IOException
     {
         if (DatabaseDescriptor.getTable(tableName) == null)
         {
@@ -778,16 +784,33 @@
         }
 
         Table table = Table.open(tableName);
-        Set<String> columnFamilies = table.getColumnFamilies();
+        Set<String> positiveColumnFamilies = table.getColumnFamilies();
+
+        // no columnFamilies means flush'em all.
+        if (columnFamilies == null || columnFamilies.length == 0)
+        {
+            columnFamilies = positiveColumnFamilies.toArray(new String[positiveColumnFamilies.size()]);
+        }
+
         for (String columnFamily : columnFamilies)
         {
-            ColumnFamilyStore cfStore = table.getColumnFamilyStore(columnFamily);
-            logger_.debug("Forcing flush on keyspace " + tableName + " on CF " + columnFamily);
-            cfStore.forceFlushBinary();
+
+            if (positiveColumnFamilies.contains(columnFamily))
+            {
+                ColumnFamilyStore cfStore = table.getColumnFamilyStore(columnFamily);
+                logger_.debug("Forcing binary flush on keyspace " + tableName + ", CF " + columnFamily);
+                cfStore.forceFlushBinary();
+                logger_.debug("Forcing flush on keyspace " + tableName + ", CF " + columnFamily);
+                cfStore.forceFlush();
+            }
+            else
+            {
+                // this means there was a cf passed in that is not recognized in the keyspace. report it and continue.
+                logger_.warn(String.format("Invalid column family specified: %s. Proceeding with others.", columnFamily));
+            }
         }
     }
 
-
     /* End of MBean interface methods */
     
     /**

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/service/StorageServiceMBean.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/service/StorageServiceMBean.java?rev=828796&r1=828795&r2=828796&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/service/StorageServiceMBean.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/service/StorageServiceMBean.java Thu Oct 22 17:45:41 2009
@@ -86,11 +86,13 @@
     public void clearSnapshot() throws IOException;
 
     /**
-     * Flush all binary memtables for a table
+     * Flush all memtables for the given column families, or all columnfamilies for the given table
+     * if none are explicitly listed.
      * @param tableName
+     * @param columnFamilies
      * @throws IOException
      */
-    public void forceTableFlushBinary(String tableName) throws IOException;
+    public void forceTableFlush(String tableName, String... columnFamilies) throws IOException;
 
     /** set the logging level at runtime */
     public void setLog4jLevel(String classQualifier, String level);

Modified: incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/tools/NodeProbe.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/tools/NodeProbe.java?rev=828796&r1=828795&r2=828796&view=diff
==============================================================================
--- incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/tools/NodeProbe.java (original)
+++ incubator/cassandra/branches/cassandra-0.4/src/java/org/apache/cassandra/tools/NodeProbe.java Thu Oct 22 17:45:41 2009
@@ -260,11 +260,11 @@
     }
 
     /**
-     * Trigger a binary flush on CFs of a table.
+     * Trigger a flush of the given CFs
      */
-    public void forceTableFlushBinary(String tableName) throws IOException
+    public void forceTableFlush(String tableName, String... columnFamilies) throws IOException
     {
-        ssProxy.forceTableFlushBinary(tableName);
+        ssProxy.forceTableFlush(tableName, columnFamilies);
     }
 
 
@@ -529,7 +529,7 @@
     {
         HelpFormatter hf = new HelpFormatter();
         String header = String.format(
-                "%nAvailable commands: ring, cluster, info, cleanup, compact, cfstats, snapshot [name], clearsnapshot, bootstrap, tpstats, flush_binary");
+                "%nAvailable commands: ring, cluster, info, cleanup, compact, cfstats, snapshot [name], clearsnapshot, bootstrap, tpstats, flush");
         String usage = String.format("java %s -host <arg> <command>%n", NodeProbe.class.getName());
         hf.printHelp(usage, "", options, header);
     }
@@ -621,7 +621,7 @@
         {
             probe.printThreadPoolStats(System.out);
         }
-        else if (cmdName.equals("flush_binary"))
+        else if (cmdName.equals("flush"))
         {
             if (probe.getArgs().length < 2)
             {
@@ -629,7 +629,13 @@
                 NodeProbe.printUsage();
                 System.exit(1);
             }
-            probe.forceTableFlushBinary(probe.getArgs()[1]);
+
+            String[] columnFamilies = new String[probe.getArgs().length - 2];
+            for (int i = 0; i < columnFamilies.length; i++)
+            {
+                columnFamilies[i] = probe.getArgs()[i + 2];
+            }   
+            probe.forceTableFlush(probe.getArgs()[1], columnFamilies);
         }
         else
         {