nodetool scrub/cleanup/upgradesstables exit code

Patch by marcuse; reviewed by Jeff Jirsa for CASSANDRA-13542


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

Branch: refs/heads/trunk
Commit: 6bf5cf7f090eef853c02711bf4079b0f16748088
Parents: e22cb27
Author: Marcus Eriksson <marc...@apache.org>
Authored: Mon May 22 08:46:17 2017 +0200
Committer: Marcus Eriksson <marc...@apache.org>
Committed: Fri Jun 2 15:49:17 2017 +0200

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../db/compaction/CompactionManager.java        | 12 ++++-
 .../org/apache/cassandra/tools/NodeProbe.java   | 48 +++++++++++++++-----
 3 files changed, 47 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6bf5cf7f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 4232084..8ab8422 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.14
+ * nodetool scrub/cleanup/upgradesstables exit code is wrong (CASSANDRA-13542)
  * Fix the reported number of sstable data files accessed per read 
(CASSANDRA-13120)
  * Fix schema digest mismatch during rolling upgrades from versions before 
3.0.12 (CASSANDRA-13559)
  * Upgrade JNA version to 4.4.0 (CASSANDRA-13072)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6bf5cf7f/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java 
b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index 8d470d5..e0fe4ec 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -287,7 +287,10 @@ public class CompactionManager implements 
CompactionManagerMBean
         List<LifecycleTransaction> transactions = new ArrayList<>();
         try (LifecycleTransaction compacting = 
cfs.markAllCompacting(operationType))
         {
-            Iterable<SSTableReader> sstables = compacting != null ? 
Lists.newArrayList(operation.filterSSTables(compacting)) : 
Collections.<SSTableReader>emptyList();
+            if (compacting == null)
+                return AllSSTableOpStatus.UNABLE_TO_CANCEL;
+
+            Iterable<SSTableReader> sstables = 
Lists.newArrayList(operation.filterSSTables(compacting));
             if (Iterables.isEmpty(sstables))
             {
                 logger.info("No sstables for {}.{}", cfs.keyspace.getName(), 
cfs.name);
@@ -339,7 +342,12 @@ public class CompactionManager implements 
CompactionManagerMBean
         void execute(LifecycleTransaction input) throws IOException;
     }
 
-    public enum AllSSTableOpStatus { ABORTED(1), SUCCESSFUL(0);
+    public enum AllSSTableOpStatus
+    {
+        SUCCESSFUL(0),
+        ABORTED(1),
+        UNABLE_TO_CANCEL(2);
+
         public final int statusCode;
 
         AllSSTableOpStatus(int statusCode)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6bf5cf7f/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 394ce6e..5ffdf3b 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -275,29 +275,47 @@ public class NodeProbe implements AutoCloseable
     public void forceKeyspaceCleanup(PrintStream out, int jobs, String 
keyspaceName, String... tableNames) throws IOException, ExecutionException, 
InterruptedException
     {
         checkJobs(out, jobs);
-        if (forceKeyspaceCleanup(jobs, keyspaceName, tableNames) != 0)
+        switch (forceKeyspaceCleanup(jobs, keyspaceName, tableNames))
         {
-            failed = true;
-            out.println("Aborted cleaning up at least one table in keyspace 
"+keyspaceName+", check server logs for more information.");
+            case 1:
+                failed = true;
+                out.println("Aborted cleaning up at least one table in 
keyspace "+keyspaceName+", check server logs for more information.");
+                break;
+            case 2:
+                failed = true;
+                out.println("Failed marking some sstables compacting in 
keyspace "+keyspaceName+", check server logs for more information");
+                break;
         }
     }
 
     public void scrub(PrintStream out, boolean disableSnapshot, boolean 
skipCorrupted, boolean checkData, int jobs, String keyspaceName, String... 
tables) throws IOException, ExecutionException, InterruptedException
     {
         checkJobs(out, jobs);
-        if (scrub(disableSnapshot, skipCorrupted, checkData, jobs, 
keyspaceName, tables) != 0)
+        switch (scrub(disableSnapshot, skipCorrupted, checkData, jobs, 
keyspaceName, tables))
         {
-            failed = true;
-            out.println("Aborted scrubbing at least one table in keyspace 
"+keyspaceName+", check server logs for more information.");
+            case 1:
+                failed = true;
+                out.println("Aborted scrubbing at least one table in keyspace 
"+keyspaceName+", check server logs for more information.");
+                break;
+            case 2:
+                failed = true;
+                out.println("Failed marking some sstables compacting in 
keyspace "+keyspaceName+", check server logs for more information");
+                break;
         }
     }
 
     public void verify(PrintStream out, boolean extendedVerify, String 
keyspaceName, String... tableNames) throws IOException, ExecutionException, 
InterruptedException
     {
-        if (verify(extendedVerify, keyspaceName, tableNames) != 0)
+        switch (verify(extendedVerify, keyspaceName, tableNames))
         {
-            failed = true;
-            out.println("Aborted verifying at least one table in keyspace 
"+keyspaceName+", check server logs for more information.");
+            case 1:
+                failed = true;
+                out.println("Aborted verifying at least one table in keyspace 
"+keyspaceName+", check server logs for more information.");
+                break;
+            case 2:
+                failed = true;
+                out.println("Failed marking some sstables compacting in 
keyspace "+keyspaceName+", check server logs for more information");
+                break;
         }
     }
 
@@ -305,10 +323,16 @@ public class NodeProbe implements AutoCloseable
     public void upgradeSSTables(PrintStream out, String keyspaceName, boolean 
excludeCurrentVersion, int jobs, String... tableNames) throws IOException, 
ExecutionException, InterruptedException
     {
         checkJobs(out, jobs);
-        if (upgradeSSTables(keyspaceName, excludeCurrentVersion, jobs, 
tableNames) != 0)
+        switch (upgradeSSTables(keyspaceName, excludeCurrentVersion, jobs, 
tableNames))
         {
-            failed = true;
-            out.println("Aborted upgrading sstables for atleast one table in 
keyspace "+keyspaceName+", check server logs for more information.");
+            case 1:
+                failed = true;
+                out.println("Aborted upgrading sstables for atleast one table 
in keyspace "+keyspaceName+", check server logs for more information.");
+                break;
+            case 2:
+                failed = true;
+                out.println("Failed marking some sstables compacting in 
keyspace "+keyspaceName+", check server logs for more information");
+                break;
         }
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to