Add 'nodetool statusgossip'

Patch by Jan Karlsson, reviewed by Brandon Williams for CASSANDRA-8125


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

Branch: refs/heads/cassandra-2.1
Commit: fe8e92f8f1ff3adec119c8eb219e024886561196
Parents: 02fa2fd
Author: Brandon Williams <brandonwilli...@apache.org>
Authored: Mon Nov 3 14:59:56 2014 -0600
Committer: Brandon Williams <brandonwilli...@apache.org>
Committed: Mon Nov 3 14:59:56 2014 -0600

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 .../org/apache/cassandra/service/StorageService.java  |  6 ++++++
 .../apache/cassandra/service/StorageServiceMBean.java |  3 +++
 src/java/org/apache/cassandra/tools/NodeProbe.java    |  5 +++++
 src/java/org/apache/cassandra/tools/NodeTool.java     | 14 ++++++++++++++
 5 files changed, 29 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/fe8e92f8/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 50a540f..b1a8439 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -13,6 +13,7 @@
  * Fix CREATE TABLE for CQL2 (CASSANDRA-8144)
  * Avoid boxing in ColumnStats min/max trackers (CASSANDRA-8109)
 Merged from 2.0:
+ * Add 'nodetool statusgossip' (CASSANDRA-8125)
  * Improve client notification that nodes are ready for requests 
(CASSANDRA-7510)
  * Handle negative timestamp in writetime method (CASSANDRA-8139)
  * Pig: Remove errant LIMIT clause in CqlNativeStorage (CASSANDRA-8166)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/fe8e92f8/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 84a6c14..a49dfc3 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -306,6 +306,12 @@ public class StorageService extends 
NotificationBroadcasterSupport implements IE
     }
 
     // should only be called via JMX
+    public boolean isGossipRunning()
+    {
+        return Gossiper.instance.isEnabled();
+    }
+
+    // should only be called via JMX
     public void startRPCServer()
     {
         if (daemon == null)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/fe8e92f8/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 8bb13ae..8ae44ff 100644
--- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
@@ -398,6 +398,9 @@ public interface StorageServiceMBean extends 
NotificationEmitter
     // allows a user to recover a forcibly 'killed' node
     public void startGossiping();
 
+    // allows a user to see whether gossip is running or not
+    public boolean isGossipRunning();
+
     // allows a user to forcibly completely stop cassandra
     public void stopDaemon();
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/fe8e92f8/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 7faec72..d495786 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -829,6 +829,11 @@ public class NodeProbe implements AutoCloseable
         ssProxy.startGossiping();
     }
 
+    public boolean isGossipRunning()
+    {
+        return ssProxy.isGossipRunning();
+    }
+
     public void stopThriftServer()
     {
         ssProxy.stopRPCServer();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/fe8e92f8/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 d5180f0..39bc4fd 100644
--- a/src/java/org/apache/cassandra/tools/NodeTool.java
+++ b/src/java/org/apache/cassandra/tools/NodeTool.java
@@ -127,6 +127,7 @@ public class NodeTool
                 ListSnapshots.class,
                 Status.class,
                 StatusBinary.class,
+                StatusGossip.class,
                 StatusThrift.class,
                 Stop.class,
                 StopDaemon.class,
@@ -2136,6 +2137,19 @@ public class NodeTool
         }
     }
 
+    @Command(name = "statusgossip", description = "Status of gossip")
+    public static class StatusGossip extends NodeToolCmd
+    {
+        @Override
+        public void execute(NodeProbe probe)
+        {
+            System.out.println(
+                    probe.isGossipRunning()
+                    ? "running"
+                    : "not running");
+        }
+    }
+
     @Command(name = "statusthrift", description = "Status of thrift server")
     public static class StatusThrift extends NodeToolCmd
     {

Reply via email to