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()