You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2015/09/04 16:18:27 UTC

[01/22] cassandra git commit: refuse to decomission if not in state NORMAL patch by Jan Karlsson and Stefania for CASSANDRA-8741

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.0 517058feb -> 5bc56c3e4
  refs/heads/cassandra-2.1 fe8005257 -> 5ec020490
  refs/heads/cassandra-2.2 1f1352821 -> 25373e994
  refs/heads/cassandra-3.0 c7557bdec -> ab962202a
  refs/heads/trunk 721eaf6f0 -> 5bb80362d


refuse to decomission if not in state NORMAL
patch by Jan Karlsson and Stefania for CASSANDRA-8741


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

Branch: refs/heads/cassandra-2.0
Commit: 5bc56c3e407f9deb0c931f63b5d6e4c768a0632d
Parents: 517058f
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Aug 27 10:01:07 2015 +0800
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:13:53 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                               | 1 +
 src/java/org/apache/cassandra/service/StorageService.java | 2 ++
 src/java/org/apache/cassandra/tools/NodeCmd.java          | 9 ++++++++-
 3 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 0e4ade3..d4cc15f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.0.17
+ * Disallow decommission when node is in drained state (CASSANDRA-8741)
  * Backport CASSANDRA-8013 to 2.0 (CASSANDRA-10144)
  * Make getFullyExpiredSSTables less expensive (CASSANDRA-9882)
  * Add tool to find why expired sstables are not getting dropped (CASSANDRA-10015)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/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 745fe4c..5ac4980 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2963,6 +2963,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             throw new UnsupportedOperationException("local node is not a member of the token ring yet");
         if (tokenMetadata.cloneAfterAllLeft().sortedTokens().size() < 2)
             throw new UnsupportedOperationException("no other normal nodes in the ring; decommission would be pointless");
+        if (operationMode != Mode.NORMAL)
+            throw new UnsupportedOperationException("Node in " + operationMode + " state; wait for status to become normal or restart");
 
         PendingRangeCalculatorService.instance.blockUntilFinished();
         for (String keyspaceName : Schema.instance.getNonSystemKeyspaces())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/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 b006d69..8071013 100644
--- a/src/java/org/apache/cassandra/tools/NodeCmd.java
+++ b/src/java/org/apache/cassandra/tools/NodeCmd.java
@@ -1366,7 +1366,8 @@ public class NodeCmd
                         System.err.println("Decommission will decommission the node you are connected to and does not take arguments!");
                         System.exit(1);
                     }
-                    probe.decommission();
+                    try { probe.decommission(); }
+                    catch (UnsupportedOperationException e) { err("Unsupported operation: " + e.getMessage()); }
                     break;
 
                 case DRAIN :
@@ -1678,6 +1679,12 @@ public class NodeCmd
         System.exit(1);
     }
 
+    private static void err(String useStr)
+    {
+        System.err.println(useStr);
+        System.exit(1);
+    }
+
     private static void err(Exception e, String errStr)
     {
         System.err.println(errStr);


[19/22] cassandra git commit: refuse to decomission if not in state NORMAL patch by Jan Karlsson and Stefania for CASSANDRA-8741

Posted by jb...@apache.org.
refuse to decomission if not in state NORMAL
patch by Jan Karlsson and Stefania for CASSANDRA-8741


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

Branch: refs/heads/trunk
Commit: 25373e9945a3de7a7caf76281098e44bf8c6a8a0
Parents: 3f50519
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Aug 27 10:01:07 2015 +0800
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:17:50 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                                    | 2 ++
 src/java/org/apache/cassandra/service/StorageService.java      | 2 ++
 src/java/org/apache/cassandra/tools/nodetool/Decommission.java | 3 +++
 3 files changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/25373e99/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 20e1297..7ac7b23 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -10,6 +10,8 @@ Merged from 2.1:
  * Change streaming_socket_timeout_in_ms default to 1 hour (CASSANDRA-8611)
  * (cqlsh) update list of CQL keywords (CASSANDRA-9232)
  * Add nodetool gettraceprobability command (CASSANDRA-10234)
+Merged from 2.0:
+ * Disallow decommission when node is in drained state (CASSANDRA-8741)
 
 
 2.2.1

http://git-wip-us.apache.org/repos/asf/cassandra/blob/25373e99/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 883c96b..ef795f9 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -3294,6 +3294,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             throw new UnsupportedOperationException("local node is not a member of the token ring yet");
         if (tokenMetadata.cloneAfterAllLeft().sortedTokens().size() < 2)
             throw new UnsupportedOperationException("no other normal nodes in the ring; decommission would be pointless");
+        if (operationMode != Mode.NORMAL)
+            throw new UnsupportedOperationException("Node in " + operationMode + " state; wait for status to become normal or restart");
 
         PendingRangeCalculatorService.instance.blockUntilFinished();
         for (String keyspaceName : Schema.instance.getNonSystemKeyspaces())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/25373e99/src/java/org/apache/cassandra/tools/nodetool/Decommission.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/nodetool/Decommission.java b/src/java/org/apache/cassandra/tools/nodetool/Decommission.java
index a3feb67..34890e0 100644
--- a/src/java/org/apache/cassandra/tools/nodetool/Decommission.java
+++ b/src/java/org/apache/cassandra/tools/nodetool/Decommission.java
@@ -34,6 +34,9 @@ public class Decommission extends NodeToolCmd
         } catch (InterruptedException e)
         {
             throw new RuntimeException("Error decommissioning node", e);
+        } catch (UnsupportedOperationException e)
+        {
+            throw new IllegalStateException("Unsupported operation: " + e.getMessage(), e);
         }
     }
 }
