diff options
Diffstat (limited to 'metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessor.java')
-rw-r--r-- | metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessor.java | 41 |
1 files changed, 6 insertions, 35 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessor.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessor.java index 50eb74e8693..639f642778e 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessor.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessor.java @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package ai.vespa.metricsproxy.http.application; +import ai.vespa.metricsproxy.metric.dimensions.BlocklistDimensions; import ai.vespa.metricsproxy.metric.dimensions.PublicDimensions; import ai.vespa.metricsproxy.metric.model.DimensionId; import ai.vespa.metricsproxy.metric.model.MetricsPacket; @@ -12,53 +13,23 @@ import java.util.Set; import java.util.stream.Collectors; /** - * Ensures that only whitelisted dimensions are retained in the given metrics packet, and that - * there are no more dimensions than the given maximum number. + * Ensures that blocklisted dimensions are removed from the metric set * * @author gjoranv */ public class PublicDimensionsProcessor implements MetricsProcessor { - private final int maxDimensions; - private Set<DimensionId> publicDimensions = getPublicDimensions(); - - public PublicDimensionsProcessor(int maxDimensions) { - int numCommonDimensions = PublicDimensions.commonDimensions.size(); - if (numCommonDimensions > maxDimensions) { - throw new IllegalArgumentException(String.format( - ("The maximum number of dimensions (%d) cannot be smaller than the number of " + - "common metrics dimensions (%d)."), maxDimensions, numCommonDimensions)); - } - this.maxDimensions = maxDimensions; - } + private final Set<DimensionId> blocklistDimensions = getBlocklistDimensions(); @Override public void process(MetricsPacket.Builder builder) { Set<DimensionId> dimensionsToRetain = builder.getDimensionIds(); - dimensionsToRetain.retainAll(publicDimensions); - - if (dimensionsToRetain.size() > maxDimensions) { - for (var metricDim : getMetricDimensions()) { - dimensionsToRetain.remove(metricDim); - if (dimensionsToRetain.size() <= maxDimensions) break; - } - } - + dimensionsToRetain.removeAll(blocklistDimensions); builder.retainDimensions(dimensionsToRetain); - - // Extra safeguard, to make sure we don't exceed the limit of some metric systems. - if (builder.getDimensionIds().size() > maxDimensions) { - throw new IllegalStateException(String.format( - "Metrics packet is only allowed to have %d dimensions, but has: %s", maxDimensions, builder.getDimensionIds())); - } - } - - static Set<DimensionId> getPublicDimensions() { - return toDimensionIds(PublicDimensions.publicDimensions); } - static Set<DimensionId> getMetricDimensions() { - return toDimensionIds(PublicDimensions.metricDimensions); + static Set<DimensionId> getBlocklistDimensions() { + return toDimensionIds(BlocklistDimensions.blocklistDimensions); } static Set<DimensionId> toDimensionIds(Collection<String> dimensionNames) { |