diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-12-17 22:46:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-17 22:46:08 +0100 |
commit | 1de0224703dc0459a2def69e69ea8c3d25656d0d (patch) | |
tree | 164d3a5b1426e2b19ebbe826e7ce3549a90e693b /metrics-proxy/src/main/java/ai | |
parent | 9b2c6af8709da342560154230c7873ccf992d921 (diff) | |
parent | 5dde463829fddd3d01789dcda8da4f146653e269 (diff) |
Merge pull request #20573 from vespa-engine/balder/preserve-number-type
Balder/preserve number type
Diffstat (limited to 'metrics-proxy/src/main/java/ai')
4 files changed, 21 insertions, 15 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java index 54ffcd4ae0f..35761ebcf18 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java @@ -110,7 +110,7 @@ public class MetricsPacket { public Builder putMetrics(Collection<Metric> extraMetrics) { if (extraMetrics != null) - extraMetrics.forEach(metric -> metrics.put(metric.getName(), metric.getValue().doubleValue())); + extraMetrics.forEach(metric -> metrics.put(metric.getName(), metric.getValue())); return this; } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java index 65c9bb1ff76..87bed1c79e3 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java @@ -77,15 +77,14 @@ public abstract class HttpMetricFetcher { } void handleException(Exception e, Object data, int timesFetched) { - logMessage("Unable to parse json '" + data + "' for service '" + service + "': " + - Exceptions.toMessageString(e), timesFetched); + logMessage("Unable to parse json '" + data + "' for service '" + service + "': ", e, timesFetched); } - private void logMessage(String message, int timesFetched) { + private void logMessage(String message, Exception e, int timesFetched) { if (service.isAlive() && timesFetched > 5) { - log.log(Level.INFO, message); + log.log(Level.INFO, message, e); } else { - log.log(Level.FINE, message); + log.log(Level.FINE, message, e); } } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java index f9443c46bad..701af8730d7 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java @@ -14,6 +14,8 @@ import java.io.InputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId; @@ -23,6 +25,7 @@ import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId; * @author Jo Kristian Bergum */ public class MetricsParser { + private final static Logger log = Logger.getLogger(MetricsParser.class.getName()); public interface Consumer { void consume(Metric metric); } @@ -128,15 +131,23 @@ public class MetricsParser { StringBuilder sb = new StringBuilder(); for (Iterator<?> it = dimensions.fieldNames(); it.hasNext(); ) { String k = (String) it.next(); - String v = dimensions.get(k).asText(); - sb.append(toDimensionId(k)).append(v); + String v = dimensions.get(k).textValue(); + if (v != null) { + sb.append(toDimensionId(k)).append(v); + } } if ( ! uniqueDimensions.containsKey(sb.toString())) { dim = new HashMap<>(); for (Iterator<?> it = dimensions.fieldNames(); it.hasNext(); ) { String k = (String) it.next(); String v = dimensions.get(k).textValue(); - dim.put(toDimensionId(k), v); + if (v != null) { + dim.put(toDimensionId(k), v); + } else { + // TODO This should never happen, but it has been seen. This should be flagged as warning, + // but will try to find root cause before flooding the log. + log.log(Level.FINE, "Metric '" + name + "': dimension '" + k + "' is null"); + } } uniqueDimensions.put(sb.toString(), Map.copyOf(dim)); } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java index f375fd1586f..5ca9e6fd950 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java @@ -28,12 +28,8 @@ public class RemoteMetricsFetcher extends HttpMetricFetcher { } } - void createMetrics(String data, MetricsParser.Consumer consumer, int fetchCount) { - try { - MetricsParser.parse(data, consumer); - } catch (Exception e) { - handleException(e, data, fetchCount); - } + void createMetrics(String data, MetricsParser.Consumer consumer, int fetchCount) throws IOException { + MetricsParser.parse(data, consumer); } private void createMetrics(InputStream data, MetricsParser.Consumer consumer, int fetchCount) throws IOException { try { |