\ No newline at end of file


[18/22] cassandra git commit: refuse to decomission if not in state NORMAL patch by Jan Karlsson and Stefania for CASSANDRA-8741

Posted by jb...@apache.org.
refuse to decomission if not in state NORMAL
patch by Jan Karlsson and Stefania for CASSANDRA-8741


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

Branch: refs/heads/cassandra-2.2
Commit: 25373e9945a3de7a7caf76281098e44bf8c6a8a0
Parents: 3f50519
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Aug 27 10:01:07 2015 +0800
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:17:50 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                                    | 2 ++
 src/java/org/apache/cassandra/service/StorageService.java      | 2 ++
 src/java/org/apache/cassandra/tools/nodetool/Decommission.java | 3 +++
 3 files changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/25373e99/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 20e1297..7ac7b23 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -10,6 +10,8 @@ Merged from 2.1:
  * Change streaming_socket_timeout_in_ms default to 1 hour (CASSANDRA-8611)
  * (cqlsh) update list of CQL keywords (CASSANDRA-9232)
  * Add nodetool gettraceprobability command (CASSANDRA-10234)
+Merged from 2.0:
+ * Disallow decommission when node is in drained state (CASSANDRA-8741)
 
 
 2.2.1

http://git-wip-us.apache.org/repos/asf/cassandra/blob/25373e99/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 883c96b..ef795f9 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -3294,6 +3294,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             throw new UnsupportedOperationException("local node is not a member of the token ring yet");
         if (tokenMetadata.cloneAfterAllLeft().sortedTokens().size() < 2)
             throw new UnsupportedOperationException("no other normal nodes in the ring; decommission would be pointless");
+        if (operationMode != Mode.NORMAL)
+            throw new UnsupportedOperationException("Node in " + operationMode + " state; wait for status to become normal or restart");
 
         PendingRangeCalculatorService.instance.blockUntilFinished();
         for (String keyspaceName : Schema.instance.getNonSystemKeyspaces())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/25373e99/src/java/org/apache/cassandra/tools/nodetool/Decommission.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/nodetool/Decommission.java b/src/java/org/apache/cassandra/tools/nodetool/Decommission.java
index a3feb67..34890e0 100644
--- a/src/java/org/apache/cassandra/tools/nodetool/Decommission.java
+++ b/src/java/org/apache/cassandra/tools/nodetool/Decommission.java
@@ -34,6 +34,9 @@ public class Decommission extends NodeToolCmd
         } catch (InterruptedException e)
         {
             throw new RuntimeException("Error decommissioning node", e);
+        } catch (UnsupportedOperationException e)
+        {
+            throw new IllegalStateException("Unsupported operation: " + e.getMessage(), e);
         }
     }
 }
\ No newline at end of file


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

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


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

Branch: refs/heads/cassandra-2.2
Commit: 3f50519141df4d0b4c5224e2652c96cfa0333feb
Parents: 1f13528 5ec0204
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Sep 4 09:17:26 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:17:26 2015 -0500

----------------------------------------------------------------------

----------------------------------------------------------------------



[07/22] cassandra git commit: refuse to decomission if not in state NORMAL patch by Jan Karlsson and Stefania for CASSANDRA-8741

Posted by jb...@apache.org.
refuse to decomission if not in state NORMAL
patch by Jan Karlsson and Stefania for CASSANDRA-8741


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

