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;