Updated Branches: refs/heads/trunk a7db75f49 -> c0af7f604
avoid returning internal Cassandra classes over JMX patch by Nick Bailey; reviewed by yukim for CASSANDRA-2805 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c0af7f60 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c0af7f60 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c0af7f60 Branch: refs/heads/trunk Commit: c0af7f604189f9e2a21fed397ad32c43a8aff89f Parents: a7db75f Author: Jonathan Ellis <[email protected]> Authored: Sat Dec 31 10:17:40 2011 -0600 Committer: Jonathan Ellis <[email protected]> Committed: Sat Dec 31 10:18:48 2011 -0600 ---------------------------------------------------------------------- CHANGES.txt | 1 + NEWS.txt | 2 + src/java/org/apache/cassandra/cli/CliClient.java | 11 ++-- .../cassandra/db/ColumnFamilyStoreMBean.java | 17 ++--- .../cassandra/db/compaction/CompactionInfo.java | 14 ++++ .../cassandra/db/compaction/CompactionManager.java | 6 +- .../db/compaction/CompactionManagerMBean.java | 4 +- src/java/org/apache/cassandra/dht/Range.java | 18 ++++-- .../apache/cassandra/service/StorageService.java | 54 ++++++++------- .../cassandra/service/StorageServiceMBean.java | 10 ++-- src/java/org/apache/cassandra/tools/NodeCmd.java | 16 ++-- src/java/org/apache/cassandra/tools/NodeProbe.java | 8 +- 12 files changed, 94 insertions(+), 67 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0af7f60/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 5e370ed..bfb0d85 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 1.1-dev + * avoid returning internal Cassandra classes over JMX (CASSANDRA-2805) * add row-level isolation via SnapTree (CASSANDRA-2893) * Optimize key count estimation when opening sstable on startup (CASSANDRA-2988) http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0af7f60/NEWS.txt ---------------------------------------------------------------------- diff --git a/NEWS.txt b/NEWS.txt index 02ad678..23a0b1c 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -34,6 +34,8 @@ Upgrading - Make sure that global settings: key_cache_{size_in_mb, save_period} and row_cache_{size_in_mb, save_period} in conf/cassandra.yaml are used instead of per-ColumnFamily options. + - JMX methods no longer return custom Cassandra objects. Any such methods + will now return standard Maps, Lists, etc. Features -------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0af7f60/src/java/org/apache/cassandra/cli/CliClient.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cli/CliClient.java b/src/java/org/apache/cassandra/cli/CliClient.java index 40c9b96..7a39c97 100644 --- a/src/java/org/apache/cassandra/cli/CliClient.java +++ b/src/java/org/apache/cassandra/cli/CliClient.java @@ -35,7 +35,6 @@ import org.antlr.runtime.tree.Tree; import org.apache.cassandra.auth.IAuthenticator; import org.apache.cassandra.config.ConfigurationException; import org.apache.cassandra.db.ColumnFamilyStoreMBean; -import org.apache.cassandra.db.compaction.CompactionInfo; import org.apache.cassandra.db.compaction.CompactionManagerMBean; import org.apache.cassandra.db.compaction.OperationType; import org.apache.cassandra.db.marshal.*; @@ -1914,15 +1913,15 @@ public class CliClient // compaction manager information if (compactionManagerMBean != null) { - for (CompactionInfo info : compactionManagerMBean.getCompactions()) + for (Map<String, String> info : compactionManagerMBean.getCompactions()) { // if ongoing compaction type is index build - if (info.getTaskType() != OperationType.INDEX_BUILD) + if (info.get("taskType").equals(OperationType.INDEX_BUILD.toString())) continue; sessionState.out.printf("%nCurrently building index %s, completed %d of %d bytes.%n", - info.getColumnFamily(), - info.getBytesComplete(), - info.getTotalBytes()); + info.get("columnfamily"), + info.get("bytesComplete"), + info.get("totalBytes")); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0af7f60/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java b/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java index a5d880b..e06ced6 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java @@ -33,22 +33,22 @@ public interface ColumnFamilyStoreMBean * @return the name of the column family */ public String getColumnFamilyName(); - + /** * Returns the total amount of data stored in the memtable, including * column related overhead. - * + * * @return The size in bytes. */ public long getMemtableDataSize(); - + /** * Returns the total number of columns present in the memtable. - * + * * @return The number of columns. */ public long getMemtableColumnsCount(); - + /** * Returns the number of times that a flush has resulted in the * memtable being switched out. @@ -58,11 +58,6 @@ public interface ColumnFamilyStoreMBean public int getMemtableSwitchCount(); /** - * Triggers an immediate memtable flush. - */ - public Object forceFlush() throws IOException; - - /** * @return a histogram of the number of sstable data files accessed per read: reading this property resets it */ public long[] getRecentSSTablesPerReadHistogram(); @@ -101,7 +96,7 @@ public interface ColumnFamilyStoreMBean * @return the number of write operations on this column family */ public long getWriteCount(); - + /** * @return total write latency (divide by getReadCount() for average) */ http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0af7f60/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java b/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java index 40244c0..f82e952 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java @@ -19,6 +19,8 @@ package org.apache.cassandra.db.compaction; import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; /** Implements serializable to allow structured info to be returned via JMX. */ public final class CompactionInfo implements Serializable @@ -86,6 +88,18 @@ public final class CompactionInfo implements Serializable return buff.append(')').toString(); } + public Map<String, String> asMap() + { + Map<String, String> ret = new HashMap<String, String>(); + ret.put("id", Integer.toString(id)); + ret.put("keyspace", ksname); + ret.put("columnfamily", cfname); + ret.put("bytesComplete", Long.toString(bytesComplete)); + ret.put("totalBytes", Long.toString(totalBytes)); + ret.put("taskType", tasktype.toString()); + return ret; + } + public static abstract class Holder { private volatile boolean isStopped = false; http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0af7f60/src/java/org/apache/cassandra/db/compaction/CompactionManager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java index b1759c0..95041be 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java @@ -1047,11 +1047,11 @@ public class CompactionManager implements CompactionManagerMBean void finishCompaction(CompactionInfo.Holder ci); } - public List<CompactionInfo> getCompactions() + public List<Map<String, String>> getCompactions() { - List<CompactionInfo> out = new ArrayList<CompactionInfo>(); + List<Map<String, String>> out = new ArrayList<Map<String, String>>(); for (CompactionInfo.Holder ci : CompactionExecutor.getCompactions()) - out.add(ci.getCompactionInfo()); + out.add(ci.getCompactionInfo().asMap()); return out; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0af7f60/src/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java b/src/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java index a94bf8f..ffb19ee 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java @@ -18,12 +18,14 @@ package org.apache.cassandra.db.compaction; +import java.util.HashMap; import java.util.List; +import java.util.Map; public interface CompactionManagerMBean { /** List of running compaction objects. */ - public List<CompactionInfo> getCompactions(); + public List<Map<String, String>> getCompactions(); /** List of running compaction summary strings. */ public List<String> getCompactionSummary(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0af7f60/src/java/org/apache/cassandra/dht/Range.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/dht/Range.java b/src/java/org/apache/cassandra/dht/Range.java index e9675f4..3caa6d0 100644 --- a/src/java/org/apache/cassandra/dht/Range.java +++ b/src/java/org/apache/cassandra/dht/Range.java @@ -37,7 +37,7 @@ import org.apache.cassandra.utils.FBUtilities; public class Range<T extends RingPosition> extends AbstractBounds<T> implements Comparable<Range<T>>, Serializable { public static final long serialVersionUID = 1L; - + public Range(T left, T right) { this(left, right, StorageService.getPartitioner()); @@ -52,7 +52,7 @@ public class Range<T extends RingPosition> extends AbstractBounds<T> implements { if (isWrapAround(left, right)) { - /* + /* * We are wrapping around, so the interval is (a,b] where a >= b, * then we have 3 cases which hold for any given token k: * (1) a < k -- return true @@ -67,7 +67,7 @@ public class Range<T extends RingPosition> extends AbstractBounds<T> implements else { /* - * This is the range (a, b] where a < b. + * This is the range (a, b] where a < b. */ return bi.compareTo(left) > 0 && right.compareTo(bi) >= 0; } @@ -225,7 +225,7 @@ public class Range<T extends RingPosition> extends AbstractBounds<T> implements public int compareTo(Range<T> rhs) { - /* + /* * If the range represented by the "this" pointer * is a wrap around then it is the smaller one. */ @@ -234,7 +234,7 @@ public class Range<T extends RingPosition> extends AbstractBounds<T> implements if ( isWrapAround(rhs.left, rhs.right) ) return 1; - + return right.compareTo(rhs.right); } @@ -326,6 +326,14 @@ public class Range<T extends RingPosition> extends AbstractBounds<T> implements return "(" + left + "," + right + "]"; } + public List<String> asList() + { + ArrayList<String> ret = new ArrayList<String>(2); + ret.add(left.toString()); + ret.add(right.toString()); + return ret; + } + public boolean isWrapAround() { return isWrapAround(left, right); http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0af7f60/src/java/org/apache/cassandra/service/StorageService.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index 96bf678..b2487ac 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -476,7 +476,7 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe FBUtilities.waitOnFutures(flushes); CommitLog.instance.shutdownBlocking(); - + // wait for miscellaneous tasks like sstable and commitlog segment deletion tasks.shutdown(); if (!tasks.awaitTermination(1, TimeUnit.MINUTES)) @@ -659,7 +659,7 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe DatabaseDescriptor.setStreamThroughputOutboundMegabitsPerSec(value); logger_.info("setstreamthroughput: throttle set to {}", value); } - + public int getStreamThroughputMbPerSec() { return DatabaseDescriptor.getStreamThroughputOutboundMegabitsPerSec(); @@ -742,13 +742,13 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe * @param keyspace * @return */ - public Map<Range<Token>, List<String>> getRangeToEndpointMap(String keyspace) + public Map<List<String>, List<String>> getRangeToEndpointMap(String keyspace) { /* All the ranges for the tokens */ - Map<Range<Token>, List<String>> map = new HashMap<Range<Token>, List<String>>(); + Map<List<String>, List<String>> map = new HashMap<List<String>, List<String>>(); for (Map.Entry<Range<Token>,List<InetAddress>> entry : getRangeToAddressMap(keyspace).entrySet()) { - map.put(entry.getKey(), stringify(entry.getValue())); + map.put(entry.getKey().asList(), stringify(entry.getValue())); } return map; } @@ -773,10 +773,10 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe * @param keyspace * @return */ - public Map<Range<Token>, List<String>> getRangeToRpcaddressMap(String keyspace) + public Map<List<String>, List<String>> getRangeToRpcaddressMap(String keyspace) { /* All the ranges for the tokens */ - Map<Range<Token>, List<String>> map = new HashMap<Range<Token>, List<String>>(); + Map<List<String>, List<String>> map = new HashMap<List<String>, List<String>>(); for (Map.Entry<Range<Token>, List<InetAddress>> entry : getRangeToAddressMap(keyspace).entrySet()) { List<String> rpcaddrs = new ArrayList<String>(); @@ -784,23 +784,23 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe { rpcaddrs.add(getRpcaddress(endpoint)); } - map.put(entry.getKey(), rpcaddrs); + map.put(entry.getKey().asList(), rpcaddrs); } return map; } - public Map<Range<Token>, List<String>> getPendingRangeToEndpointMap(String keyspace) + public Map<List<String>, List<String>> getPendingRangeToEndpointMap(String keyspace) { // some people just want to get a visual representation of things. Allow null and set it to the first // non-system table. if (keyspace == null) keyspace = Schema.instance.getNonSystemTables().get(0); - Map<Range<Token>, List<String>> map = new HashMap<Range<Token>, List<String>>(); + Map<List<String>, List<String>> map = new HashMap<List<String>, List<String>>(); for (Map.Entry<Range<Token>, Collection<InetAddress>> entry : tokenMetadata_.getPendingRanges(keyspace).entrySet()) { List<InetAddress> l = new ArrayList<InetAddress>(entry.getValue()); - map.put(entry.getKey(), stringify(l)); + map.put(entry.getKey().asList(), stringify(l)); } return map; } @@ -882,13 +882,13 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe return ranges; } - public Map<Token, String> getTokenToEndpointMap() + public Map<String, String> getTokenToEndpointMap() { Map<Token, InetAddress> mapInetAddress = tokenMetadata_.getTokenToEndpointMap(); - Map<Token, String> mapString = new HashMap<Token, String>(mapInetAddress.size()); + Map<String, String> mapString = new HashMap<String, String>(mapInetAddress.size()); for (Map.Entry<Token, InetAddress> entry : mapInetAddress.entrySet()) { - mapString.put(entry.getKey(), entry.getValue().getHostAddress()); + mapString.put(entry.getKey().toString(), entry.getValue().getHostAddress()); } return mapString; } @@ -1188,13 +1188,13 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe SystemTable.removeToken(token); } } - + private void excise(Token token, InetAddress endpoint, long expireTime) { addExpireTimeIfFound(endpoint, expireTime); excise(token, endpoint); } - + protected void addExpireTimeIfFound(InetAddress endpoint, long expireTime) { if (expireTime != 0L) @@ -1325,7 +1325,7 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe * @param ranges the ranges to find sources for * @return multimap of addresses to ranges the address is responsible for */ - private Multimap<InetAddress, Range<Token>> getNewSourceRanges(String table, Set<Range<Token>> ranges) + private Multimap<InetAddress, Range<Token>> getNewSourceRanges(String table, Set<Range<Token>> ranges) { InetAddress myAddress = FBUtilities.getBroadcastAddress(); Multimap<Range<Token>, InetAddress> rangeAddresses = Table.open(table).getReplicationStrategy().getRangeAddresses(tokenMetadata_); @@ -1400,7 +1400,7 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe for (String table : Schema.instance.getNonSystemTables()) { - Multimap<Range<Token>, InetAddress> changedRanges = getChangedRangesForLeaving(table, endpoint); + Multimap<Range<Token>, InetAddress> changedRanges = getChangedRangesForLeaving(table, endpoint); Set<Range<Token>> myNewRanges = new HashSet<Range<Token>>(); for (Map.Entry<Range<Token>, InetAddress> entry : changedRanges.entries()) { @@ -1959,7 +1959,7 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe * * @param table keyspace name also known as table * @param cf Column family name - * @param key key for which we need to find the endpoint + * @param key key for which we need to find the endpoint * @return the endpoint responsible for this key */ public List<InetAddress> getNaturalEndpoints(String table, String cf, String key) @@ -1978,7 +1978,7 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe * specified key i.e for replication. * * @param table keyspace name also known as table - * @param pos position for which we need to find the endpoint + * @param pos position for which we need to find the endpoint * @return the endpoint responsible for this token */ public List<InetAddress> getNaturalEndpoints(String table, RingPosition pos) @@ -1991,7 +1991,7 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe * specified key i.e for replication. * * @param table keyspace name also known as table - * @param key key for which we need to find the endpoint + * @param key key for which we need to find the endpoint * @return the endpoint responsible for this key */ public List<InetAddress> getLiveNaturalEndpoints(String table, ByteBuffer key) @@ -2586,11 +2586,17 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe StorageProxy.truncateBlocking(keyspace, columnFamily); } - public Map<Token, Float> getOwnership() + public Map<String, Float> getOwnership() { - List<Token> sortedTokens = new ArrayList<Token>(getTokenToEndpointMap().keySet()); + List<Token> sortedTokens = new ArrayList<Token>(tokenMetadata_.getTokenToEndpointMap().keySet()); Collections.sort(sortedTokens); - return partitioner.describeOwnership(sortedTokens); + Map<Token, Float> token_map = partitioner.describeOwnership(sortedTokens); + Map<String, Float> string_map = new HashMap<String, Float>(); + for(Map.Entry<Token, Float> entry : token_map.entrySet()) + { + string_map.put(entry.getKey().toString(), entry.getValue()); + } + return string_map; } public List<String> getKeyspaces() http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0af7f60/src/java/org/apache/cassandra/service/StorageServiceMBean.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/StorageServiceMBean.java b/src/java/org/apache/cassandra/service/StorageServiceMBean.java index 675e307..6b8ad1d 100644 --- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java +++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java @@ -118,7 +118,7 @@ public interface StorageServiceMBean * * @return mapping of ranges to end points */ - public Map<Range<Token>, List<String>> getRangeToEndpointMap(String keyspace); + public Map<List<String>, List<String>> getRangeToEndpointMap(String keyspace); /** * Retrieve a map of range to rpc addresses that describe the ring topology @@ -126,7 +126,7 @@ public interface StorageServiceMBean * * @return mapping of ranges to rpc addresses */ - public Map<Range<Token>, List<String>> getRangeToRpcaddressMap(String keyspace); + public Map<List<String>, List<String>> getRangeToRpcaddressMap(String keyspace); /** * The same as {@code describeRing(String)} but converts TokenRange to the String for JMX compatibility @@ -144,7 +144,7 @@ public interface StorageServiceMBean * @param keyspace the keyspace to get the pending range map for. * @return a map of pending ranges to endpoints */ - public Map<Range<Token>, List<String>> getPendingRangeToEndpointMap(String keyspace); + public Map<List<String>, List<String>> getPendingRangeToEndpointMap(String keyspace); /** * Retrieve a map of tokens to endpoints, including the bootstrapping @@ -152,7 +152,7 @@ public interface StorageServiceMBean * * @return a map of tokens to endpoints */ - public Map<Token, String> getTokenToEndpointMap(); + public Map<String, String> getTokenToEndpointMap(); /** * Numeric load value. @@ -304,7 +304,7 @@ public interface StorageServiceMBean * given a list of tokens (representing the nodes in the cluster), returns * a mapping from "token -> %age of cluster owned by that token" */ - public Map<Token, Float> getOwnership(); + public Map<String, Float> getOwnership(); public List<String> getKeyspaces(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0af7f60/src/java/org/apache/cassandra/tools/NodeCmd.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/tools/NodeCmd.java b/src/java/org/apache/cassandra/tools/NodeCmd.java index e9a3d90..22939db 100644 --- a/src/java/org/apache/cassandra/tools/NodeCmd.java +++ b/src/java/org/apache/cassandra/tools/NodeCmd.java @@ -197,8 +197,8 @@ public class NodeCmd */ public void printRing(PrintStream outs) { - Map<Token, String> tokenToEndpoint = probe.getTokenToEndpointMap(); - List<Token> sortedTokens = new ArrayList<Token>(tokenToEndpoint.keySet()); + Map<String, String> tokenToEndpoint = probe.getTokenToEndpointMap(); + List<String> sortedTokens = new ArrayList<String>(tokenToEndpoint.keySet()); Collections.sort(sortedTokens); Collection<String> liveNodes = probe.getLiveNodes(); @@ -216,9 +216,9 @@ public class NodeCmd outs.printf(format, "", "", "", "", "", "", "", sortedTokens.get(sortedTokens.size() - 1)); // Calculate per-token ownership of the ring - Map<Token, Float> ownerships = probe.getOwnership(); + Map<String, Float> ownerships = probe.getOwnership(); - for (Token token : sortedTokens) + for (String token : sortedTokens) { String primaryEndpoint = tokenToEndpoint.get(token); String dataCenter; @@ -432,12 +432,12 @@ public class NodeCmd outs.println("pending tasks: " + cm.getPendingTasks()); if (cm.getCompactions().size() > 0) outs.printf("%25s%16s%16s%16s%16s%10s%n", "compaction type", "keyspace", "column family", "bytes compacted", "bytes total", "progress"); - for (CompactionInfo c : cm.getCompactions()) + for (Map<String, String> c : cm.getCompactions()) { - String percentComplete = c.getTotalBytes() == 0 + String percentComplete = new Long(c.get("totalBytes")) == 0 ? "n/a" - : new DecimalFormat("0.00").format((double) c.getBytesComplete() / c.getTotalBytes() * 100) + "%"; - outs.printf("%25s%16s%16s%16s%16s%10s%n", c.getTaskType(), c.getKeyspace(), c.getColumnFamily(), c.getBytesComplete(), c.getTotalBytes(), percentComplete); + : new DecimalFormat("0.00").format((double) new Long(c.get("bytesComplete")) / new Long(c.get("totalBytes")) * 100) + "%"; + outs.printf("%25s%16s%16s%16s%16s%10s%n", c.get("taskType"), c.get("keyspace"), c.get("columnfamily"), c.get("bytesComplete"), c.get("totalBytes"), percentComplete); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0af7f60/src/java/org/apache/cassandra/tools/NodeProbe.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java b/src/java/org/apache/cassandra/tools/NodeProbe.java index a982b01..621a9f6 100644 --- a/src/java/org/apache/cassandra/tools/NodeProbe.java +++ b/src/java/org/apache/cassandra/tools/NodeProbe.java @@ -227,7 +227,7 @@ public class NodeProbe ssProxy.drain(); } - public Map<Token, String> getTokenToEndpointMap() + public Map<String, String> getTokenToEndpointMap() { return ssProxy.getTokenToEndpointMap(); } @@ -262,7 +262,7 @@ public class NodeProbe return ssProxy.getLoadMap(); } - public Map<Token, Float> getOwnership() + public Map<String, Float> getOwnership() { return ssProxy.getOwnership(); } @@ -527,9 +527,9 @@ public class NodeProbe // Try to find the endpoint using the local token, doing so in a crazy manner // to maintain backwards compatibility with the MBean interface String stringToken = ssProxy.getToken(); - Map<Token, String> tokenToEndpoint = ssProxy.getTokenToEndpointMap(); + Map<String, String> tokenToEndpoint = ssProxy.getTokenToEndpointMap(); - for (Map.Entry<Token, String> pair : tokenToEndpoint.entrySet()) + for (Map.Entry<String, String> pair : tokenToEndpoint.entrySet()) { if (pair.getKey().toString().equals(stringToken)) {