Branch: refs/heads/cassandra-3.0
Commit: 27754c0a41087a2419c09fd99707fd7235cce4ad
Parents: fe80052
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Aug 27 10:01:07 2015 +0800
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:15:56 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                               | 2 ++
 src/java/org/apache/cassandra/service/StorageService.java | 2 ++
 src/java/org/apache/cassandra/tools/NodeTool.java         | 3 +++
 3 files changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/27754c0a/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 681a40b..6d43c98 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,6 +3,8 @@
  * Only check KeyCache when it is enabled
  * Change streaming_socket_timeout_in_ms default to 1 hour (CASSANDRA-8611)
  * (cqlsh) update list of CQL keywords (CASSANDRA-9232)
+Merged from 2.0:
+ * Disallow decommission when node is in drained state (CASSANDRA-8741)
 
 
 2.1.9

http://git-wip-us.apache.org/repos/asf/cassandra/blob/27754c0a/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 56ddd63..acc82e6 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -3281,6 +3281,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             throw new UnsupportedOperationException("local node is not a member of the token ring yet");
         if (tokenMetadata.cloneAfterAllLeft().sortedTokens().size() < 2)
             throw new UnsupportedOperationException("no other normal nodes in the ring; decommission would be pointless");
+        if (operationMode != Mode.NORMAL)
+            throw new UnsupportedOperationException("Node in " + operationMode + " state; wait for status to become normal or restart");
 
         PendingRangeCalculatorService.instance.blockUntilFinished();
         for (String keyspaceName : Schema.instance.getNonSystemKeyspaces())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/27754c0a/src/java/org/apache/cassandra/tools/NodeTool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeTool.java b/src/java/org/apache/cassandra/tools/NodeTool.java
index 8e88f45..277f42c 100644
--- a/src/java/org/apache/cassandra/tools/NodeTool.java
+++ b/src/java/org/apache/cassandra/tools/NodeTool.java
@@ -1471,6 +1471,9 @@ public class NodeTool
             } catch (InterruptedException e)
             {
                 throw new RuntimeException("Error decommissioning node", e);
+            } catch (UnsupportedOperationException e)
+            {
+                throw new IllegalStateException("Unsupported operation: " + e.getMessage(), e);
             }
         }
     }


[17/22] cassandra git commit: refuse to decomission if not in state NORMAL patch by Jan Karlsson and Stefania for CASSANDRA-8741

Posted by jb...@apache.org.
refuse to decomission if not in state NORMAL
patch by Jan Karlsson and Stefania for CASSANDRA-8741


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

Branch: refs/heads/cassandra-3.0
Commit: 25373e9945a3de7a7caf76281098e44bf8c6a8a0
Parents: 3f50519
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Aug 27 10:01:07 2015 +0800
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:17:50 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                                    | 2 ++
 src/java/org/apache/cassandra/service/StorageService.java      | 2 ++
 src/java/org/apache/cassandra/tools/nodetool/Decommission.java | 3 +++
 3 files changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/25373e99/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 20e1297..7ac7b23 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -10,6 +10,8 @@ Merged from 2.1:
  * Change streaming_socket_timeout_in_ms default to 1 hour (CASSANDRA-8611)
  * (cqlsh) update list of CQL keywords (CASSANDRA-9232)
  * Add nodetool gettraceprobability command (CASSANDRA-10234)
+Merged from 2.0:
+ * Disallow decommission when node is in drained state (CASSANDRA-8741)
 
 
 2.2.1

http://git-wip-us.apache.org/repos/asf/cassandra/blob/25373e99/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 883c96b..ef795f9 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -3294,6 +3294,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             throw new UnsupportedOperationException("local node is not a member of the token ring yet");
         if (tokenMetadata.cloneAfterAllLeft().sortedTokens().size() < 2)
             throw new UnsupportedOperationException("no other normal nodes in the ring; decommission would be pointless");
+        if (operationMode != Mode.NORMAL)
+            throw new UnsupportedOperationException("Node in " + operationMode + " state; wait for status to become normal or restart");
 
         PendingRangeCalculatorService.instance.blockUntilFinished();
         for (String keyspaceName : Schema.instance.getNonSystemKeyspaces())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/25373e99/src/java/org/apache/cassandra/tools/nodetool/Decommission.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/nodetool/Decommission.java b/src/java/org/apache/cassandra/tools/nodetool/Decommission.java
index a3feb67..34890e0 100644
--- a/src/java/org/apache/cassandra/tools/nodetool/Decommission.java
+++ b/src/java/org/apache/cassandra/tools/nodetool/Decommission.java
@@ -34,6 +34,9 @@ public class Decommission extends NodeToolCmd
         } catch (InterruptedException e)
         {
             throw new RuntimeException("Error decommissioning node", e);
+        } catch (UnsupportedOperationException e)
+        {
+            throw new IllegalStateException("Unsupported operation: " + e.getMessage(), e);
         }
     }
 }
