You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by yu...@apache.org on 2016/05/31 20:57:02 UTC

[1/3] cassandra git commit: Fix race in CompactionStrategyManager's pause/resume

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.7 3b72c4202 -> f40c632e4
  refs/heads/trunk e14e7310c -> 61c988e51


Fix race in CompactionStrategyManager's pause/resume

Patch by Alex Petrov; reviewed by yukim for CASSANDRA-11922


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

Branch: refs/heads/cassandra-3.7
Commit: f40c632e42e7abc38b28bdbb5b729294f8c49fbd
Parents: 3b72c42
Author: Alex Petrov <ol...@gmail.com>
Authored: Mon May 30 14:10:18 2016 +0200
Committer: Yuki Morishita <yu...@apache.org>
Committed: Tue May 31 15:52:54 2016 -0500

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../compaction/CompactionStrategyManager.java   | 40 +++++++++++++++-----
 .../cassandra/db/compaction/CompactionTask.java |  2 +-
 3 files changed, 33 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f40c632e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index d081587..d7b3dd4 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.7
+ * Fix race in CompactionStrategyManager's pause/resume (CASSANDRA-11922)
 Merged from 3.0:
  * Avoid referencing DatabaseDescriptor in AbstractType (CASSANDRA-11912)
  * Don't use static dataDirectories field in Directories instances (CASSANDRA-11647)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f40c632e/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
index 125f6f3..fbb25a3 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
@@ -24,7 +24,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Iterables;
 import org.apache.cassandra.index.Index;
 import com.google.common.primitives.Ints;
@@ -67,7 +66,7 @@ public class CompactionStrategyManager implements INotificationConsumer
     private final List<AbstractCompactionStrategy> repaired = new ArrayList<>();
     private final List<AbstractCompactionStrategy> unrepaired = new ArrayList<>();
     private volatile boolean enabled = true;
-    public volatile boolean isActive = true;
+    private volatile boolean isActive = true;
     private volatile CompactionParams params;
     private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
     private final ReentrantReadWriteLock.ReadLock readLock = lock.readLock();
