You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2011/01/03 23:22:13 UTC
svn commit: r1054808 - in /cassandra/branches/cassandra-0.7: ./
src/java/org/apache/cassandra/service/ src/java/org/apache/cassandra/tools/
Author: brandonwilliams
Date: Mon Jan 3 22:22:13 2011
New Revision: 1054808
URL: http://svn.apache.org/viewvc?rev=1054808&view=rev
Log:
ability to forcibly mark machines failed by disabling gossip via JMX.
Patch by brandonwilliams, reviewed by jbellis for CASSANDRA-1108
Modified:
cassandra/branches/cassandra-0.7/CHANGES.txt
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageServiceMBean.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeCmd.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeProbe.java
Modified: cassandra/branches/cassandra-0.7/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1054808&r1=1054807&r2=1054808&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.7/CHANGES.txt Mon Jan 3 22:22:13 2011
@@ -30,6 +30,8 @@ dev
* include secondary indexes in cleanup (CASSANDRA-1916)
* CFS.scrubDataDirectories should also cleanup invalid secondary indexes
(CASSANDRA-1904)
+ * ability to disable/enable gossip on nodes to force them down
+ (CASSANDRA-1108)
0.7.0-rc3
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java?rev=1054808&r1=1054807&r2=1054808&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java Mon Jan 3 22:22:13 2011
@@ -246,6 +246,28 @@ public class StorageService implements I
throw new RuntimeException("Streaming service is unavailable.");
}
+ // should only be called via JMX
+ public void stopGossiping()
+ {
+ if (initialized)
+ {
+ logger_.warn("Stopping gossip by operator request");
+ Gossiper.instance.stop();
+ initialized = false;
+ }
+ }
+
+ // should only be called via JMX
+ public void startGossiping()
+ {
+ if (!initialized)
+ {
+ logger_.warn("Starting gossip by operator request");
+ Gossiper.instance.start(FBUtilities.getLocalAddress(), (int)(System.currentTimeMillis() / 1000));
+ initialized = true;
+ }
+ }
+
public void stopClient()
{
Gossiper.instance.unregister(migrationManager);
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageServiceMBean.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageServiceMBean.java?rev=1054808&r1=1054807&r2=1054808&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageServiceMBean.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageServiceMBean.java Mon Jan 3 22:22:13 2011
@@ -270,4 +270,13 @@ public interface StorageServiceMBean
* @throws ConfigurationException classname not found on classpath
*/
public void updateSnitch(String epSnitchClassName, Boolean dynamic, Integer dynamicUpdateInterval, Integer dynamicResetInterval, Double dynamicBadnessThreshold) throws ConfigurationException;
+
+ // allows a user to forcibly 'kill' a sick node
+ public void stopGossiping();
+
+ // allows a user to recover a forcibly 'killed' node
+ public void startGossiping();
+
+ // to determine if gossip is disabled
+ public boolean isInitialized();
}
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeCmd.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeCmd.java?rev=1054808&r1=1054807&r2=1054808&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeCmd.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeCmd.java Mon Jan 3 22:22:13 2011
@@ -74,7 +74,7 @@ public class NodeCmd {
RING, INFO, CFSTATS, SNAPSHOT, CLEARSNAPSHOT, VERSION, TPSTATS, FLUSH, DRAIN,
DECOMMISSION, MOVE, LOADBALANCE, REMOVETOKEN, REPAIR, CLEANUP, COMPACT,
SETCACHECAPACITY, GETCOMPACTIONTHRESHOLD, SETCOMPACTIONTHRESHOLD, NETSTATS, CFHISTOGRAMS,
- COMPACTIONSTATS
+ COMPACTIONSTATS, DISABLEGOSSIP, ENABLEGOSSIP
}
@@ -96,6 +96,8 @@ public class NodeCmd {
+ "decommission\n"
+ "loadbalance\n"
+ "compactionstats\n"
+ + "disablegossip\n"
+ + "enablegossip\n"
// One arg
+ "snapshot [snapshotname]\n"
@@ -189,6 +191,7 @@ public class NodeCmd {
public void printInfo(PrintStream outs)
{
outs.println(probe.getToken());
+ outs.printf("%-17s: %s%n", "Gossip active", probe.isInitialized());
outs.printf("%-17s: %s%n", "Load", probe.getLoadString());
outs.printf("%-17s: %s%n", "Generation No", probe.getCurrentGenerationNumber());
@@ -519,6 +522,8 @@ public class NodeCmd {
case TPSTATS : nodeCmd.printThreadPoolStats(System.out); break;
case VERSION : nodeCmd.printReleaseVersion(System.out); break;
case COMPACTIONSTATS : nodeCmd.printCompactionStats(System.out); break;
+ case DISABLEGOSSIP : probe.stopGossiping(); break;
+ case ENABLEGOSSIP : probe.startGossiping(); break;
case DRAIN :
try { probe.drain(); }
Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeProbe.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeProbe.java?rev=1054808&r1=1054807&r2=1054808&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeProbe.java (original)
+++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/tools/NodeProbe.java Mon Jan 3 22:22:13 2011
@@ -503,6 +503,21 @@ public class NodeProbe
{
return ssProxy.getKeyspaces();
}
+
+ public void stopGossiping()
+ {
+ ssProxy.stopGossiping();
+ }
+
+ public void startGossiping()
+ {
+ ssProxy.startGossiping();
+ }
+
+ public boolean isInitialized()
+ {
+ return ssProxy.isInitialized();
+ }
}
class ColumnFamilyStoreMBeanIterator implements Iterator<Map.Entry<String, ColumnFamilyStoreMBean>>