You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by go...@apache.org on 2009/10/07 23:47:38 UTC

svn commit: r822931 - in /incubator/cassandra/trunk/src/java/org/apache/cassandra: db/ColumnFamilyStore.java tools/NodeProbe.java

Author: goffinet
Date: Wed Oct  7 21:47:38 2009
New Revision: 822931

URL: http://svn.apache.org/viewvc?rev=822931&view=rev
Log:
Added the ability to set maxthreshold to zero in nodeprobe, and added a special case to CF.doCompaction to not run compaction when its disabled. patch by goffinet; reviewed by jbellis for CASSANDRA-465

Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
    incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=822931&r1=822930&r2=822931&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Wed Oct  7 21:47:38 2009
@@ -611,20 +611,27 @@
      */
     int doCompaction(int minThreshold, int maxThreshold) throws IOException
     {
-        logger_.debug("Checking to see if compaction of " + columnFamily_ + " would be useful");
         int filesCompacted = 0;
-        for (List<SSTableReader> sstables : getCompactionBuckets(ssTables_, 50L * 1024L * 1024L))
+        if (minThreshold > 0 && maxThreshold > 0)
         {
-            if (sstables.size() < minThreshold)
+            logger_.debug("Checking to see if compaction of " + columnFamily_ + " would be useful");
+            for (List<SSTableReader> sstables : getCompactionBuckets(ssTables_, 50L * 1024L * 1024L))
             {
-                continue;
+                if (sstables.size() < minThreshold)
+                {
+                    continue;
+                }
+                // if we have too many to compact all at once, compact older ones first -- this avoids
+                // re-compacting files we just created.
+                Collections.sort(sstables);
+                filesCompacted += doFileCompaction(sstables.subList(0, Math.min(sstables.size(), maxThreshold)));
             }
-            // if we have too many to compact all at once, compact older ones first -- this avoids
-            // re-compacting files we just created.
-            Collections.sort(sstables);
-            filesCompacted += doFileCompaction(sstables.subList(0, Math.min(sstables.size(), maxThreshold)));
+            logger_.debug(filesCompacted + " files compacted");
+        }
+        else
+        {
+            logger_.debug("Compaction is currently disabled.");
         }
-        logger_.debug(filesCompacted + " files compacted");
         return filesCompacted;
     }
 

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java?rev=822931&r1=822930&r2=822931&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java Wed Oct  7 21:47:38 2009
@@ -429,7 +429,7 @@
     public void setCompactionThreshold(int minimumCompactionThreshold, int maximumCompactionThreshold)
     {
         mcmProxy.setMinimumCompactionThreshold(minimumCompactionThreshold);
-        if (maximumCompactionThreshold > 0)
+        if (maximumCompactionThreshold >= 0)
         {
              mcmProxy.setMaximumCompactionThreshold(maximumCompactionThreshold);
         }
@@ -563,11 +563,25 @@
                 System.exit(1);
             }
             int minthreshold = Integer.parseInt(arguments[1]);
-            int maxthreshold = 0;
+            int maxthreshold = CompactionManager.instance().getMaximumCompactionThreshold();
             if (arguments.length > 2)
             {
                 maxthreshold = Integer.parseInt(arguments[2]);
             }
+
+            if (minthreshold > maxthreshold)
+            {
+                System.err.println("Min threshold can't be greater than Max threshold");
+                NodeProbe.printUsage();
+                System.exit(1);
+            }
+
+            if (minthreshold < 2 && maxthreshold != 0)
+            {
+                System.err.println("Min threshold must be at least 2");
+                NodeProbe.printUsage();
+                System.exit(1);
+            }
             probe.setCompactionThreshold(minthreshold, maxthreshold);
         }
         else