@@ -103,14 +102,15 @@ public class CompactionStrategyManager implements INotificationConsumer
      */
     public AbstractCompactionTask getNextBackgroundTask(int gcBefore)
     {
-        if (!isEnabled())
-            return null;
-
-        maybeReload(cfs.metadata);
-        List<AbstractCompactionStrategy> strategies = new ArrayList<>();
         readLock.lock();
         try
         {
+            if (!isEnabled())
+                return null;
+
+            maybeReload(cfs.metadata);
+            List<AbstractCompactionStrategy> strategies = new ArrayList<>();
+
             strategies.addAll(repaired);
             strategies.addAll(unrepaired);
             Collections.sort(strategies, (o1, o2) -> Ints.compare(o2.getEstimatedRemainingTasks(), o1.getEstimatedRemainingTasks()));
@@ -133,9 +133,22 @@ public class CompactionStrategyManager implements INotificationConsumer
         return enabled && isActive;
     }
 
+    public boolean isActive()
+    {
+        return isActive;
+    }
+
     public void resume()
     {
-        isActive = true;
+        writeLock.lock();
+        try
+        {
+            isActive = true;
+        }
+        finally
+        {
+            writeLock.unlock();
+        }
     }
 
     /**
@@ -145,7 +158,16 @@ public class CompactionStrategyManager implements INotificationConsumer
       */
     public void pause()
     {
-        isActive = false;
+        writeLock.lock();
+        try
+        {
+            isActive = false;
+        }
+        finally
+        {
+            writeLock.unlock();
+        }
+
     }
 
     private void startup()

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f40c632e/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionTask.java b/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
index 5df91fd..b3a94bb 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
@@ -173,7 +173,7 @@ public class CompactionTask extends AbstractCompactionTask
                     collector.beginCompaction(ci);
                 long lastCheckObsoletion = start;
 
-                if (!controller.cfs.getCompactionStrategyManager().isActive)
+                if (!controller.cfs.getCompactionStrategyManager().isActive())
                     throw new CompactionInterruptedException(ci.getCompactionInfo());
 
                 try (CompactionAwareWriter writer = getCompactionAwareWriter(cfs, getDirectories(), transaction, actuallyCompact))


[2/3] cassandra git commit: Fix race in CompactionStrategyManager's pause/resume

Posted by yu...@apache.org.
Fix race in CompactionStrategyManager's pause/resume

Patch by Alex Petrov; reviewed by yukim for CASSANDRA-11922


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

Branch: refs/heads/trunk
Commit: f40c632e42e7abc38b28bdbb5b729294f8c49fbd
Parents: 3b72c42
Author: Alex Petrov <ol...@gmail.com>
Authored: Mon May 30 14:10:18 2016 +0200
Committer: Yuki Morishita <yu...@apache.org>
Committed: Tue May 31 15:52:54 2016 -0500

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../compaction/CompactionStrategyManager.java   | 40 +++++++++++++++-----
 .../cassandra/db/compaction/CompactionTask.java |  2 +-
 3 files changed, 33 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f40c632e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index d081587..d7b3dd4 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.7
+ * Fix race in CompactionStrategyManager's pause/resume (CASSANDRA-11922)
 Merged from 3.0:
  * Avoid referencing DatabaseDescriptor in AbstractType (CASSANDRA-11912)
  * Don't use static dataDirectories field in Directories instances (CASSANDRA-11647)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f40c632e/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
index 125f6f3..fbb25a3 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java
@@ -24,7 +24,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Iterables;
 import org.apache.cassandra.index.Index;
 import com.google.common.primitives.Ints;
@@ -67,7 +66,7 @@ public class CompactionStrategyManager implements INotificationConsumer
     private final List<AbstractCompactionStrategy> repaired = new ArrayList<>();
     private final List<AbstractCompactionStrategy> unrepaired = new ArrayList<>();
     private volatile boolean enabled = true;
-    public volatile boolean isActive = true;
+    private volatile boolean isActive = true;
     private volatile CompactionParams params;
     private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
     private final ReentrantReadWriteLock.ReadLock readLock = lock.readLock();
@@ -103,14 +102,15 @@ public class CompactionStrategyManager implements INotificationConsumer
      */
     public AbstractCompactionTask getNextBackgroundTask(int gcBefore)
     {
-        if (!isEnabled())
-            return null;
-
-        maybeReload(cfs.metadata);
-        List<AbstractCompactionStrategy> strategies = new ArrayList<>();
         readLock.lock();
         try
         {
+            if (!isEnabled())
+                return null;
+
+            maybeReload(cfs.metadata);
+            List<AbstractCompactionStrategy> strategies = new ArrayList<>();
+
             strategies.addAll(repaired);
             strategies.addAll(unrepaired);
             Collections.sort(strategies, (o1, o2) -> Ints.compare(o2.getEstimatedRemainingTasks(), o1.getEstimatedRemainingTasks()));
@@ -133,9 +133,22 @@ public class CompactionStrategyManager implements INotificationConsumer
         return enabled && isActive;
     }
 
+    public boolean isActive()
+    {
+        return isActive;
+    }
+
     public void resume()
     {
-        isActive = true;
+        writeLock.lock();
+        try
+        {
+            isActive = true;
+        }
+        finally
+        {
+            writeLock.unlock();
+        }
     }
 
     /**
@@ -145,7 +158,16 @@ public class CompactionStrategyManager implements INotificationConsumer
       */
     public void pause()
     {
-        isActive = false;
+        writeLock.lock();
+        try
+        {
+            isActive = false;
+        }
+        finally
+        {
+            writeLock.unlock();
+        }
+
     }
 
     private void startup()

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f40c632e/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionTask.java b/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
index 5df91fd..b3a94bb 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
@@ -173,7 +173,7 @@ public class CompactionTask extends AbstractCompactionTask
                     collector.beginCompaction(ci);
                 long lastCheckObsoletion = start;
 
-                if (!controller.cfs.getCompactionStrategyManager().isActive)
+                if (!controller.cfs.getCompactionStrategyManager().isActive())
                     throw new CompactionInterruptedException(ci.getCompactionInfo());
 
                 try (CompactionAwareWriter writer = getCompactionAwareWriter(cfs, getDirectories(), transaction, actuallyCompact))


[3/3] cassandra git commit: Merge branch 'cassandra-3.7' into trunk

Posted by yu...@apache.org.
Merge branch 'cassandra-3.7' into trunk


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

Branch: refs/heads/trunk
Commit: 61c988e519733874897807f8ec64c73602a088c9
Parents: e14e731 f40c632
Author: Yuki Morishita <yu...@apache.org>
Authored: Tue May 31 15:53:00 2016 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Tue May 31 15:53:00 2016 -0500

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../compaction/CompactionStrategyManager.java   | 40 +++++++++++++++-----
 .../cassandra/db/compaction/CompactionTask.java |  2 +-
 3 files changed, 33 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/61c988e5/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 842174e,d7b3dd4..eecf2ca
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,16 -1,5 +1,17 @@@
 +3.8
 + * Introduce HdrHistogram and response/service/wait separation to stress tool (CASSANDRA-11853)
 + * entry-weighers in QueryProcessor should respect partitionKeyBindIndexes field (CASSANDRA-11718)
 + * Support older ant versions (CASSANDRA-11807)
 + * Estimate compressed on disk size when deciding if sstable size limit reached (CASSANDRA-11623)
 + * cassandra-stress profiles should support case sensitive schemas (CASSANDRA-11546)
 + * Remove DatabaseDescriptor dependency from FileUtils (CASSANDRA-11578)
 + * Faster streaming (CASSANDRA-9766)
 + * Add prepared query parameter to trace for "Execute CQL3 prepared query" session (CASSANDRA-11425)
 + * Add repaired percentage metric (CASSANDRA-11503)
 +
 +
  3.7
+  * Fix race in CompactionStrategyManager's pause/resume (CASSANDRA-11922)
  Merged from 3.0:
   * Avoid referencing DatabaseDescriptor in AbstractType (CASSANDRA-11912)
   * Don't use static dataDirectories field in Directories instances (CASSANDRA-11647)