You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2015/07/29 17:12:41 UTC

[1/2] cassandra git commit: Fix handling of enable/disable autocompaction.

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.2 a96b207c3 -> 325aeb76b


Fix handling of enable/disable autocompaction.

Patch by marcuse; reviewed by Jeremiah Jordan for CASSANDRA-9899


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/dce303bc
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/dce303bc
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/dce303bc

Branch: refs/heads/cassandra-2.2
Commit: dce303bcb5748d302448769177a245a30ec3cc19
Parents: 7395207
Author: Marcus Eriksson <ma...@apache.org>
Authored: Mon Jul 27 09:31:08 2015 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Wed Jul 29 15:58:21 2015 +0200

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../compaction/AbstractCompactionStrategy.java  |  2 +-
 .../DateTieredCompactionStrategy.java           |  5 +---
 .../compaction/LeveledCompactionStrategy.java   |  2 --
 .../SizeTieredCompactionStrategy.java           |  6 ----
 .../compaction/WrappingCompactionStrategy.java  | 30 +++++++++++++++++++-
 6 files changed, 32 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dce303bc/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index c4bb21c..4ef77ed 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.9
+ * Fix handling of enable/disable autocompaction (CASSANDRA-9899)
  * Commit log segment recycling is disabled by default (CASSANDRA-9896)
  * Add consistency level to tracing ouput (CASSANDRA-9827)
  * Fix MarshalException when upgrading superColumn family (CASSANDRA-9582)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dce303bc/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
index 9eac2d0..73cda77 100644
--- a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
@@ -60,7 +60,7 @@ public abstract class AbstractCompactionStrategy
     protected static final String UNCHECKED_TOMBSTONE_COMPACTION_OPTION = "unchecked_tombstone_compaction";
     protected static final String COMPACTION_ENABLED = "enabled";
 
-    public final Map<String, String> options;
+    protected Map<String, String> options;
 
     protected final ColumnFamilyStore cfs;
     protected float tombstoneThreshold;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dce303bc/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java
