aboutsummaryrefslogtreecommitdiffstats
path: root/metrics-proxy/src/main/java/ai
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-12-17 22:46:08 +0100
committerGitHub <noreply@github.com>2021-12-17 22:46:08 +0100
commit1de0224703dc0459a2def69e69ea8c3d25656d0d (patch)
tree164d3a5b1426e2b19ebbe826e7ce3549a90e693b /metrics-proxy/src/main/java/ai
parent9b2c6af8709da342560154230c7873ccf992d921 (diff)
parent5dde463829fddd3d01789dcda8da4f146653e269 (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')
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/MetricsPacket.java2
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/HttpMetricFetcher.java9
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java17
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/RemoteMetricsFetcher.java8
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 {