Author: xedin Date: Wed Dec 7 21:19:32 2011 New Revision: 1211639 URL: http://svn.apache.org/viewvc?rev=1211639&view=rev Log: merge from 1.0
Modified: cassandra/trunk/ (props changed) cassandra/trunk/CHANGES.txt cassandra/trunk/contrib/ (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java (props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java (props changed) cassandra/trunk/src/java/org/apache/cassandra/cli/Cli.g cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java cassandra/trunk/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java cassandra/trunk/src/resources/org/apache/cassandra/cli/CliHelp.yaml Propchange: cassandra/trunk/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Dec 7 21:19:32 2011 @@ -4,7 +4,7 @@ /cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1198724,1198726-1206097,1206099-1209609,1210902,1211000,1211486 /cassandra/branches/cassandra-0.8.0:1125021-1130369 /cassandra/branches/cassandra-0.8.1:1101014-1125018 -/cassandra/branches/cassandra-1.0:1167085-1211288,1211295,1211299,1211491,1211551 +/cassandra/branches/cassandra-1.0:1167085-1211632 /cassandra/branches/cassandra-1.0.0:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1:1102511-1125020 Modified: cassandra/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1211639&r1=1211638&r2=1211639&view=diff ============================================================================== --- cassandra/trunk/CHANGES.txt (original) +++ cassandra/trunk/CHANGES.txt Wed Dec 7 21:19:32 2011 @@ -41,10 +41,11 @@ * fix compression "chunk_length_kb" option to set correct kb value for thrift/avro (CASSANDRA-3558) * fix missing response during range slice repair (CASSANDRA-3551) + * 'describe ring' moved from CLI to nodetool and available through JMX (CASSANDRA-3220) Merged from 0.8: * use cannonical host for local node in nodetool info (CASSANDRA-3556) * detect misuses of CounterColumnType (CASSANDRA-3422) - + * Check for 0.0.0.0 is incorrect in CFIF (CASSANDRA-3584) 1.0.5 * revert CASSANDRA-3407 (see CASSANDRA-3540) Propchange: cassandra/trunk/contrib/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Dec 7 21:19:32 2011 @@ -4,7 +4,7 @@ /cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1198724,1198726-1206097,1206099-1209609,1210902,1211000,1211486 /cassandra/branches/cassandra-0.8.0/contrib:1125021-1130369 /cassandra/branches/cassandra-0.8.1/contrib:1101014-1125018 -/cassandra/branches/cassandra-1.0/contrib:1167085-1211288,1211295,1211299,1211491,1211551 +/cassandra/branches/cassandra-1.0/contrib:1167085-1211632 /cassandra/branches/cassandra-1.0.0/contrib:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243 /cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1/contrib:1102511-1125020 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Dec 7 21:19:32 2011 @@ -4,7 +4,7 @@ /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1198724,1198726-1206097,1206099-1209609,1210902,1211000,1211486 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1125021-1130369 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1101014-1125018 -/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167085-1211288,1211295,1211299,1211491,1211551 +/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167085-1211632 /cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1102511-1125020 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Dec 7 21:19:32 2011 @@ -4,7 +4,7 @@ /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1198724,1198726-1206097,1206099-1209609,1210902,1211000,1211486 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1125021-1130369 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1101014-1125018 -/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167085-1211288,1211295,1211299,1211491,1211551 +/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167085-1211632 /cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1102511-1125020 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Dec 7 21:19:32 2011 @@ -4,7 +4,7 @@ /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1198724,1198726-1206097,1206099-1209609,1210902,1211000,1211486 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1125021-1130369 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1101014-1125018 -/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167085-1211288,1211295,1211299,1211491,1211551 +/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167085-1211632 /cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1102511-1125020 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Dec 7 21:19:32 2011 @@ -4,7 +4,7 @@ /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1198724,1198726-1206097,1206099-1209609,1210902,1211000,1211486 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1125021-1130369 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1101014-1125018 -/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167085-1211288,1211295,1211299,1211491,1211551 +/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167085-1211632 /cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1102511-1125020 Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Dec 7 21:19:32 2011 @@ -4,7 +4,7 @@ /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1198724,1198726-1206097,1206099-1209609,1210902,1211000,1211486 /cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1125021-1130369 /cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1101014-1125018 -/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167085-1211288,1211295,1211299,1211491,1211551 +/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167085-1211632 /cassandra/branches/cassandra-1.0.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1167104-1167229,1167232-1181093,1181741,1181816,1181820,1182951,1183243 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1102511-1125020 Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/Cli.g URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/Cli.g?rev=1211639&r1=1211638&r2=1211639&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/cli/Cli.g (original) +++ cassandra/trunk/src/java/org/apache/cassandra/cli/Cli.g Wed Dec 7 21:19:32 2011 @@ -63,7 +63,6 @@ tokens { NODE_ASSUME; NODE_CONSISTENCY_LEVEL; NODE_DROP_INDEX; - NODE_DESCRIBE_RING; // Internal Nodes. NODE_COLUMN_ACCESS; @@ -164,7 +163,6 @@ statement | assumeStatement | consistencyLevelStatement | dropIndex - | describeRing | -> ^(NODE_NO_OP) ; @@ -212,8 +210,6 @@ helpStatement -> ^(NODE_HELP NODE_DEL_COLUMN_FAMILY) | HELP DROP INDEX -> ^(NODE_HELP NODE_DROP_INDEX) - | HELP DESCRIBE RING - -> ^(NODE_HELP NODE_DESCRIBE_RING) | HELP GET -> ^(NODE_HELP NODE_THRIFT_GET) | HELP SET @@ -354,11 +350,6 @@ dropIndex -> ^(NODE_DROP_INDEX columnFamily columnName) ; -describeRing - : DESCRIBE RING (keyspace)? - -> ^(NODE_DESCRIBE_RING (keyspace)?) - ; - showVersion : SHOW API_VERSION -> ^(NODE_SHOW_VERSION) @@ -589,7 +580,6 @@ CONSISTENCYLEVEL: 'CONSISTENCYLEVEL'; INDEX: 'INDEX'; ON: 'ON'; SCHEMA: 'SCHEMA'; -RING: 'RING'; IP_ADDRESS : IntegerPositiveLiteral '.' IntegerPositiveLiteral '.' IntegerPositiveLiteral '.' IntegerPositiveLiteral Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java?rev=1211639&r1=1211638&r2=1211639&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Wed Dec 7 21:19:32 2011 @@ -284,9 +284,6 @@ public class CliClient case CliParser.NODE_DROP_INDEX: executeDropIndex(tree); break; - case CliParser.NODE_DESCRIBE_RING: - executeDescribeRing(tree); - break; case CliParser.NODE_NO_OP: // comment lines come here; they are treated as no ops. @@ -1433,59 +1430,6 @@ public class CliClient keyspacesMap.put(keySpace, thriftClient.describe_keyspace(keySpace)); } - private void executeDescribeRing(Tree statement) throws TException, InvalidRequestException - { - if (!CliMain.isConnected()) - return; - - int argCount = statement.getChildCount(); - - if (argCount > 1) // in case somebody changes Cli grammar - throw new RuntimeException("`describe ring` command takes maximum one argument. See `help describe ring;`"); - - KsDef currentKeySpace = keyspacesMap.get(keySpace); - - if (argCount == 0 && currentKeySpace != null) - { - describeRing(currentKeySpace.name); - } - else if (argCount == 1) - { - String entityName = statement.getChild(0).getText(); - KsDef inputKsDef = CliUtils.getKeySpaceDef(entityName, thriftClient.describe_keyspaces()); - - if (inputKsDef == null) - { - sessionState.out.println("Sorry, no Keyspace was found with name: " + entityName); - return; - } - - describeRing(inputKsDef.name); - } - else - { - sessionState.out.println("Authenticate to a Keyspace before using `describe ring` or `describe ring <keyspace>`"); - } - } - - private void describeRing(String name) throws TException - { - List<TokenRange> tokenRangeList; - - try - { - for (TokenRange tokenRange : thriftClient.describe_ring(name)) - sessionState.out.println(tokenRange); - } - catch (InvalidRequestException e) - { - sessionState.err.println(e.getWhy()); - - if (sessionState.debug) - e.printStackTrace(sessionState.err); - } - } - // TRUNCATE <columnFamily> private void executeTruncate(String columnFamily) throws TException, InvalidRequestException, UnavailableException { Modified: cassandra/trunk/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java?rev=1211639&r1=1211638&r2=1211639&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java Wed Dec 7 21:19:32 2011 @@ -212,7 +212,7 @@ public class ColumnFamilyInputFormat ext for (String endpoint: range.rpc_endpoints) { String endpoint_address = endpoint; - if(endpoint_address == null || endpoint_address == "0.0.0.0") + if (endpoint_address == null || endpoint_address.equals("0.0.0.0")) endpoint_address = range.endpoints.get(endpointIndex); endpoints[endpointIndex++] = InetAddress.getByName(endpoint_address).getHostName(); } @@ -230,8 +230,13 @@ public class ColumnFamilyInputFormat ext private List<String> getSubSplits(String keyspace, String cfName, TokenRange range, Configuration conf) throws IOException { int splitsize = ConfigHelper.getInputSplitSize(conf); - for (String host : range.rpc_endpoints) + for (int i = 0; i < range.rpc_endpoints.size(); i++) { + String host = range.rpc_endpoints.get(i); + + if (host == null || host.equals("0.0.0.0")) + host = range.endpoints.get(i); + try { Cassandra.Client client = ConfigHelper.createConnection(host, ConfigHelper.getRpcPort(conf), true); Modified: cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=1211639&r1=1211638&r2=1211639&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java Wed Dec 7 21:19:32 2011 @@ -60,6 +60,9 @@ import org.apache.cassandra.net.Response import org.apache.cassandra.service.AntiEntropyService.TreeRequestVerbHandler; import org.apache.cassandra.streaming.*; import org.apache.cassandra.thrift.Constants; +import org.apache.cassandra.thrift.EndpointDetails; +import org.apache.cassandra.thrift.InvalidRequestException; +import org.apache.cassandra.thrift.TokenRange; import org.apache.cassandra.thrift.UnavailableException; import org.apache.cassandra.utils.FBUtilities; import org.apache.cassandra.utils.NodeId; @@ -744,6 +747,72 @@ public class StorageService implements I return constructRangeToEndpointMap(keyspace, ranges); } + /** + * The same as {@code describeRing(String)} but converts TokenRange to the String for JMX compatibility + * + * @param keyspace The keyspace to fetch information about + * + * @return a List of TokenRange(s) converted to String for the given keyspace + * + * @throws InvalidRequestException if there is no ring information available about keyspace + */ + public List<String> describeRingJMX(String keyspace) throws InvalidRequestException + { + List<String> result = new ArrayList<String>(); + + for (TokenRange tokenRange : describeRing(keyspace)) + result.add(tokenRange.toString()); + + return result; + } + + /** + * The TokenRange for a given keyspace. + * + * @param keyspace The keyspace to fetch information about + * + * @return a List of TokenRange(s) for the given keyspace + * + * @throws InvalidRequestException if there is no ring information available about keyspace + */ + public List<TokenRange> describeRing(String keyspace) throws InvalidRequestException + { + if (keyspace == null || !Schema.instance.getNonSystemTables().contains(keyspace)) + throw new InvalidRequestException("There is no ring for the keyspace: " + keyspace); + + List<TokenRange> ranges = new ArrayList<TokenRange>(); + Token.TokenFactory tf = getPartitioner().getTokenFactory(); + + for (Map.Entry<Range<Token>, List<InetAddress>> entry : getRangeToAddressMap(keyspace).entrySet()) + { + Range range = entry.getKey(); + List<String> endpoints = new ArrayList<String>(); + List<String> rpc_endpoints = new ArrayList<String>(); + List<EndpointDetails> epDetails = new ArrayList<EndpointDetails>(); + + for (InetAddress endpoint : entry.getValue()) + { + EndpointDetails details = new EndpointDetails(); + details.host = endpoint.getHostAddress(); + details.datacenter = DatabaseDescriptor.getEndpointSnitch().getDatacenter(endpoint); + details.rack = DatabaseDescriptor.getEndpointSnitch().getRack(endpoint); + + endpoints.add(details.host); + rpc_endpoints.add(getRpcaddress(endpoint)); + + epDetails.add(details); + } + + TokenRange tr = new TokenRange(tf.toString(range.left.getToken()), tf.toString(range.right.getToken()), endpoints) + .setEndpoint_details(epDetails) + .setRpc_endpoints(rpc_endpoints); + + ranges.add(tr); + } + + return ranges; + } + public Map<Token, String> getTokenToEndpointMap() { Map<Token, InetAddress> mapInetAddress = tokenMetadata_.getTokenToEndpointMap(); Modified: cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java?rev=1211639&r1=1211638&r2=1211639&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java Wed Dec 7 21:19:32 2011 @@ -30,6 +30,8 @@ import java.util.concurrent.TimeoutExcep import org.apache.cassandra.config.ConfigurationException; import org.apache.cassandra.dht.Range; import org.apache.cassandra.dht.Token; +import org.apache.cassandra.thrift.InvalidRequestException; +import org.apache.cassandra.thrift.TokenRange; import org.apache.cassandra.thrift.UnavailableException; @@ -127,6 +129,17 @@ public interface StorageServiceMBean public Map<Range<Token>, List<String>> getRangeToRpcaddressMap(String keyspace); /** + * The same as {@code describeRing(String)} but converts TokenRange to the String for JMX compatibility + * + * @param keyspace The keyspace to fetch information about + * + * @return a List of TokenRange(s) converted to String for the given keyspace + * + * @throws InvalidRequestException if there is no ring information available about keyspace + */ + public List <String> describeRingJMX(String keyspace) throws InvalidRequestException; + + /** * Retrieve a map of pending ranges to endpoints that describe the ring topology * @param keyspace the keyspace to get the pending range map for. * @return a map of pending ranges to endpoints Modified: cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java?rev=1211639&r1=1211638&r2=1211639&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java Wed Dec 7 21:19:32 2011 @@ -20,7 +20,6 @@ package org.apache.cassandra.thrift; import java.io.IOException; import java.io.UnsupportedEncodingException; -import java.net.InetAddress; import java.net.SocketAddress; import java.nio.ByteBuffer; import java.nio.charset.CharacterCodingException; @@ -49,10 +48,6 @@ import org.apache.cassandra.db.marshal.M import org.apache.cassandra.db.migration.*; import org.apache.cassandra.db.context.CounterContext; import org.apache.cassandra.dht.*; -import org.apache.cassandra.gms.ApplicationState; -import org.apache.cassandra.gms.EndpointState; -import org.apache.cassandra.gms.Gossiper; -import org.apache.cassandra.gms.VersionedValue; import org.apache.cassandra.io.util.FastByteArrayOutputStream; import org.apache.cassandra.locator.*; import org.apache.cassandra.scheduler.IRequestScheduler; @@ -61,7 +56,6 @@ import org.apache.cassandra.service.Sock import org.apache.cassandra.service.StorageProxy; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.utils.ByteBufferUtil; -import org.apache.cassandra.utils.FBUtilities; import org.apache.thrift.TException; public class CassandraServer implements Cassandra.Iface @@ -783,41 +777,7 @@ public class CassandraServer implements public List<TokenRange> describe_ring(String keyspace)throws InvalidRequestException { - if (keyspace == null || !Schema.instance.getNonSystemTables().contains(keyspace)) - throw new InvalidRequestException("There is no ring for the keyspace: " + keyspace); - - List<TokenRange> ranges = new ArrayList<TokenRange>(); - Token.TokenFactory tf = StorageService.getPartitioner().getTokenFactory(); - - for (Map.Entry<Range<Token>, List<InetAddress>> entry : StorageService.instance.getRangeToAddressMap(keyspace).entrySet()) - { - Range<Token> range = entry.getKey(); - List<String> endpoints = new ArrayList<String>(); - List<String> rpc_endpoints = new ArrayList<String>(); - List<EndpointDetails> epDetails = new ArrayList<EndpointDetails>(); - - for (InetAddress endpoint : entry.getValue()) - { - EndpointState eps = Gossiper.instance.getEndpointStateForEndpoint(endpoint); - EndpointDetails details = new EndpointDetails(); - - details.host = endpoint.getHostAddress(); - details.datacenter = DatabaseDescriptor.getEndpointSnitch().getDatacenter(endpoint); - details.rack = DatabaseDescriptor.getEndpointSnitch().getRack(endpoint); - - endpoints.add(details.host); - rpc_endpoints.add(StorageService.instance.getRpcaddress(endpoint)); - - epDetails.add(details); - } - - TokenRange tr = new TokenRange(tf.toString(range.left), tf.toString(range.right), endpoints) - .setEndpoint_details(epDetails) - .setRpc_endpoints(rpc_endpoints); - ranges.add(tr); - } - - return ranges; + return StorageService.instance.describeRing(keyspace); } public String describe_partitioner() throws TException Modified: cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java?rev=1211639&r1=1211638&r2=1211639&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java Wed Dec 7 21:19:32 2011 @@ -41,6 +41,7 @@ import org.apache.cassandra.db.compactio import org.apache.cassandra.db.compaction.CompactionManagerMBean; import org.apache.cassandra.dht.Token; import org.apache.cassandra.net.MessagingServiceMBean; +import org.apache.cassandra.thrift.InvalidRequestException; import org.apache.cassandra.utils.EstimatedHistogram; import org.apache.cassandra.utils.Pair; @@ -113,6 +114,7 @@ public class NodeCmd TPSTATS, UPGRADESSTABLES, VERSION, + DESCRIBERING, } @@ -146,6 +148,7 @@ public class NodeCmd addCmdHelp(header, "move <new token>", "Move node on the token ring to a new token"); addCmdHelp(header, "removetoken status|force|<token>", "Show status of current token removal, force completion of pending removal or remove providen token"); addCmdHelp(header, "setcompactionthroughput <value_in_mb>", "Set the MB/s throughput cap for compaction in the system, or 0 to disable throttling."); + addCmdHelp(header, "describering [keyspace]", "Shows the token ranges info of a given keyspace."); // Two args addCmdHelp(header, "snapshot [keyspaces...] -t [snapshotName]", "Take a snapshot of the specified keyspaces using optional name snapshotName"); @@ -753,6 +756,11 @@ public class NodeCmd probe.stop(arguments[0].toUpperCase()); break; + case DESCRIBERING : + if (arguments.length != 1) { badUse("Missing keyspace argument for describering."); } + nodeCmd.printDescribeRing(arguments[0], System.out); + break; + default : throw new RuntimeException("Unreachable code."); } @@ -774,6 +782,22 @@ public class NodeCmd System.exit(0); } + private void printDescribeRing(String keyspaceName, PrintStream out) + { + out.println("TokenRange: "); + try + { + for (String tokenRangeString : probe.describeRing(keyspaceName)) + { + out.println("\t" + tokenRangeString); + } + } + catch (InvalidRequestException e) + { + err(e, e.getWhy()); + } + } + private void printGossipInfo(PrintStream out) { out.println(probe.getGossipInfo()); } Modified: cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java?rev=1211639&r1=1211638&r2=1211639&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java Wed Dec 7 21:19:32 2011 @@ -55,8 +55,8 @@ import org.apache.cassandra.net.Messagin import org.apache.cassandra.service.StorageServiceMBean; import org.apache.cassandra.streaming.StreamingService; import org.apache.cassandra.streaming.StreamingServiceMBean; +import org.apache.cassandra.thrift.InvalidRequestException; import org.apache.cassandra.thrift.UnavailableException; -import org.apache.cassandra.utils.Pair; /** * JMX client operations for Cassandra. @@ -640,6 +640,11 @@ public class NodeProbe { compactionProxy.stopCompaction(string); } + + public List<String> describeRing(String keyspaceName) throws InvalidRequestException + { + return ssProxy.describeRingJMX(keyspaceName); + } } class ColumnFamilyStoreMBeanIterator implements Iterator<Map.Entry<String, ColumnFamilyStoreMBean>> Modified: cassandra/trunk/src/resources/org/apache/cassandra/cli/CliHelp.yaml URL: http://svn.apache.org/viewvc/cassandra/trunk/src/resources/org/apache/cassandra/cli/CliHelp.yaml?rev=1211639&r1=1211638&r2=1211639&view=diff ============================================================================== --- cassandra/trunk/src/resources/org/apache/cassandra/cli/CliHelp.yaml (original) +++ cassandra/trunk/src/resources/org/apache/cassandra/cli/CliHelp.yaml Wed Dec 7 21:19:32 2011 @@ -38,7 +38,6 @@ help: | create keyspace Add a keyspace to the cluster. del Delete a column, super column or row. decr Decrements a counter column. - describe ring Describe the token range information. describe cluster Describe the cluster configuration. describe Describe a keyspace and it's column families or column family in current keyspace. drop column family Remove a column family and it's data. @@ -131,18 +130,6 @@ commands: describe; - Describes current authenticated keyspace describe <keyspace>; - Describe this keyspace describe <column_family>; - Describe the colum family in the current authenticated keyspace - - name: NODE_DESCRIBE_RING - help: | - describe ring <keyspace>; - - Describes the token range settings for the named keyspace. - - Optional Parameters: - - keyspace: Name of the keyspace to describe. - - Examples: - describe ring; - Describes the token range settings for the current authenticated keyspace - describe <keyspace>; - Describe the token range settings for this keyspace - name: help: | describe cluster;