\ No newline at end of file


[08/22] cassandra git commit: refuse to decomission if not in state NORMAL patch by Jan Karlsson and Stefania for CASSANDRA-8741

Posted by jb...@apache.org.
refuse to decomission if not in state NORMAL
patch by Jan Karlsson and Stefania for CASSANDRA-8741


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

Branch: refs/heads/trunk
Commit: 27754c0a41087a2419c09fd99707fd7235cce4ad
Parents: fe80052
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Aug 27 10:01:07 2015 +0800
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:15:56 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                               | 2 ++
 src/java/org/apache/cassandra/service/StorageService.java | 2 ++
 src/java/org/apache/cassandra/tools/NodeTool.java         | 3 +++
 3 files changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/27754c0a/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 681a40b..6d43c98 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,6 +3,8 @@
  * Only check KeyCache when it is enabled
  * Change streaming_socket_timeout_in_ms default to 1 hour (CASSANDRA-8611)
  * (cqlsh) update list of CQL keywords (CASSANDRA-9232)
+Merged from 2.0:
+ * Disallow decommission when node is in drained state (CASSANDRA-8741)
 
 
 2.1.9

http://git-wip-us.apache.org/repos/asf/cassandra/blob/27754c0a/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 56ddd63..acc82e6 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -3281,6 +3281,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             throw new UnsupportedOperationException("local node is not a member of the token ring yet");
         if (tokenMetadata.cloneAfterAllLeft().sortedTokens().size() < 2)
             throw new UnsupportedOperationException("no other normal nodes in the ring; decommission would be pointless");
+        if (operationMode != Mode.NORMAL)
+            throw new UnsupportedOperationException("Node in " + operationMode + " state; wait for status to become normal or restart");
 
         PendingRangeCalculatorService.instance.blockUntilFinished();
         for (String keyspaceName : Schema.instance.getNonSystemKeyspaces())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/27754c0a/src/java/org/apache/cassandra/tools/NodeTool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeTool.java b/src/java/org/apache/cassandra/tools/NodeTool.java
index 8e88f45..277f42c 100644
--- a/src/java/org/apache/cassandra/tools/NodeTool.java
+++ b/src/java/org/apache/cassandra/tools/NodeTool.java
@@ -1471,6 +1471,9 @@ public class NodeTool
             } catch (InterruptedException e)
             {
                 throw new RuntimeException("Error decommissioning node", e);
+            } catch (UnsupportedOperationException e)
+            {
+                throw new IllegalStateException("Unsupported operation: " + e.getMessage(), e);
             }
         }
     }


[05/22] cassandra git commit: refuse to decomission if not in state NORMAL patch by Jan Karlsson and Stefania for CASSANDRA-8741

Posted by jb...@apache.org.
refuse to decomission if not in state NORMAL
patch by Jan Karlsson and Stefania for CASSANDRA-8741


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

Branch: refs/heads/cassandra-2.2
Commit: 5bc56c3e407f9deb0c931f63b5d6e4c768a0632d
Parents: 517058f
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Aug 27 10:01:07 2015 +0800
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:13:53 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                               | 1 +
 src/java/org/apache/cassandra/service/StorageService.java | 2 ++
 src/java/org/apache/cassandra/tools/NodeCmd.java          | 9 ++++++++-
 3 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 0e4ade3..d4cc15f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.0.17
+ * Disallow decommission when node is in drained state (CASSANDRA-8741)
  * Backport CASSANDRA-8013 to 2.0 (CASSANDRA-10144)
  * Make getFullyExpiredSSTables less expensive (CASSANDRA-9882)
  * Add tool to find why expired sstables are not getting dropped (CASSANDRA-10015)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/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 745fe4c..5ac4980 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2963,6 +2963,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             throw new UnsupportedOperationException("local node is not a member of the token ring yet");
         if (tokenMetadata.cloneAfterAllLeft().sortedTokens().size() < 2)
             throw new UnsupportedOperationException("no other normal nodes in the ring; decommission would be pointless");
+        if (operationMode != Mode.NORMAL)
+            throw new UnsupportedOperationException("Node in " + operationMode + " state; wait for status to become normal or restart");
 
         PendingRangeCalculatorService.instance.blockUntilFinished();
         for (String keyspaceName : Schema.instance.getNonSystemKeyspaces())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/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 b006d69..8071013 100644
