You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by db...@apache.org on 2013/08/20 23:55:50 UTC

[1/3] git commit: add a -no-snapshot option to scrub to be able to run in tight disk space scenarios patch by ltodorov reviewed by dbrosius for cassandra-5891

Updated Branches:
  refs/heads/cassandra-2.0 fb9b3d57d -> e02389747


add a -no-snapshot option to scrub to be able to run in tight disk space scenarios
patch by ltodorov reviewed by dbrosius for cassandra-5891


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

Branch: refs/heads/cassandra-2.0
Commit: dbb55ebd685ca36dc962e07d1a33b3354a1ce433
Parents: 1df9823
Author: Dave Brosius <db...@apache.org>
Authored: Tue Aug 20 17:38:52 2013 -0400
Committer: Dave Brosius <db...@apache.org>
Committed: Tue Aug 20 17:38:52 2013 -0400

----------------------------------------------------------------------
 CHANGES.txt                                                    | 1 +
 src/java/org/apache/cassandra/db/ColumnFamilyStore.java        | 6 ++++--
 src/java/org/apache/cassandra/service/StorageService.java      | 4 ++--
 src/java/org/apache/cassandra/service/StorageServiceMBean.java | 2 +-
 src/java/org/apache/cassandra/tools/NodeCmd.java               | 5 ++++-
 src/java/org/apache/cassandra/tools/NodeProbe.java             | 4 ++--
 6 files changed, 14 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbb55ebd/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 7ecf602..7d36c95 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -22,6 +22,7 @@
    (CASSANDRA-5856)
  * Don't announce schema version until we've loaded the changes locally
    (CASSANDRA-5904)
+ * Add -no-snapshot option to scrub (CASSANDRA-5891)
 Merged from 1.1:
  * Correctly validate sparse composite cells in scrub (CASSANDRA-5855)
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbb55ebd/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 0000deb..22b1dd5 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -967,9 +967,11 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
         CompactionManager.instance.performCleanup(ColumnFamilyStore.this, renewer);
     }
 
-    public void scrub() throws ExecutionException, InterruptedException
+    public void scrub(boolean disableSnapshot) throws ExecutionException, InterruptedException
     {
-        snapshotWithoutFlush("pre-scrub-" + System.currentTimeMillis());
+        // skip snapshot creation during scrub, SEE JIRA 5891
+        if(!disableSnapshot)
+            snapshotWithoutFlush("pre-scrub-" + System.currentTimeMillis());
         CompactionManager.instance.performScrub(ColumnFamilyStore.this);
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbb55ebd/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index 588777b..9339132 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2149,10 +2149,10 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
         }
     }
 
