Repository: cassandra Updated Branches: refs/heads/trunk a9ec46a61 -> 68605cf03
ninja commit the minor updates for CASSANDRA-14335 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/68605cf0 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/68605cf0 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/68605cf0 Branch: refs/heads/trunk Commit: 68605cf03bdfecb11cd69c6d5260a773e4e87300 Parents: a9ec46a Author: Jason Brown <jasedbr...@gmail.com> Authored: Fri May 4 12:57:07 2018 -0700 Committer: Jason Brown <jasedbr...@gmail.com> Committed: Fri May 4 12:57:07 2018 -0700 ---------------------------------------------------------------------- .../apache/cassandra/service/CassandraDaemon.java | 3 ++- .../cassandra/tools/nodetool/ClientStats.java | 10 +++++----- .../transport/ProtocolVersionTracker.java | 18 ++++++++++-------- .../org/apache/cassandra/transport/Server.java | 11 ++++++----- 4 files changed, 23 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/68605cf0/src/java/org/apache/cassandra/service/CassandraDaemon.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java b/src/java/org/apache/cassandra/service/CassandraDaemon.java index 7e7649d..80b8b7b 100644 --- a/src/java/org/apache/cassandra/service/CassandraDaemon.java +++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java @@ -679,7 +679,8 @@ public class CassandraDaemon instance.activate(); } - public void clearConnectionHistory() { + public void clearConnectionHistory() + { nativeTransportService.clearConnectionHistory(); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/68605cf0/src/java/org/apache/cassandra/tools/nodetool/ClientStats.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/tools/nodetool/ClientStats.java b/src/java/org/apache/cassandra/tools/nodetool/ClientStats.java index 9b4ada8..5bd5da1 100644 --- a/src/java/org/apache/cassandra/tools/nodetool/ClientStats.java +++ b/src/java/org/apache/cassandra/tools/nodetool/ClientStats.java @@ -36,8 +36,8 @@ public class ClientStats extends NodeToolCmd @Option(title = "list_connections", name = "--all", description = "Lists all connections") private boolean listConnections = false; - @Option(title = "by_protocol", name = "--by-protocol", description = "Lists last 100 client connections with oldest protocol version") - private boolean oldestProtocolConnections = false; + @Option(title = "by_protocol", name = "--by-protocol", description = "Lists most recent client connections by protocol version") + private boolean connectionsByProtocolVersion = false; @Option(title = "clear_history", name = "--clear-history", description = "Clear the history of connected clients") private boolean clearConnectionHistory = false; @@ -47,17 +47,17 @@ public class ClientStats extends NodeToolCmd { if (clearConnectionHistory) { - System.out.println("Clearing history"); + System.out.println("Clearing connection history"); probe.clearConnectionHistory(); return; } - if (oldestProtocolConnections) + if (connectionsByProtocolVersion) { SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy HH:mm:ss"); System.out.println("Clients by protocol version"); - System.out.println(""); + System.out.println(); List<Map<String, String>> clients = (List<Map<String, String>>) probe.getClientMetric("clientsByProtocolVersion"); http://git-wip-us.apache.org/repos/asf/cassandra/blob/68605cf0/src/java/org/apache/cassandra/transport/ProtocolVersionTracker.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/ProtocolVersionTracker.java b/src/java/org/apache/cassandra/transport/ProtocolVersionTracker.java index a2468bd..848917b 100644 --- a/src/java/org/apache/cassandra/transport/ProtocolVersionTracker.java +++ b/src/java/org/apache/cassandra/transport/ProtocolVersionTracker.java @@ -40,7 +40,7 @@ public class ProtocolVersionTracker public static final int DEFAULT_MAX_CAPACITY = 100; @VisibleForTesting - final EnumMap<ProtocolVersion, LoadingCache<InetAddress, Long>> clientsByProto; + final EnumMap<ProtocolVersion, LoadingCache<InetAddress, Long>> clientsByProtocolVersion; public ProtocolVersionTracker() { @@ -49,12 +49,12 @@ public class ProtocolVersionTracker public ProtocolVersionTracker(final int capacity) { - this.clientsByProto = new EnumMap<>(ProtocolVersion.class); + clientsByProtocolVersion = new EnumMap<>(ProtocolVersion.class); for (ProtocolVersion version : ProtocolVersion.values()) { - clientsByProto.put(version, Caffeine.newBuilder().maximumSize(capacity) - .build(key -> Clock.instance.currentTimeMillis())); + clientsByProtocolVersion.put(version, Caffeine.newBuilder().maximumSize(capacity) + .build(key -> Clock.instance.currentTimeMillis())); } } @@ -62,7 +62,7 @@ public class ProtocolVersionTracker { if (addr == null || version == null) return; - LoadingCache<InetAddress, Long> clients = clientsByProto.get(version); + LoadingCache<InetAddress, Long> clients = clientsByProtocolVersion.get(version); clients.put(addr, Clock.instance.currentTimeMillis()); } @@ -71,15 +71,17 @@ public class ProtocolVersionTracker LinkedHashMap<ProtocolVersion, ImmutableSet<ClientIPAndTime>> result = new LinkedHashMap<>(); for (ProtocolVersion version : ProtocolVersion.values()) { - result.put(version, ImmutableSet.copyOf(clientsByProto.get(version).asMap().entrySet().stream() - .map(e -> new ClientIPAndTime(e.getKey(), e.getValue())).collect(Collectors.toSet()))); + ImmutableSet.Builder<ClientIPAndTime> ips = ImmutableSet.builder(); + for (Map.Entry<InetAddress, Long> e : clientsByProtocolVersion.get(version).asMap().entrySet()) + ips.add(new ClientIPAndTime(e.getKey(), e.getValue())); + result.put(version, ips.build()); } return result; } public void clear() { - for (Map.Entry<ProtocolVersion, LoadingCache<InetAddress, Long>> entry : clientsByProto.entrySet()) + for (Map.Entry<ProtocolVersion, LoadingCache<InetAddress, Long>> entry : clientsByProtocolVersion.entrySet()) { entry.getValue().invalidateAll(); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/68605cf0/src/java/org/apache/cassandra/transport/Server.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/Server.java b/src/java/org/apache/cassandra/transport/Server.java index a7cfdfb..996e5bb 100644 --- a/src/java/org/apache/cassandra/transport/Server.java +++ b/src/java/org/apache/cassandra/transport/Server.java @@ -207,8 +207,9 @@ public class Server implements CassandraDaemon.Server return result; } - public List<Map<String, String>> getClientsByProtocolVersion() { - LinkedHashMap<ProtocolVersion, ImmutableSet<ProtocolVersionTracker.ClientIPAndTime>> all = connectionTracker.protoTracker.getAll(); + public List<Map<String, String>> getClientsByProtocolVersion() + { + LinkedHashMap<ProtocolVersion, ImmutableSet<ProtocolVersionTracker.ClientIPAndTime>> all = connectionTracker.protocolVersionTracker.getAll(); List<Map<String, String>> result = new ArrayList<>(); for (Map.Entry<ProtocolVersion, ImmutableSet<ProtocolVersionTracker.ClientIPAndTime>> entry : all.entrySet()) @@ -230,7 +231,7 @@ public class Server implements CassandraDaemon.Server @Override public void clearConnectionHistory() { - connectionTracker.protoTracker.clear(); + connectionTracker.protocolVersionTracker.clear(); } private void close() @@ -309,7 +310,7 @@ public class Server implements CassandraDaemon.Server // TODO: should we be using the GlobalEventExecutor or defining our own? public final ChannelGroup allChannels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); private final EnumMap<Event.Type, ChannelGroup> groups = new EnumMap<>(Event.Type.class); - private final ProtocolVersionTracker protoTracker = new ProtocolVersionTracker(); + private final ProtocolVersionTracker protocolVersionTracker = new ProtocolVersionTracker(); public ConnectionTracker() { @@ -322,7 +323,7 @@ public class Server implements CassandraDaemon.Server allChannels.add(ch); if (ch.remoteAddress() instanceof InetSocketAddress) - protoTracker.addConnection(((InetSocketAddress) ch.remoteAddress()).getAddress(), connection.getVersion()); + protocolVersionTracker.addConnection(((InetSocketAddress) ch.remoteAddress()).getAddress(), connection.getVersion()); } public void register(Event.Type type, Channel ch) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org