--- a/src/java/org/apache/cassandra/tools/NodeCmd.java
+++ b/src/java/org/apache/cassandra/tools/NodeCmd.java
@@ -1366,7 +1366,8 @@ public class NodeCmd
                         System.err.println("Decommission will decommission the node you are connected to and does not take arguments!");
                         System.exit(1);
                     }
-                    probe.decommission();
+                    try { probe.decommission(); }
+                    catch (UnsupportedOperationException e) { err("Unsupported operation: " + e.getMessage()); }
                     break;
 
                 case DRAIN :
@@ -1678,6 +1679,12 @@ public class NodeCmd
         System.exit(1);
     }
 
+    private static void err(String useStr)
+    {
+        System.err.println(useStr);
+        System.exit(1);
+    }
+
     private static void err(Exception e, String errStr)
     {
         System.err.println(errStr);


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

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


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

Branch: refs/heads/cassandra-3.0
Commit: 3f50519141df4d0b4c5224e2652c96cfa0333feb
Parents: 1f13528 5ec0204
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Sep 4 09:17:26 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:17:26 2015 -0500

----------------------------------------------------------------------

----------------------------------------------------------------------



[11/22] cassandra git commit: Merge branch 'cassandra-2.0' into cassandra-2.1

Posted by jb...@apache.org.
Merge branch 'cassandra-2.0' into cassandra-2.1


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

Branch: refs/heads/cassandra-3.0
Commit: 5ec020490f46679a3f13cb96b2f7dfb56744dea2
Parents: 27754c0 5bc56c3
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Sep 4 09:17:16 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:17:16 2015 -0500

----------------------------------------------------------------------

----------------------------------------------------------------------



[12/22] cassandra git commit: Merge branch 'cassandra-2.0' into cassandra-2.1

Posted by jb...@apache.org.
Merge branch 'cassandra-2.0' into cassandra-2.1


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

Branch: refs/heads/trunk
Commit: 5ec020490f46679a3f13cb96b2f7dfb56744dea2
Parents: 27754c0 5bc56c3
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Sep 4 09:17:16 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:17:16 2015 -0500

----------------------------------------------------------------------

----------------------------------------------------------------------



[06/22] cassandra git commit: refuse to decomission if not in state NORMAL patch by Jan Karlsson and Stefania for CASSANDRA-8741

Posted by jb...@apache.org.
refuse to decomission if not in state NORMAL
patch by Jan Karlsson and Stefania for CASSANDRA-8741


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

Branch: refs/heads/cassandra-2.1
Commit: 27754c0a41087a2419c09fd99707fd7235cce4ad
Parents: fe80052
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Aug 27 10:01:07 2015 +0800
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:15:56 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                               | 2 ++
 src/java/org/apache/cassandra/service/StorageService.java | 2 ++
 src/java/org/apache/cassandra/tools/NodeTool.java         | 3 +++
 3 files changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/27754c0a/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 681a40b..6d43c98 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,6 +3,8 @@
  * Only check KeyCache when it is enabled
  * Change streaming_socket_timeout_in_ms default to 1 hour (CASSANDRA-8611)
  * (cqlsh) update list of CQL keywords (CASSANDRA-9232)
+Merged from 2.0:
+ * Disallow decommission when node is in drained state (CASSANDRA-8741)
 
 
 2.1.9

http://git-wip-us.apache.org/repos/asf/cassandra/blob/27754c0a/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 56ddd63..acc82e6 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -3281,6 +3281,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             throw new UnsupportedOperationException("local node is not a member of the token ring yet");
         if (tokenMetadata.cloneAfterAllLeft().sortedTokens().size() < 2)
             throw new UnsupportedOperationException("no other normal nodes in the ring; decommission would be pointless");
+        if (operationMode != Mode.NORMAL)
+            throw new UnsupportedOperationException("Node in " + operationMode + " state; wait for status to become normal or restart");
 
         PendingRangeCalculatorService.instance.blockUntilFinished();
         for (String keyspaceName : Schema.instance.getNonSystemKeyspaces())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/27754c0a/src/java/org/apache/cassandra/tools/NodeTool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeTool.java b/src/java/org/apache/cassandra/tools/NodeTool.java
index 8e88f45..277f42c 100644
--- a/src/java/org/apache/cassandra/tools/NodeTool.java
+++ b/src/java/org/apache/cassandra/tools/NodeTool.java
@@ -1471,6 +1471,9 @@ public class NodeTool
             } catch (InterruptedException e)
             {
                 throw new RuntimeException("Error decommissioning node", e);
+            } catch (UnsupportedOperationException e)
+            {
+                throw new IllegalStateException("Unsupported operation: " + e.getMessage(), e);
             }
         }
     }


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

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


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