-    public void scrub(String tableName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+    public void scrub(boolean disableSnapshot, String tableName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
     {
         for (ColumnFamilyStore cfStore : getValidColumnFamilies(false, false, tableName, columnFamilies))
-            cfStore.scrub();
+            cfStore.scrub(disableSnapshot);
     }
 
     public void upgradeSSTables(String tableName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbb55ebd/src/java/org/apache/cassandra/service/StorageServiceMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageServiceMBean.java b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
index b831d7d..15f2113 100644
--- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
@@ -236,7 +236,7 @@ public interface StorageServiceMBean extends NotificationEmitter
      *
      * Scrubbed CFs will be snapshotted first.
      */
-    public void scrub(String tableName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
+    public void scrub(boolean disableSnapshot, String tableName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
 
     /**
      * Rewrite all sstables to the latest version.

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbb55ebd/src/java/org/apache/cassandra/tools/NodeCmd.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeCmd.java b/src/java/org/apache/cassandra/tools/NodeCmd.java
index f6d4310..4e9f461 100644
--- a/src/java/org/apache/cassandra/tools/NodeCmd.java
+++ b/src/java/org/apache/cassandra/tools/NodeCmd.java
@@ -70,6 +70,7 @@ public class NodeCmd
     private static final Pair<String, String> START_TOKEN_OPT = Pair.create("st", "start-token");
     private static final Pair<String, String> END_TOKEN_OPT = Pair.create("et", "end-token");
     private static final Pair<String, String> UPGRADE_ALL_SSTABLE_OPT = Pair.create("a", "include-all-sstables");
+    private static final Pair<String, String> NO_SNAPSHOT = Pair.create("ns", "no-snapshot");
 
     private static final String DEFAULT_HOST = "127.0.0.1";
     private static final int DEFAULT_PORT = 7199;
@@ -93,6 +94,7 @@ public class NodeCmd
         options.addOption(START_TOKEN_OPT, true, "token at which repair range starts");
         options.addOption(END_TOKEN_OPT, true, "token at which repair range ends");
         options.addOption(UPGRADE_ALL_SSTABLE_OPT, false, "includes sstables that are already on the most recent version during upgradesstables");
+        options.addOption(NO_SNAPSHOT, false, "disables snapshot creation for scrub");
     }
 
     public NodeCmd(NodeProbe probe)
@@ -1497,7 +1499,8 @@ public class NodeCmd
                     catch (ExecutionException ee) { err(ee, "Error occurred during cleanup"); }
                     break;
                 case SCRUB :
-                    try { probe.scrub(keyspace, columnFamilies); }
+                    boolean disableSnapshot = cmd.hasOption(NO_SNAPSHOT.left);
+                    try { probe.scrub(disableSnapshot, keyspace, columnFamilies); }
                     catch (ExecutionException ee) { err(ee, "Error occurred while scrubbing keyspace " + keyspace); }
                     break;
                 case UPGRADESSTABLES :

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbb55ebd/src/java/org/apache/cassandra/tools/NodeProbe.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java b/src/java/org/apache/cassandra/tools/NodeProbe.java
index dbcb66e..a9b0bb5 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -187,9 +187,9 @@ public class NodeProbe
         ssProxy.forceTableCleanup(tableName, columnFamilies);
     }
 
-    public void scrub(String tableName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+    public void scrub(boolean disableSnapshot, String tableName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
     {
-        ssProxy.scrub(tableName, columnFamilies);
+        ssProxy.scrub(disableSnapshot, tableName, columnFamilies);
     }
 
     public void upgradeSSTables(String tableName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException


[3/3] git commit: Merge branch 'cassandra-2.0.0' into cassandra-2.0

Posted by db...@apache.org.
Merge branch 'cassandra-2.0.0' into cassandra-2.0


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

Branch: refs/heads/cassandra-2.0
Commit: e02389747cf265e589c7487ad832f20163ac3ece
Parents: fb9b3d5 33fda2d
Author: Dave Brosius <db...@apache.org>
Authored: Tue Aug 20 17:53:43 2013 -0400
Committer: Dave Brosius <db...@apache.org>
Committed: Tue Aug 20 17:53:43 2013 -0400

----------------------------------------------------------------------
 CHANGES.txt                                                    | 3 +++
 src/java/org/apache/cassandra/db/ColumnFamilyStore.java        | 6 ++++--
 src/java/org/apache/cassandra/service/StorageService.java      | 4 ++--
 src/java/org/apache/cassandra/service/StorageServiceMBean.java | 4 ++--
 src/java/org/apache/cassandra/tools/NodeCmd.java               | 5 ++++-
 src/java/org/apache/cassandra/tools/NodeProbe.java             | 4 ++--
 6 files changed, 17 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0238974/CHANGES.txt
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e0238974/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------


[2/3] git commit: Merge branch 'cassandra-1.2' into cassandra-2.0.0

Posted by db...@apache.org.
Merge branch 'cassandra-1.2' into cassandra-2.0.0


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

Branch: refs/heads/cassandra-2.0
Commit: 33fda2db610202d7ed8e75afe6a0ac8e30003834
Parents: 3a7d9f8 dbb55eb
Author: Dave Brosius <db...@apache.org>
Authored: Tue Aug 20 17:52:43 2013 -0400
Committer: Dave Brosius <db...@apache.org>
Committed: Tue Aug 20 17:52:43 2013 -0400

----------------------------------------------------------------------
 CHANGES.txt                                                    | 3 +++
 src/java/org/apache/cassandra/db/ColumnFamilyStore.java        | 6 ++++--
 src/java/org/apache/cassandra/service/StorageService.java      | 4 ++--
 src/java/org/apache/cassandra/service/StorageServiceMBean.java | 4 ++--
 src/java/org/apache/cassandra/tools/NodeCmd.java               | 5 ++++-
 src/java/org/apache/cassandra/tools/NodeProbe.java             | 4 ++--
 6 files changed, 17 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/33fda2db/CHANGES.txt
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/33fda2db/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/33fda2db/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index a23db0c,9339132..3ef9d4b
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -2076,15 -2149,15 +2076,15 @@@ public class StorageService extends Not
          }
      }
  
-     public void scrub(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
 -    public void scrub(boolean disableSnapshot, String tableName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
++    public void scrub(boolean disableSnapshot, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
      {
 -        for (ColumnFamilyStore cfStore : getValidColumnFamilies(false, false, tableName, columnFamilies))
 +        for (ColumnFamilyStore cfStore : getValidColumnFamilies(false, false, keyspaceName, columnFamilies))
-             cfStore.scrub();
+             cfStore.scrub(disableSnapshot);
      }
  
 -    public void upgradeSSTables(String tableName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
 +    public void upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
      {
 -        for (ColumnFamilyStore cfStore : getValidColumnFamilies(true, true, tableName, columnFamilies))
 +        for (ColumnFamilyStore cfStore : getValidColumnFamilies(true, true, keyspaceName, columnFamilies))
              cfStore.sstablesRewrite(excludeCurrentVersion);
      }
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/33fda2db/src/java/org/apache/cassandra/service/StorageServiceMBean.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageServiceMBean.java
index a84bcf4,15f2113..0eb2f49
--- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
@@@ -229,9 -234,9 +229,9 @@@ public interface StorageServiceMBean ex
       * Scrub (deserialize + reserialize at the latest version, skipping bad rows if any) the given keyspace.
       * If columnFamilies array is empty, all CFs are scrubbed.
       *
--     * Scrubbed CFs will be snapshotted first.
++     * Scrubbed CFs will be snapshotted first, if disableSnapshot is false
       */
-     public void scrub(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
 -    public void scrub(boolean disableSnapshot, String tableName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
++    public void scrub(boolean disableSnapshot, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
  
      /**
       * Rewrite all sstables to the latest version.

http://git-wip-us.apache.org/repos/asf/cassandra/blob/33fda2db/src/java/org/apache/cassandra/tools/NodeCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/33fda2db/src/java/org/apache/cassandra/tools/NodeProbe.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/tools/NodeProbe.java
index 0da2944,a9b0bb5..c633406
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@@ -183,39 -182,39 +183,39 @@@ public class NodeProb
          jmxc.close();
      }
  
 -    public void forceTableCleanup(String tableName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
 +    public void forceKeyspaceCleanup(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
      {
 -        ssProxy.forceTableCleanup(tableName, columnFamilies);
 +        ssProxy.forceKeyspaceCleanup(keyspaceName, columnFamilies);
      }
  
-     public void scrub(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
 -    public void scrub(boolean disableSnapshot, String tableName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
++    public void scrub(boolean disableSnapshot, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
      {
-         ssProxy.scrub(keyspaceName, columnFamilies);
 -        ssProxy.scrub(disableSnapshot, tableName, columnFamilies);
++        ssProxy.scrub(disableSnapshot, keyspaceName, columnFamilies);
      }
  
 -    public void upgradeSSTables(String tableName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
 +    public void upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
      {
 -        ssProxy.upgradeSSTables(tableName, excludeCurrentVersion, columnFamilies);
 +        ssProxy.upgradeSSTables(keyspaceName, excludeCurrentVersion, columnFamilies);
      }
  
 -    public void forceTableCompaction(String tableName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
 +    public void forceKeyspaceCompaction(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
      {
 -        ssProxy.forceTableCompaction(tableName, columnFamilies);
 +        ssProxy.forceKeyspaceCompaction(keyspaceName, columnFamilies);
      }
  
 -    public void forceTableFlush(String tableName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
 +    public void forceKeyspaceFlush(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
      {
 -        ssProxy.forceTableFlush(tableName, columnFamilies);
 +        ssProxy.forceKeyspaceFlush(keyspaceName, columnFamilies);
      }
  
 -    public void forceTableRepair(String tableName, boolean isSequential, boolean isLocal, String... columnFamilies) throws IOException
 +    public void forceKeyspaceRepair(String keyspaceName, boolean isSequential, boolean isLocal, String... columnFamilies) throws IOException
      {
 -        ssProxy.forceTableRepair(tableName, isSequential, isLocal, columnFamilies);
 +        ssProxy.forceKeyspaceRepair(keyspaceName, isSequential, isLocal, columnFamilies);
      }
  
 -    public void forceRepairAsync(final PrintStream out, final String tableName, boolean isSequential, boolean isLocal, boolean primaryRange, String... columnFamilies) throws IOException
 +    public void forceRepairAsync(final PrintStream out, final String keyspaceName, boolean isSequential, boolean isLocal, boolean primaryRange, String... columnFamilies) throws IOException
      {
 -        RepairRunner runner = new RepairRunner(out, tableName, columnFamilies);
 +        RepairRunner runner = new RepairRunner(out, keyspaceName, columnFamilies);
          try
          {
              ssProxy.addNotificationListener(runner, null, null);