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 2009/10/07 18:23:20 UTC
svn commit: r822790 - in
/incubator/cassandra/trunk/src/java/org/apache/cassandra: dht/Range.java
net/EndPoint.java service/StorageService.java
service/StorageServiceMBean.java tools/NodeProbe.java utils/FileUtils.java
Author: jbellis
Date: Wed Oct 7 16:23:20 2009
New Revision: 822790
URL: http://svn.apache.org/viewvc?rev=822790&view=rev
Log:
use Strings instead of Endpoints in jmx methods. merge cluster info into ring.
patch by jbellis; reviewed by Eric Evans for CASSANDRA-385
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/dht/Range.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/net/EndPoint.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/FileUtils.java
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/dht/Range.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/dht/Range.java?rev=822790&r1=822789&r2=822790&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/dht/Range.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/dht/Range.java Wed Oct 7 16:23:20 2009
@@ -23,10 +23,8 @@
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
-import java.math.BigInteger;
import org.apache.cassandra.io.ICompactSerializer;
-import org.apache.cassandra.service.StorageService;
/**
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/net/EndPoint.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/net/EndPoint.java?rev=822790&r1=822789&r2=822790&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/net/EndPoint.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/net/EndPoint.java Wed Oct 7 16:23:20 2009
@@ -19,7 +19,6 @@
package org.apache.cassandra.net;
-import java.io.IOException;
import java.io.Serializable;
import java.net.*;
import java.nio.ByteBuffer;
@@ -28,7 +27,6 @@
import java.util.Map;
import org.apache.cassandra.utils.FBUtilities;
-import org.apache.cassandra.utils.LogUtil;
import org.apache.log4j.Logger;
public class EndPoint implements Serializable, Comparable<EndPoint>
@@ -47,10 +45,10 @@
try
{
sentinelLocalEndPoint_ = new EndPoint(FBUtilities.getHostAddress(), EndPoint.sentinelPort_);
- }
- catch ( IOException ex )
+ }
+ catch (UnknownHostException e)
{
- logger_.warn(LogUtil.throwableToString(ex));
+ throw new AssertionError(e);
}
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=822790&r1=822789&r2=822790&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java Wed Oct 7 16:23:20 2009
@@ -357,13 +357,18 @@
consistencyManager_.submit(consistencySentinel);
}
- public Map<Range, List<EndPoint>> getRangeToEndPointMap()
+ public Map<Range, List<String>> getRangeToEndPointMap()
{
/* Get the token to endpoint map. */
Map<Token, EndPoint> tokenToEndPointMap = tokenMetadata_.cloneTokenEndPointMap();
/* All the ranges for the tokens */
Range[] ranges = getAllRanges(tokenToEndPointMap.keySet());
- return constructRangeToEndPointMap(ranges);
+ Map<Range, List<String>> map = new HashMap<Range, List<String>>();
+ for (Map.Entry<Range,List<EndPoint>> entry : constructRangeToEndPointMap(ranges).entrySet())
+ {
+ map.put(entry.getKey(), stringify(entry.getValue()));
+ }
+ return map;
}
/**
@@ -626,31 +631,39 @@
return tokenMetadata_.getToken(StorageService.tcpAddr_).toString();
}
- public String getLiveNodes()
+ public Set<String> getLiveNodes()
{
return stringify(Gossiper.instance().getLiveMembers());
}
- public String getUnreachableNodes()
+ public Set<String> getUnreachableNodes()
{
return stringify(Gossiper.instance().getUnreachableMembers());
}
-
- public int getCurrentGenerationNumber()
+
+ private Set<String> stringify(Set<EndPoint> endPoints)
{
- return Gossiper.instance().getCurrentGenerationNumber(udpAddr_);
+ Set<String> stringEndPoints = new HashSet<String>();
+ for (EndPoint ep : endPoints)
+ {
+ stringEndPoints.add(ep.getHost());
+ }
+ return stringEndPoints;
}
- /* Helper for the MBean interface */
- private String stringify(Set<EndPoint> eps)
+ private List<String> stringify(List<EndPoint> endPoints)
{
- StringBuilder sb = new StringBuilder("");
- for (EndPoint ep : eps)
+ List<String> stringEndPoints = new ArrayList<String>();
+ for (EndPoint ep : endPoints)
{
- sb.append(ep);
- sb.append(" ");
+ stringEndPoints.add(ep.getHost());
}
- return sb.toString();
+ return stringEndPoints;
+ }
+
+ public int getCurrentGenerationNumber()
+ {
+ return Gossiper.instance().getCurrentGenerationNumber(udpAddr_);
}
public void bootstrapNodes(String nodes) throws UnknownHostException
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java?rev=822790&r1=822789&r2=822790&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java Wed Oct 7 16:23:20 2009
@@ -22,6 +22,8 @@
import java.net.UnknownHostException;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+
import org.apache.cassandra.dht.Range;
import org.apache.cassandra.net.EndPoint;
@@ -30,21 +32,19 @@
{
/**
* Retrieve the list of live nodes in the cluster, where "liveness" is
- * determined by the failure detector of the node being queried. The
- * returned string is a space delimited list of host:port end points.
+ * determined by the failure detector of the node being queried.
*
- * @return space delimited list of nodes
+ * @return set of IP addresses, as Strings
*/
- public String getLiveNodes();
+ public Set<String> getLiveNodes();
/**
* Retrieve the list of unreachable nodes in the cluster, as determined
- * by this node's failure detector. The returned string is a space
- * delimited list of host:port end points.
+ * by this node's failure detector.
*
- * @return space delimited list of nodes
+ * @return set of IP addresses, as Strings
*/
- public String getUnreachableNodes();
+ public Set<String> getUnreachableNodes();
/**
* Fetch a string representation of the token.
@@ -59,7 +59,7 @@
*
* @return mapping of ranges to end points
*/
- public Map<Range, List<EndPoint>> getRangeToEndPointMap();
+ public Map<Range, List<String>> getRangeToEndPointMap();
/** Human-readable load value */
public String getLoadString();
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java?rev=822790&r1=822789&r2=822790&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java Wed Oct 7 16:23:20 2009
@@ -200,25 +200,37 @@
*/
public void printRing(PrintStream outs)
{
- Map<Range, List<EndPoint>> rangeMap = ssProxy.getRangeToEndPointMap();
+ Map<Range, List<String>> rangeMap = ssProxy.getRangeToEndPointMap();
List<Range> ranges = new ArrayList<Range>(rangeMap.keySet());
Collections.sort(ranges);
-
+ Set<String> liveNodes = ssProxy.getLiveNodes();
+ Set<String> deadNodes = ssProxy.getUnreachableNodes();
+
// Print range-to-endpoint mapping
int counter = 0;
- outs.print(String.format("%-46s ", "Starting Token"));
- outs.print(String.format("%-44s ", "Ending Token"));
- outs.print(String.format("%-4s ", "Size"));
- outs.print(String.format("%-15s", "Address"));
+ outs.print(String.format("%-14s", "Address"));
+ outs.print(String.format("%-11s", "Status"));
+ outs.print(String.format("%-43s", "Range"));
outs.println("Ring");
+ // emphasize that we're showing the right part of each range
+ if (ranges.size() > 1)
+ {
+ outs.println(String.format("%-14s%-11s%-43s", "", "", ranges.get(0).left()));
+ }
+ // normal range & node info
for (Range range : ranges) {
- List<EndPoint> endpoints = rangeMap.get(range);
-
- outs.print(String.format("%-46s ", range.left()));
- outs.print(String.format("%-46s ", range.right()));
- outs.print(String.format("%2d ", endpoints.size()));
- outs.print(String.format("%-15s", endpoints.get(0).getHost()));
-
+ List<String> endpoints = rangeMap.get(range);
+ String primaryEndpoint = endpoints.get(0);
+
+ outs.print(String.format("%-14s", primaryEndpoint));
+ String status = liveNodes.contains(primaryEndpoint)
+ ? "Up"
+ : deadNodes.contains(primaryEndpoint)
+ ? "Down"
+ : "?";
+ outs.print(String.format("%-11s", status));
+ outs.print(String.format("%-43s", range.right()));
+
String asciiRingArt;
if (counter == 0)
{
@@ -231,17 +243,11 @@
else
{
if ((rangeMap.size() > 4) && ((counter % 2) == 0))
- {
asciiRingArt = "v |";
- }
else if ((rangeMap.size() > 4) && ((counter % 2) != 0))
- {
asciiRingArt = "| ^";
- }
else
- {
asciiRingArt = "| |";
- }
}
outs.println(asciiRingArt);
@@ -333,30 +339,6 @@
}
/**
- * Write a list of nodes with corresponding status.
- *
- * @param outs the stream to write to
- */
- public void printCluster(PrintStream outs)
- {
- for (String upNode : ssProxy.getLiveNodes().split("\\s+"))
- {
- if (upNode.length() > 0)
- {
- outs.println(String.format("%-21s up", upNode));
- }
- }
-
- for (String downNode : ssProxy.getUnreachableNodes().split("\\s+"))
- {
- if (downNode.length() > 0)
- {
- outs.println(String.format("%-21s down", downNode));
- }
- }
- }
-
- /**
* Write node information.
*
* @param outs the stream to write to
@@ -523,10 +505,6 @@
{
probe.printRing(System.out);
}
- else if (cmdName.equals("cluster"))
- {
- probe.printCluster(System.out);
- }
else if (cmdName.equals("info"))
{
probe.printInfo(System.out);
@@ -562,11 +540,11 @@
{
probe.bootstrapNodes(arguments[1]);
}
- else
+ else
{
System.err.println(cmdName + " needs a node to work with");
NodeProbe.printUsage();
- System.exit(1);
+ System.exit(1);
}
}
else if (cmdName.equals("tpstats"))
@@ -584,7 +562,7 @@
probe.forceTableFlushBinary(probe.getArgs()[1]);
}
else if (cmdName.equals("getcompactionthreshold"))
- {
+ {
probe.getCompactionThreshold(System.out);
}
else if (cmdName.equals("setcompactionthreshold"))
@@ -598,7 +576,7 @@
int minthreshold = Integer.parseInt(arguments[1]);
int maxthreshold = 0;
if (arguments.length > 2)
- {
+ {
maxthreshold = Integer.parseInt(arguments[2]);
}
probe.setCompactionThreshold(minthreshold, maxthreshold);
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/FileUtils.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/FileUtils.java?rev=822790&r1=822789&r2=822790&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/FileUtils.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/FileUtils.java Wed Oct 7 16:23:20 2009
@@ -175,7 +175,7 @@
else
{
String val = df_.format(value);
- return val + " bytes.";
+ return val + " bytes";
}
}