Branch: refs/heads/trunk
Commit: 3f50519141df4d0b4c5224e2652c96cfa0333feb
Parents: 1f13528 5ec0204
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Sep 4 09:17:26 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:17:26 2015 -0500

----------------------------------------------------------------------

----------------------------------------------------------------------



[22/22] cassandra git commit: Merge branch 'cassandra-3.0' into trunk

Posted by jb...@apache.org.
Merge branch 'cassandra-3.0' into trunk


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

Branch: refs/heads/trunk
Commit: 5bb80362d2d0533884f5a3af8892e6ff62d0bfff
Parents: 721eaf6 ab96220
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Sep 4 09:18:14 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:18:14 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                                    | 2 ++
 src/java/org/apache/cassandra/service/StorageService.java      | 2 ++
 src/java/org/apache/cassandra/tools/nodetool/Decommission.java | 3 +++
 3 files changed, 7 insertions(+)
----------------------------------------------------------------------


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


[04/22] cassandra git commit: refuse to decomission if not in state NORMAL patch by Jan Karlsson and Stefania for CASSANDRA-8741

Posted by jb...@apache.org.
refuse to decomission if not in state NORMAL
patch by Jan Karlsson and Stefania for CASSANDRA-8741


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

Branch: refs/heads/trunk
Commit: 5bc56c3e407f9deb0c931f63b5d6e4c768a0632d
Parents: 517058f
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Aug 27 10:01:07 2015 +0800
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:13:53 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                               | 1 +
 src/java/org/apache/cassandra/service/StorageService.java | 2 ++
 src/java/org/apache/cassandra/tools/NodeCmd.java          | 9 ++++++++-
 3 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 0e4ade3..d4cc15f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.0.17
+ * Disallow decommission when node is in drained state (CASSANDRA-8741)
  * Backport CASSANDRA-8013 to 2.0 (CASSANDRA-10144)
  * Make getFullyExpiredSSTables less expensive (CASSANDRA-9882)
  * Add tool to find why expired sstables are not getting dropped (CASSANDRA-10015)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/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 745fe4c..5ac4980 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2963,6 +2963,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             throw new UnsupportedOperationException("local node is not a member of the token ring yet");
         if (tokenMetadata.cloneAfterAllLeft().sortedTokens().size() < 2)
             throw new UnsupportedOperationException("no other normal nodes in the ring; decommission would be pointless");
+        if (operationMode != Mode.NORMAL)
+            throw new UnsupportedOperationException("Node in " + operationMode + " state; wait for status to become normal or restart");
 
         PendingRangeCalculatorService.instance.blockUntilFinished();
         for (String keyspaceName : Schema.instance.getNonSystemKeyspaces())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/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 b006d69..8071013 100644
--- a/src/java/org/apache/cassandra/tools/NodeCmd.java
+++ b/src/java/org/apache/cassandra/tools/NodeCmd.java
@@ -1366,7 +1366,8 @@ public class NodeCmd
                         System.err.println("Decommission will decommission the node you are connected to and does not take arguments!");
                         System.exit(1);
                     }
-                    probe.decommission();
+                    try { probe.decommission(); }
+                    catch (UnsupportedOperationException e) { err("Unsupported operation: " + e.getMessage()); }
                     break;
 
                 case DRAIN :
@@ -1678,6 +1679,12 @@ public class NodeCmd
         System.exit(1);
     }
 
