aboutsummaryrefslogtreecommitdiffstats
path: root/metrics-proxy
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-12-16 18:34:18 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2022-12-16 18:34:18 +0100
commit020eb72d22540f5392730fe5173ca2da9520372d (patch)
tree9a08a0825e771cf4c4c7e69c8c2e67fdd80c9257 /metrics-proxy
parent1a042c3c8c74c9a445bba5cd0366b55ce480f9b0 (diff)
Use a set instead to detect uniqueness.
Diffstat (limited to 'metrics-proxy')
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/MetricsParser.java12
1 files changed, 7 insertions, 5 deletions
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 cdb87e76148..e24c7428157 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
@@ -15,8 +15,10 @@ import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.stream.Collectors;
import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId;
@@ -107,7 +109,7 @@ public class MetricsParser {
throw new IOException("Expected start of 'metrics:values' array, got " + parser.currentToken());
}
- Map<Long, Map<DimensionId, String>> uniqueDimensions = new HashMap<>();
+ Map<Set<Dimension>, Map<DimensionId, String>> uniqueDimensions = new HashMap<>();
while (parser.nextToken() == JsonToken.START_OBJECT) {
handleValue(parser, timestamp, consumer, uniqueDimensions);
}
@@ -115,7 +117,7 @@ public class MetricsParser {
// One item in the 'values' array, where each item has 'name', 'values' and 'dimensions'
static private void handleValue(JsonParser parser, Instant timestamp, Collector consumer,
- Map<Long, Map<DimensionId, String>> uniqueDimensions) throws IOException {
+ Map<Set<Dimension>, Map<DimensionId, String>> uniqueDimensions) throws IOException {
String name = "";
String description = "";
Map<DimensionId, String> dim = Map.of();
@@ -143,9 +145,9 @@ public class MetricsParser {
}
private static Map<DimensionId, String> parseDimensions(JsonParser parser,
- Map<Long, Map<DimensionId, String>> uniqueDimensions) throws IOException {
+ Map<Set<Dimension>, Map<DimensionId, String>> uniqueDimensions) throws IOException {
- List<Dimension> dimensions = new ArrayList<>();
+ Set<Dimension> dimensions = new HashSet<>();
for (parser.nextToken(); parser.getCurrentToken() != JsonToken.END_OBJECT; parser.nextToken()) {
String fieldName = parser.getCurrentName();
@@ -160,7 +162,7 @@ public class MetricsParser {
throw new IllegalArgumentException("Dimension '" + fieldName + "' must be a string");
}
}
- return uniqueDimensions.computeIfAbsent(dimensionsHashCode(dimensions),
+ return uniqueDimensions.computeIfAbsent(dimensions,
key -> dimensions.stream().collect(Collectors.toUnmodifiableMap(
dim -> toDimensionId(dim.id), dim -> dim.value)));
}