Avoid creating a snapshot at restart for compactions_in_progress

Patch by Alex Petrov; reviewed by Joel Knighton for CASSANDRA-10962


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

Branch: refs/heads/cassandra-3.7
Commit: 5a923f65c2c02d08b687874dc8ac45d2d032b811
Parents: 5de9de1
Author: Alex Petrov <oleksandr.pet...@gmail.com>
Authored: Thu Apr 28 16:20:19 2016 +0200
Committer: Josh McKenzie <josh.mcken...@datastax.com>
Committed: Thu May 5 18:03:48 2016 -0400

----------------------------------------------------------------------
 .../org/apache/cassandra/db/ColumnFamilyStore.java  | 16 ++++++++++++++--
 .../org/apache/cassandra/db/SystemKeyspace.java     |  2 +-
 2 files changed, 15 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5a923f65/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java 
b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index bb2b5c9..513a138 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -2681,6 +2681,18 @@ public class ColumnFamilyStore implements 
ColumnFamilyStoreMBean
      */
     public void truncateBlocking()
     {
+        truncateBlocking(DatabaseDescriptor.isAutoSnapshot());
+    }
+
+    /**
+     * Truncate deletes the column family's data with no expensive tombstone 
creation,
+     * optionally snapshotting the data.
+     *
+     * @param takeSnapshot whether or not to take a snapshot <code>true</code> 
if snapshot should be taken,
+     *                     <code>false</code> otherwise
+     */
+    public void truncateBlocking(final boolean takeSnapshot)
+    {
         // We have two goals here:
         // - truncate should delete everything written before truncate was 
invoked
         // - but not delete anything that isn't part of the snapshot we create.
@@ -2695,7 +2707,7 @@ public class ColumnFamilyStore implements 
ColumnFamilyStoreMBean
         // position in the System keyspace.
         logger.trace("truncating {}", name);
 
-        if (keyspace.getMetadata().durableWrites || 
DatabaseDescriptor.isAutoSnapshot())
+        if (keyspace.getMetadata().durableWrites || takeSnapshot)
         {
             // flush the CF being truncated before forcing the new segment
             forceBlockingFlush();
@@ -2724,7 +2736,7 @@ public class ColumnFamilyStore implements 
ColumnFamilyStoreMBean
                 final long truncatedAt = System.currentTimeMillis();
                 data.notifyTruncated(truncatedAt);
 
-                if (DatabaseDescriptor.isAutoSnapshot())
+                if (takeSnapshot)
                     snapshot(Keyspace.getTimestampedSnapshotName(name));
 
                 ReplayPosition replayAfter = discardSSTables(truncatedAt);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5a923f65/src/java/org/apache/cassandra/db/SystemKeyspace.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/SystemKeyspace.java 
b/src/java/org/apache/cassandra/db/SystemKeyspace.java
index 46de0db..1ce599d 100644
--- a/src/java/org/apache/cassandra/db/SystemKeyspace.java
+++ b/src/java/org/apache/cassandra/db/SystemKeyspace.java
@@ -402,7 +402,7 @@ public final class SystemKeyspace
     public static void discardCompactionsInProgress()
     {
         ColumnFamilyStore compactionLog = 
Keyspace.open(NAME).getColumnFamilyStore(COMPACTIONS_IN_PROGRESS);
-        compactionLog.truncateBlocking();
+        compactionLog.truncateBlocking(false);
     }
 
     public static void updateCompactionHistory(String ksname,

Reply via email to