From 6756cd21d2bc11e12e2b6f3ad15d0f5655f1f5c6 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Sat, 13 Apr 2019 18:33:40 +0200 Subject: GC unused metrics instead of guarding it. --- messagebus/abi-spec.json | 1 - .../main/java/com/yahoo/messagebus/MessageBus.java | 15 ------- .../main/java/com/yahoo/messagebus/SendProxy.java | 14 ------ .../yahoo/messagebus/metrics/AverageMetric.java | 52 ---------------------- .../messagebus/metrics/MessageBusMetricSet.java | 42 ----------------- .../com/yahoo/messagebus/metrics/MetricSet.java | 2 - .../yahoo/messagebus/metrics/RouteMetricSet.java | 45 ------------------- .../com/yahoo/messagebus/routing/RoutingNode.java | 11 ----- 8 files changed, 182 deletions(-) delete mode 100644 messagebus/src/main/java/com/yahoo/messagebus/metrics/AverageMetric.java delete mode 100644 messagebus/src/main/java/com/yahoo/messagebus/metrics/MessageBusMetricSet.java delete mode 100644 messagebus/src/main/java/com/yahoo/messagebus/metrics/RouteMetricSet.java diff --git a/messagebus/abi-spec.json b/messagebus/abi-spec.json index 876bf4a6960..54c5c782cb5 100644 --- a/messagebus/abi-spec.json +++ b/messagebus/abi-spec.json @@ -307,7 +307,6 @@ "public void register(com.yahoo.messagebus.MessageBus$SendBlockedMessages)", "public void (com.yahoo.messagebus.network.Network, java.util.List)", "public void (com.yahoo.messagebus.network.Network, com.yahoo.messagebus.MessageBusParams)", - "public com.yahoo.messagebus.metrics.MessageBusMetricSet getMetrics()", "public boolean destroy()", "public void sync()", "public com.yahoo.messagebus.SourceSession createSourceSession(com.yahoo.messagebus.ReplyHandler)", diff --git a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java index 393cf420ae1..5622aebab66 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java @@ -4,7 +4,6 @@ package com.yahoo.messagebus; import com.yahoo.concurrent.CopyOnWriteHashMap; import com.yahoo.concurrent.SystemTimer; import com.yahoo.log.LogLevel; -import com.yahoo.messagebus.metrics.MessageBusMetricSet; import com.yahoo.messagebus.network.Network; import com.yahoo.messagebus.network.NetworkOwner; import com.yahoo.messagebus.routing.Resender; @@ -74,7 +73,6 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler, private int pendingSize = 0; private final Thread careTaker = new Thread(this::sendBlockedMessages); private final ConcurrentHashMap blockedSenders = new ConcurrentHashMap<>(); - private MessageBusMetricSet metrics = new MessageBusMetricSet(); public interface SendBlockedMessages { /** @@ -131,10 +129,6 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler, maxPendingSize = params.getMaxPendingSize(); for (int i = 0, len = params.getNumProtocols(); i < len; ++i) { protocolRepository.putProtocol(params.getProtocol(i)); - - if (params.getProtocol(i).getMetrics() != null) { - metrics.protocols.addMetric(params.getProtocol(i).getMetrics()); - } } // Attach and start network. @@ -159,15 +153,6 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler, msn.start(); } - /** - *

Returns the metrics used by this messagebus.

- * - * @return The metric set. - */ - public MessageBusMetricSet getMetrics() { - return metrics; - } - /** *

Sets the destroyed flag to true. The very first time this method is * called, it cleans up all its dependencies. Even if you retain a reference diff --git a/messagebus/src/main/java/com/yahoo/messagebus/SendProxy.java b/messagebus/src/main/java/com/yahoo/messagebus/SendProxy.java index ddddaf23299..781235847a0 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/SendProxy.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/SendProxy.java @@ -1,8 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.messagebus; -import com.yahoo.concurrent.SystemTimer; -import com.yahoo.messagebus.metrics.RouteMetricSet; import com.yahoo.messagebus.network.Network; import com.yahoo.messagebus.routing.Resender; import com.yahoo.messagebus.routing.RoutingNode; @@ -24,7 +22,6 @@ public class SendProxy implements MessageHandler, ReplyHandler { private final Resender resender; private Message msg = null; private boolean logTrace = false; - private final long sendTime; /** * Constructs a new instance of this class to maintain sending of a single message. @@ -37,7 +34,6 @@ public class SendProxy implements MessageHandler, ReplyHandler { this.mbus = mbus; this.net = net; this.resender = resender; - sendTime = SystemTimer.INSTANCE.milliTime(); } public void handleMessage(Message msg) { @@ -76,16 +72,6 @@ public class SendProxy implements MessageHandler, ReplyHandler { reply.swapState(msg); reply.setMessage(msg); - if (msg.getRoute() != null) { - RouteMetricSet metrics = mbus.getMetrics().getRouteMetrics(msg.getRoute()); - for (int i = 0; i < reply.getNumErrors(); i++) { - metrics.addFailure(reply.getError(i)); - } - if (reply.getNumErrors() == 0) { - metrics.latency.addValue(msg.getTimeReceived() - sendTime); - } - } - ReplyHandler handler = reply.popHandler(); handler.handleReply(reply); } diff --git a/messagebus/src/main/java/com/yahoo/messagebus/metrics/AverageMetric.java b/messagebus/src/main/java/com/yahoo/messagebus/metrics/AverageMetric.java deleted file mode 100644 index d802e1a2c63..00000000000 --- a/messagebus/src/main/java/com/yahoo/messagebus/metrics/AverageMetric.java +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.messagebus.metrics; - -import com.yahoo.text.XMLWriter; -import com.yahoo.text.Utf8String; - -/** - * @author thomasg - */ -public class AverageMetric extends Metric { - double sum = 0; - double min = 0; - double max = 0; - int count = 0; - - - public AverageMetric(String name, MetricSet owner) { - super(name); - owner.addMetric(this); - } - - public void addValue(double value) { - sum += value; - count++; - - if (min == 0 || value < min) { - min = value; - } - if (max == 0 || value > max) { - max = value; - } - - } - - static private final Utf8String attrValue = new Utf8String("value"); - static private final Utf8String attrCount = new Utf8String("count"); - static private final Utf8String attrMin = new Utf8String("min"); - static private final Utf8String attrMax = new Utf8String("max"); - - @Override - public void toXML(XMLWriter writer) { - renderXmlName(writer); - - if (count > 0) { - writer.attribute(attrValue, (sum / count)); - writer.attribute(attrCount, count); - writer.attribute(attrMin, min); - writer.attribute(attrMax, max); - } - writer.closeTag(); - } -} diff --git a/messagebus/src/main/java/com/yahoo/messagebus/metrics/MessageBusMetricSet.java b/messagebus/src/main/java/com/yahoo/messagebus/metrics/MessageBusMetricSet.java deleted file mode 100644 index ad1d97a25ad..00000000000 --- a/messagebus/src/main/java/com/yahoo/messagebus/metrics/MessageBusMetricSet.java +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.messagebus.metrics; - -import com.yahoo.concurrent.CopyOnWriteHashMap; -import com.yahoo.messagebus.Reply; -import com.yahoo.messagebus.routing.Route; - -/** - * @author thomasg - */ -public class MessageBusMetricSet extends MetricSet { - public MetricSet protocols = new MetricSet("protocols"); - - private final CopyOnWriteHashMap routeMetrics = new CopyOnWriteHashMap(); - - public MessageBusMetricSet() { - super("messagebus"); - addMetric(protocols); - } - - public RouteMetricSet getRouteMetrics(Route r) { - String route = r.toString(); - RouteMetricSet metric = routeMetrics.get(route); - if (metric == null) { - synchronized (routeMetrics) { - metric = routeMetrics.get(route); - if (metric == null) { - metric = new RouteMetricSet(route); - addMetric(metric); - routeMetrics.put(route, metric); - } - } - } - - return metric; - } - - public void updateMetrics(Reply reply, Route r) { - - } - -} diff --git a/messagebus/src/main/java/com/yahoo/messagebus/metrics/MetricSet.java b/messagebus/src/main/java/com/yahoo/messagebus/metrics/MetricSet.java index 472a9a3d2f1..44264246b3a 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/metrics/MetricSet.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/metrics/MetricSet.java @@ -3,8 +3,6 @@ package com.yahoo.messagebus.metrics; import com.yahoo.text.XMLWriter; -import java.io.StringWriter; -import java.io.Writer; import java.util.ArrayList; import java.util.Collections; import java.util.List; diff --git a/messagebus/src/main/java/com/yahoo/messagebus/metrics/RouteMetricSet.java b/messagebus/src/main/java/com/yahoo/messagebus/metrics/RouteMetricSet.java deleted file mode 100644 index b66fcc2f643..00000000000 --- a/messagebus/src/main/java/com/yahoo/messagebus/metrics/RouteMetricSet.java +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.messagebus.metrics; - -import com.yahoo.messagebus.ErrorCode; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author thomasg - */ -public class RouteMetricSet extends MetricSet { - public MetricSet allErrors = new MetricSet("errors"); - public MetricSet failures = new MetricSet("failures"); - public AverageMetric latency = new AverageMetric("latency", this); - - private Map errorMap = new HashMap(); - - RouteMetricSet(String route) { - super(route); - setXmlTagName("messages"); - addMetric(allErrors); - addMetric(failures); - } - - public void addError(com.yahoo.messagebus.Error e) { - CountMetric metric = errorMap.get(e.getCode()); - if (metric == null) { - metric = new CountMetric(ErrorCode.getName(e.getCode()), allErrors); - metric.setXmlTagName("error"); - errorMap.put(e.getCode(), metric); - } - metric.inc(1); - } - - public void addFailure(com.yahoo.messagebus.Error e) { - CountMetric metric = errorMap.get(e.getCode()); - if (metric == null) { - metric = new CountMetric(ErrorCode.getName(e.getCode()), failures); - metric.setXmlTagName("failure"); - errorMap.put(e.getCode(), metric); - } - metric.inc(1); - } -} diff --git a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java index e04cccfcbd1..e98a3820ff2 100755 --- a/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/routing/RoutingNode.java @@ -12,7 +12,6 @@ import com.yahoo.messagebus.SendProxy; import com.yahoo.messagebus.Trace; import com.yahoo.messagebus.TraceLevel; import com.yahoo.messagebus.TraceNode; -import com.yahoo.messagebus.metrics.RouteMetricSet; import com.yahoo.messagebus.network.Network; import com.yahoo.messagebus.network.ServiceAddress; @@ -51,7 +50,6 @@ public class RoutingNode implements ReplyHandler { private ServiceAddress serviceAddress = null; private boolean isActive = true; private boolean shouldRetry = false; - private RouteMetricSet routeMetrics; /** * Constructs a new instance of this class. This is the root node constructor, and will be used by the different @@ -73,10 +71,6 @@ public class RoutingNode implements ReplyHandler { this.trace = new Trace(msg.getTrace().getLevel()); this.route = msg.getRoute(); this.parent = null; - - if (route != null) { - routeMetrics = mbus.getMetrics().getRouteMetrics(route); - } } /** @@ -814,11 +808,6 @@ public class RoutingNode implements ReplyHandler { @Override public void handleReply(Reply reply) { setReply(reply); - if (routeMetrics != null) { - for (int i = 0; i < reply.getNumErrors(); i++) { - routeMetrics.addError(reply.getError(i)); - } - } notifyParent(); } } -- cgit v1.2.3