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 2011/06/24 14:09:29 UTC
svn commit: r1139264 - in /cassandra/branches/cassandra-0.8: ./
src/java/org/apache/cassandra/service/ src/java/org/apache/cassandra/tools/
Author: jbellis
Date: Fri Jun 24 12:09:28 2011
New Revision: 1139264
URL: http://svn.apache.org/viewvc?rev=1139264&view=rev
Log:
add "nodetool endpoints"
patch by Patricio Echague; reviewed by jbellis for CASSANDRA-2776
Modified:
cassandra/branches/cassandra-0.8/CHANGES.txt
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageService.java
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageServiceMBean.java
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/NodeCmd.java
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/NodeProbe.java
Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1139264&r1=1139263&r2=1139264&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Fri Jun 24 12:09:28 2011
@@ -78,6 +78,7 @@
* Fix wrong purge of deleted cf during compaction (CASSANDRA-2786)
* Expose number of threads blocked on submitting memtable to flush
(CASSANDRA-2817)
+ * add ability to return "endpoints" to nodetool (CASSANDRA-2776)
0.8.0-final
Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageService.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageService.java?rev=1139264&r1=1139263&r2=1139264&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageService.java (original)
+++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageService.java Fri Jun 24 12:09:28 2011
@@ -1599,12 +1599,15 @@ public class StorageService implements I
* This method returns the N endpoints that are responsible for storing the
* specified key i.e for replication.
*
+ * @param table keyspace name also known as table
+ * @param cf Column family name
* @param key - key for which we need to find the endpoint return value -
* the endpoint responsible for this key
*/
- public List<InetAddress> getNaturalEndpoints(String table, byte[] key)
+ public List<InetAddress> getNaturalEndpoints(String table, String cf, String key)
{
- return getNaturalEndpoints(table, partitioner.getToken(ByteBuffer.wrap(key)));
+ CFMetaData cfMetaData = DatabaseDescriptor.getTableDefinition(table).cfMetaData().get(cf);
+ return getNaturalEndpoints(table, partitioner.getToken(cfMetaData.getKeyValidator().fromString(key)));
}
public List<InetAddress> getNaturalEndpoints(String table, ByteBuffer key)
Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageServiceMBean.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageServiceMBean.java?rev=1139264&r1=1139263&r2=1139264&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageServiceMBean.java (original)
+++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/StorageServiceMBean.java Fri Jun 24 12:09:28 2011
@@ -130,10 +130,12 @@ public interface StorageServiceMBean
* This method returns the N endpoints that are responsible for storing the
* specified key i.e for replication.
*
+ * @param table keyspace name also known as table
+ * @param cf Column family name
* @param key - key for which we need to find the endpoint return value -
* the endpoint responsible for this key
*/
- public List<InetAddress> getNaturalEndpoints(String table, byte[] key);
+ public List<InetAddress> getNaturalEndpoints(String table, String cf, String key);
public List<InetAddress> getNaturalEndpoints(String table, ByteBuffer key);
/**
Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/NodeCmd.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/NodeCmd.java?rev=1139264&r1=1139263&r2=1139264&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/NodeCmd.java (original)
+++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/NodeCmd.java Fri Jun 24 12:09:28 2011
@@ -80,7 +80,7 @@ public class NodeCmd
DECOMMISSION, MOVE, REMOVETOKEN, REPAIR, CLEANUP, COMPACT, SCRUB,
SETCACHECAPACITY, GETCOMPACTIONTHRESHOLD, SETCOMPACTIONTHRESHOLD, NETSTATS, CFHISTOGRAMS,
COMPACTIONSTATS, DISABLEGOSSIP, ENABLEGOSSIP, INVALIDATEKEYCACHE, INVALIDATEROWCACHE,
- DISABLETHRIFT, ENABLETHRIFT, STATUSTHRIFT, JOIN, SETCOMPACTIONTHROUGHPUT
+ DISABLETHRIFT, ENABLETHRIFT, STATUSTHRIFT, JOIN, SETCOMPACTIONTHROUGHPUT, GETENDPOINTS
}
@@ -127,6 +127,9 @@ public class NodeCmd
addCmdHelp(header, "getcompactionthreshold <keyspace> <cfname>", "Print min and max compaction thresholds for a given column family");
addCmdHelp(header, "cfhistograms <keyspace> <cfname>", "Print statistic histograms for a given column family");
+ // Three args
+ addCmdHelp(header, "getendpoints <keyspace> <cf> <key>", "Print the end points that owns the key");
+
// Four args
addCmdHelp(header, "setcachecapacity <keyspace> <cfname> <keycachecapacity> <rowcachecapacity>", "Set the key and row cache capacities of a given column family");
addCmdHelp(header, "setcompactionthreshold <keyspace> <cfname> <minthreshold> <maxthreshold>", "Set the min and max compaction thresholds for a given column family");
@@ -520,6 +523,16 @@ public class NodeCmd
}
}
+ private void printEndPoints(String keySpace, String cf, String key, PrintStream output)
+ {
+ List<InetAddress> endpoints = this.probe.getEndpoints(keySpace, cf, key);
+
+ for (InetAddress anEndpoint : endpoints)
+ {
+ output.println(anEndpoint.getHostAddress());
+ }
+ }
+
private void printIsThriftServerRunning(PrintStream outs)
{
outs.println(probe.isThriftServerRunning() ? "running" : "not running");
@@ -678,6 +691,11 @@ public class NodeCmd
probe.setCompactionThreshold(arguments[0], arguments[1], minthreshold, maxthreshold);
break;
+ case GETENDPOINTS :
+ if (arguments.length != 3) { badUse("getendpoints requires ks, cf and key args"); }
+ nodeCmd.printEndPoints(arguments[0], arguments[1], arguments[2], System.out);
+ break;
+
default :
throw new RuntimeException("Unreachable code.");
Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/NodeProbe.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/NodeProbe.java?rev=1139264&r1=1139263&r2=1139264&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/NodeProbe.java (original)
+++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/tools/NodeProbe.java Fri Jun 24 12:09:28 2011
@@ -43,7 +43,10 @@ import com.google.common.collect.Iterabl
import org.apache.cassandra.cache.InstrumentingCacheMBean;
import org.apache.cassandra.concurrent.JMXEnabledThreadPoolExecutorMBean;
+import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.ConfigurationException;
+import org.apache.cassandra.config.DatabaseDescriptor;
+import org.apache.cassandra.config.KSMetaData;
import org.apache.cassandra.db.ColumnFamilyStoreMBean;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.compaction.CompactionManagerMBean;
@@ -437,10 +440,9 @@ public class NodeProbe
}
}
- public List<InetAddress> getEndpoints(String keyspace, String key)
+ public List<InetAddress> getEndpoints(String keyspace, String cf, String key)
{
- // FIXME: string key
- return ssProxy.getNaturalEndpoints(keyspace, key.getBytes(UTF_8));
+ return ssProxy.getNaturalEndpoints(keyspace, cf, key);
}
public Set<InetAddress> getStreamDestinations()