+    private static void err(String useStr)
+    {
+        System.err.println(useStr);
+        System.exit(1);
+    }
+
     private static void err(Exception e, String errStr)
     {
         System.err.println(errStr);


[20/22] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

Posted by jb...@apache.org.
Merge branch 'cassandra-2.2' into cassandra-3.0


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

Branch: refs/heads/cassandra-3.0
Commit: ab962202ae4b1f127441dcf8e733b8d2d73ddf7e
Parents: c7557bd 25373e9
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Sep 4 09:18:04 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:18:04 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                                    | 2 ++
 src/java/org/apache/cassandra/service/StorageService.java      | 2 ++
 src/java/org/apache/cassandra/tools/nodetool/Decommission.java | 3 +++
 3 files changed, 7 insertions(+)
----------------------------------------------------------------------


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

http://git-wip-us.apache.org/repos/asf/cassandra/blob/ab962202/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------


[02/22] cassandra git commit: refuse to decomission if not in state NORMAL patch by Jan Karlsson and Stefania for CASSANDRA-8741

Posted by jb...@apache.org.
refuse to decomission if not in state NORMAL
patch by Jan Karlsson and Stefania for CASSANDRA-8741


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

Branch: refs/heads/cassandra-3.0
Commit: 5bc56c3e407f9deb0c931f63b5d6e4c768a0632d
Parents: 517058f
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Aug 27 10:01:07 2015 +0800
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:13:53 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                               | 1 +
 src/java/org/apache/cassandra/service/StorageService.java | 2 ++
 src/java/org/apache/cassandra/tools/NodeCmd.java          | 9 ++++++++-
 3 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 0e4ade3..d4cc15f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.0.17
+ * Disallow decommission when node is in drained state (CASSANDRA-8741)
  * Backport CASSANDRA-8013 to 2.0 (CASSANDRA-10144)
  * Make getFullyExpiredSSTables less expensive (CASSANDRA-9882)
  * Add tool to find why expired sstables are not getting dropped (CASSANDRA-10015)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/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 745fe4c..5ac4980 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2963,6 +2963,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             throw new UnsupportedOperationException("local node is not a member of the token ring yet");
         if (tokenMetadata.cloneAfterAllLeft().sortedTokens().size() < 2)
             throw new UnsupportedOperationException("no other normal nodes in the ring; decommission would be pointless");
+        if (operationMode != Mode.NORMAL)
+            throw new UnsupportedOperationException("Node in " + operationMode + " state; wait for status to become normal or restart");
 
         PendingRangeCalculatorService.instance.blockUntilFinished();
         for (String keyspaceName : Schema.instance.getNonSystemKeyspaces())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/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 b006d69..8071013 100644
--- a/src/java/org/apache/cassandra/tools/NodeCmd.java
+++ b/src/java/org/apache/cassandra/tools/NodeCmd.java
@@ -1366,7 +1366,8 @@ public class NodeCmd
                         System.err.println("Decommission will decommission the node you are connected to and does not take arguments!");
                         System.exit(1);
                     }
-                    probe.decommission();
+                    try { probe.decommission(); }
+                    catch (UnsupportedOperationException e) { err("Unsupported operation: " + e.getMessage()); }
                     break;
 
                 case DRAIN :
@@ -1678,6 +1679,12 @@ public class NodeCmd
         System.exit(1);
     }
 
+    private static void err(String useStr)
+    {
+        System.err.println(useStr);
+        System.exit(1);
+    }
+
     private static void err(Exception e, String errStr)
     {
         System.err.println(errStr);


[09/22] cassandra git commit: refuse to decomission if not in state NORMAL patch by Jan Karlsson and Stefania for CASSANDRA-8741

Posted by jb...@apache.org.
refuse to decomission if not in state NORMAL
patch by Jan Karlsson and Stefania for CASSANDRA-8741


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

Branch: refs/heads/cassandra-2.2
Commit: 27754c0a41087a2419c09fd99707fd7235cce4ad
Parents: fe80052
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Aug 27 10:01:07 2015 +0800
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:15:56 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                               | 2 ++
 src/java/org/apache/cassandra/service/StorageService.java | 2 ++
 src/java/org/apache/cassandra/tools/NodeTool.java         | 3 +++
 3 files changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/27754c0a/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 681a40b..6d43c98 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,6 +3,8 @@
  * Only check KeyCache when it is enabled
  * Change streaming_socket_timeout_in_ms default to 1 hour (CASSANDRA-8611)
  * (cqlsh) update list of CQL keywords (CASSANDRA-9232)
+Merged from 2.0:
+ * Disallow decommission when node is in drained state (CASSANDRA-8741)
 
 
 2.1.9

http://git-wip-us.apache.org/repos/asf/cassandra/blob/27754c0a/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 56ddd63..acc82e6 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -3281,6 +3281,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             throw new UnsupportedOperationException("local node is not a member of the token ring yet");
         if (tokenMetadata.cloneAfterAllLeft().sortedTokens().size() < 2)
             throw new UnsupportedOperationException("no other normal nodes in the ring; decommission would be pointless");
+        if (operationMode != Mode.NORMAL)
+            throw new UnsupportedOperationException("Node in " + operationMode + " state; wait for status to become normal or restart");
 
         PendingRangeCalculatorService.instance.blockUntilFinished();
         for (String keyspaceName : Schema.instance.getNonSystemKeyspaces())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/27754c0a/src/java/org/apache/cassandra/tools/NodeTool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeTool.java b/src/java/org/apache/cassandra/tools/NodeTool.java
index 8e88f45..277f42c 100644
--- a/src/java/org/apache/cassandra/tools/NodeTool.java
+++ b/src/java/org/apache/cassandra/tools/NodeTool.java
@@ -1471,6 +1471,9 @@ public class NodeTool
             } catch (InterruptedException e)
             {
                 throw new RuntimeException("Error decommissioning node", e);
+            } catch (UnsupportedOperationException e)
+            {
+                throw new IllegalStateException("Unsupported operation: " + e.getMessage(), e);
             }
         }
     }


