From 1447b725350ee4f25723135adefc50808867bf17 Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Fri, 6 Jan 2023 12:56:10 +0000 Subject: let prefixing with name happen after parsing entire object --- .../java/ai/vespa/metricsproxy/service/MetricsParser.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'metrics-proxy/src') 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 e8f6459a1bc..a023528a28d 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 @@ -130,15 +130,18 @@ public class MetricsParser { } else if (fieldName.equals("dimensions")) { dim = parseDimensions(parser, uniqueDimensions); } else if (fieldName.equals("values")) { - values = parseValues(name+".", parser); + values = parseValues(parser); } else { if (token == JsonToken.START_OBJECT || token == JsonToken.START_ARRAY) { parser.skipChildren(); } } } + if (name.equals("")) { + throw new IOException("missing name for entry in 'values' array"); + } for (Map.Entry value : values) { - consumer.accept(new Metric(MetricId.toMetricId(value.getKey()), value.getValue(), timestamp, dim, description)); + consumer.accept(new Metric(MetricId.toMetricId(name+"."+value.getKey()), value.getValue(), timestamp, dim, description)); } } @@ -171,12 +174,12 @@ public class MetricsParser { } } - private static List> parseValues(String prefix, JsonParser parser) throws IOException { + private static List> parseValues(JsonParser parser) throws IOException { List> metrics = new ArrayList<>(); for (parser.nextToken(); parser.getCurrentToken() != JsonToken.END_OBJECT; parser.nextToken()) { String fieldName = parser.getCurrentName(); JsonToken token = parser.nextToken(); - String metricName = prefix + fieldName; + String metricName = fieldName; if (token == JsonToken.VALUE_NUMBER_INT) { metrics.add(Map.entry(metricName, parser.getLongValue())); } else if (token == JsonToken.VALUE_NUMBER_FLOAT) { -- cgit v1.2.3