index 15287bd..dec0cef 100644
--- a/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java
@@ -57,9 +57,6 @@ public class DateTieredCompactionStrategy extends AbstractCompactionStrategy
     @Override
     public synchronized AbstractCompactionTask getNextBackgroundTask(int gcBefore)
     {
-        if (!isEnabled())
-            return null;
-
         while (true)
         {
             List<SSTableReader> latestBucket = getNextBackgroundSSTables(gcBefore);
@@ -79,7 +76,7 @@ public class DateTieredCompactionStrategy extends AbstractCompactionStrategy
      */
     private List<SSTableReader> getNextBackgroundSSTables(final int gcBefore)
     {
-        if (!isEnabled() || cfs.getSSTables().isEmpty())
+        if (cfs.getSSTables().isEmpty())
             return Collections.emptyList();
 
         Set<SSTableReader> uncompacting = Sets.intersection(sstables, cfs.getUncompactingSSTables());

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dce303bc/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
index f9e5d16..8afe6b6 100644
--- a/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
@@ -87,8 +87,6 @@ public class LeveledCompactionStrategy extends AbstractCompactionStrategy
      */
     public synchronized AbstractCompactionTask getNextBackgroundTask(int gcBefore)
     {
-        if (!isEnabled())
-            return null;
         Collection<AbstractCompactionTask> tasks = getMaximalTask(gcBefore);
         if (tasks == null || tasks.size() == 0)
             return null;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dce303bc/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
index 93484e8..1f4acdb 100644
--- a/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
@@ -75,9 +75,6 @@ public class SizeTieredCompactionStrategy extends AbstractCompactionStrategy
 
     private List<SSTableReader> getNextBackgroundSSTables(final int gcBefore)
     {
-        if (!isEnabled())
-            return Collections.emptyList();
-
         // make local copies so they can't be changed out from under us mid-method
         int minThreshold = cfs.getMinimumCompactionThreshold();
         int maxThreshold = cfs.getMaximumCompactionThreshold();
@@ -177,9 +174,6 @@ public class SizeTieredCompactionStrategy extends AbstractCompactionStrategy
 
     public synchronized AbstractCompactionTask getNextBackgroundTask(int gcBefore)
     {
-        if (!isEnabled())
-            return null;
-
         while (true)
         {
             List<SSTableReader> hottestBucket = getNextBackgroundSSTables(gcBefore);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dce303bc/src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java
index 2f8bd7c..e01b4c6 100644
--- a/src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.concurrent.Callable;
 
+import com.google.common.collect.ImmutableMap;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -150,18 +151,23 @@ public final class WrappingCompactionStrategy extends AbstractCompactionStrategy
             && repaired.options.equals(metadata.compactionStrategyOptions)
             && unrepaired.options.equals(metadata.compactionStrategyOptions))
             return;
-
         reloadCompactionStrategy(metadata);
     }
 
     public synchronized void reloadCompactionStrategy(CFMetaData metadata)
     {
+        boolean disabledWithJMX = !isEnabled() && shouldBeEnabled();
         if (repaired != null)
             repaired.shutdown();
         if (unrepaired != null)
             unrepaired.shutdown();
         repaired = metadata.createCompactionStrategyInstance(cfs);
         unrepaired = metadata.createCompactionStrategyInstance(cfs);
+        options = ImmutableMap.copyOf(metadata.compactionStrategyOptions);
+        if (disabledWithJMX || !shouldBeEnabled())
+            disable();
+        else
+            enable();
         startup();
     }
 
@@ -344,6 +350,28 @@ public final class WrappingCompactionStrategy extends AbstractCompactionStrategy
     }
 
     @Override
+    public void enable()
+    {
+        if (repaired != null)
+            repaired.enable();
+        if (unrepaired != null)
+            unrepaired.enable();
+        // enable this last to make sure the strategies are ready to get calls.
+        super.enable();
+    }
+
+    @Override
+    public void disable()
+    {
+        // disable this first avoid asking disabled strategies for compaction tasks
+        super.disable();
+        if (repaired != null)
+            repaired.disable();
+        if (unrepaired != null)
+            unrepaired.disable();
+    }
+
+    @Override
     public synchronized ScannerList getScanners(Collection<SSTableReader> sstables, Range<Token> range)
     {
         List<SSTableReader> repairedSSTables = new ArrayList<>();


[2/2] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

Posted by ma...@apache.org.
Merge branch 'cassandra-2.1' into cassandra-2.2

Conflicts:
	CHANGES.txt
	src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
	src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/325aeb76
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/325aeb76
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/325aeb76

Branch: refs/heads/cassandra-2.2
Commit: 325aeb76b9e94b4b108e5608871e4b096f7d8f1c
Parents: a96b207 dce303b
Author: Marcus Eriksson <ma...@apache.org>
Authored: Wed Jul 29 16:05:05 2015 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Wed Jul 29 16:05:05 2015 +0200

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../compaction/AbstractCompactionStrategy.java  |  2 +-
 .../DateTieredCompactionStrategy.java           |  5 +---
 .../compaction/LeveledCompactionStrategy.java   |  3 --
 .../SizeTieredCompactionStrategy.java           |  6 ----
 .../compaction/WrappingCompactionStrategy.java  | 30 +++++++++++++++++++-
 6 files changed, 32 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/325aeb76/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 4717fca,4ef77ed..ec12cb8
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,19 -1,7 +1,20 @@@
 -2.1.9
 +2.2.1
 + * UDF / UDA execution time in trace (CASSANDRA-9723)
 + * Remove repair snapshot leftover on startup (CASSANDRA-7357)
 + * Use random nodes for batch log when only 2 racks (CASSANDRA-8735)
 +Merged from 2.1:
+  * Fix handling of enable/disable autocompaction (CASSANDRA-9899)
 - * Commit log segment recycling is disabled by default (CASSANDRA-9896)
   * Add consistency level to tracing ouput (CASSANDRA-9827)
 +Merged from 2.0:
 + * Log when messages are dropped due to cross_node_timeout (CASSANDRA-9793)
 + * Don't track hotness when opening from snapshot for validation (CASSANDRA-9382)
 +
 +2.2.0
 + * Fix cqlsh copy methods and other windows specific issues (CASSANDRA-9795) 
 + * Don't wrap byte arrays in SequentialWriter (CASSANDRA-9797)
 + * sum() and avg() functions missing for smallint and tinyint types (CASSANDRA-9671)
 + * Revert CASSANDRA-9542 (allow native functions in UDA) (CASSANDRA-9771)
 +Merged from 2.1:
   * Fix MarshalException when upgrading superColumn family (CASSANDRA-9582)
   * Fix broken logging for "empty" flushes in Memtable (CASSANDRA-9837)
   * Handle corrupt files on startup (CASSANDRA-9686)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/325aeb76/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/325aeb76/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java
index 43f998a,dec0cef..0d06f67
--- a/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java
@@@ -56,12 -55,8 +56,9 @@@ public class DateTieredCompactionStrate
      }
  
      @Override
 +    @SuppressWarnings("resource")
      public synchronized AbstractCompactionTask getNextBackgroundTask(int gcBefore)
      {
-         if (!isEnabled())
-             return null;
- 
          while (true)
          {
              List<SSTableReader> latestBucket = getNextBackgroundSSTables(gcBefore);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/325aeb76/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
index 9eb58ff,8afe6b6..9a88164
--- a/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/LeveledCompactionStrategy.java
@@@ -88,12 -85,16 +88,9 @@@ public class LeveledCompactionStrategy 
       * the only difference between background and maximal in LCS is that maximal is still allowed
       * (by explicit user request) even when compaction is disabled.
       */
 +    @SuppressWarnings("resource")
      public synchronized AbstractCompactionTask getNextBackgroundTask(int gcBefore)
      {
-         if (!isEnabled())
 -        Collection<AbstractCompactionTask> tasks = getMaximalTask(gcBefore);
 -        if (tasks == null || tasks.size() == 0)
--            return null;
 -        return tasks.iterator().next();
 -    }
--
 -    public Collection<AbstractCompactionTask> getMaximalTask(int gcBefore)
 -    {
          while (true)
          {
              OperationType op;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/325aeb76/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
index 74a9757,1f4acdb..4ba2378
--- a/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
@@@ -175,12 -172,8 +172,9 @@@ public class SizeTieredCompactionStrate
          return sstr.getReadMeter() == null ? 0.0 : sstr.getReadMeter().twoHourRate() / sstr.estimatedKeys();
      }
  
 +    @SuppressWarnings("resource")
      public synchronized AbstractCompactionTask getNextBackgroundTask(int gcBefore)
      {
-         if (!isEnabled())
-             return null;
- 
          while (true)
          {
              List<SSTableReader> hottestBucket = getNextBackgroundSSTables(gcBefore);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/325aeb76/src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java
index adda0c9,e01b4c6..ffe65d7
--- a/src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java
@@@ -344,7 -350,28 +350,29 @@@ public final class WrappingCompactionSt
      }
  
      @Override
+     public void enable()
+     {
+         if (repaired != null)
+             repaired.enable();
+         if (unrepaired != null)
+             unrepaired.enable();
+         // enable this last to make sure the strategies are ready to get calls.
+         super.enable();
+     }
+ 
+     @Override
+     public void disable()
+     {
+         // disable this first avoid asking disabled strategies for compaction tasks
+         super.disable();
+         if (repaired != null)
+             repaired.disable();
+         if (unrepaired != null)
+             unrepaired.disable();
+     }
+ 
+     @Override
 +    @SuppressWarnings("resource")
      public synchronized ScannerList getScanners(Collection<SSTableReader> sstables, Range<Token> range)
      {
          List<SSTableReader> repairedSSTables = new ArrayList<>();