diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-12-16 18:34:18 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-12-16 18:34:18 +0100 |
commit | 020eb72d22540f5392730fe5173ca2da9520372d (patch) | |
tree | 9a08a0825e771cf4c4c7e69c8c2e67fdd80c9257 /metrics-proxy | |
parent | 1a042c3c8c74c9a445bba5cd0366b55ce480f9b0 (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.java | 12 |
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))); } |