aboutsummaryrefslogtreecommitdiffstats
path: root/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/application/PublicDimensionsProcessor.java
diff options
context:
space:
mode:
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.java41
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) {