[21/22] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

Posted by jb...@apache.org.
Merge branch 'cassandra-2.2' into cassandra-3.0


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

Branch: refs/heads/trunk
Commit: ab962202ae4b1f127441dcf8e733b8d2d73ddf7e
Parents: c7557bd 25373e9
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Sep 4 09:18:04 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:18:04 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                                    | 2 ++
 src/java/org/apache/cassandra/service/StorageService.java      | 2 ++
 src/java/org/apache/cassandra/tools/nodetool/Decommission.java | 3 +++
 3 files changed, 7 insertions(+)
----------------------------------------------------------------------


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

http://git-wip-us.apache.org/repos/asf/cassandra/blob/ab962202/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------


[13/22] cassandra git commit: Merge branch 'cassandra-2.0' into cassandra-2.1

Posted by jb...@apache.org.
Merge branch 'cassandra-2.0' into cassandra-2.1


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

Branch: refs/heads/cassandra-2.1
Commit: 5ec020490f46679a3f13cb96b2f7dfb56744dea2
Parents: 27754c0 5bc56c3
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Sep 4 09:17:16 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:17:16 2015 -0500

----------------------------------------------------------------------

----------------------------------------------------------------------



[10/22] cassandra git commit: Merge branch 'cassandra-2.0' into cassandra-2.1

Posted by jb...@apache.org.
Merge branch 'cassandra-2.0' into cassandra-2.1


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

Branch: refs/heads/cassandra-2.2
Commit: 5ec020490f46679a3f13cb96b2f7dfb56744dea2
Parents: 27754c0 5bc56c3
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Sep 4 09:17:16 2015 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:17:16 2015 -0500

----------------------------------------------------------------------

----------------------------------------------------------------------



[03/22] cassandra git commit: refuse to decomission if not in state NORMAL patch by Jan Karlsson and Stefania for CASSANDRA-8741

Posted by jb...@apache.org.
refuse to decomission if not in state NORMAL
patch by Jan Karlsson and Stefania for CASSANDRA-8741


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

Branch: refs/heads/cassandra-2.1
Commit: 5bc56c3e407f9deb0c931f63b5d6e4c768a0632d
Parents: 517058f
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Thu Aug 27 10:01:07 2015 +0800
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Sep 4 09:13:53 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                               | 1 +
 src/java/org/apache/cassandra/service/StorageService.java | 2 ++
 src/java/org/apache/cassandra/tools/NodeCmd.java          | 9 ++++++++-
 3 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 0e4ade3..d4cc15f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.0.17
+ * Disallow decommission when node is in drained state (CASSANDRA-8741)
  * Backport CASSANDRA-8013 to 2.0 (CASSANDRA-10144)
  * Make getFullyExpiredSSTables less expensive (CASSANDRA-9882)
  * Add tool to find why expired sstables are not getting dropped (CASSANDRA-10015)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/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 745fe4c..5ac4980 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2963,6 +2963,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             throw new UnsupportedOperationException("local node is not a member of the token ring yet");
         if (tokenMetadata.cloneAfterAllLeft().sortedTokens().size() < 2)
             throw new UnsupportedOperationException("no other normal nodes in the ring; decommission would be pointless");
+        if (operationMode != Mode.NORMAL)
+            throw new UnsupportedOperationException("Node in " + operationMode + " state; wait for status to become normal or restart");
 
         PendingRangeCalculatorService.instance.blockUntilFinished();
         for (String keyspaceName : Schema.instance.getNonSystemKeyspaces())

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bc56c3e/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 b006d69..8071013 100644
--- a/src/java/org/apache/cassandra/tools/NodeCmd.java
+++ b/src/java/org/apache/cassandra/tools/NodeCmd.java
@@ -1366,7 +1366,8 @@ public class NodeCmd
                         System.err.println("Decommission will decommission the node you are connected to and does not take arguments!");
                         System.exit(1);
                     }
-                    probe.decommission();
+                    try { probe.decommission(); }
+                    catch (UnsupportedOperationException e) { err("Unsupported operation: " + e.getMessage()); }
                     break;
 
                 case DRAIN :
@@ -1678,6 +1679,12 @@ public class NodeCmd
         System.exit(1);
     }
 
+    private static void err(String useStr)
+    {
+        System.err.println(useStr);
+        System.exit(1);
+    }
+
     private static void err(Exception e, String errStr)
     {
         System.err.println(errStr);