summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/ValuesFetcher.java15
-rw-r--r--metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java4
-rw-r--r--metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java11
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java11
4 files changed, 26 insertions, 15 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/ValuesFetcher.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/ValuesFetcher.java
index b316a620a9b..037fca95588 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/ValuesFetcher.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/http/ValuesFetcher.java
@@ -10,6 +10,7 @@ import ai.vespa.metricsproxy.service.VespaServices;
import java.time.Instant;
import java.util.List;
+import java.util.Optional;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -65,12 +66,14 @@ public class ValuesFetcher {
public static ConsumerId getConsumerOrDefault(String requestedConsumer, MetricsConsumers consumers) {
if (requestedConsumer == null) return defaultMetricsConsumerId;
- ConsumerId consumerId = toConsumerId(requestedConsumer);
- if (! consumers.getAllConsumers().contains(consumerId)) {
- log.info("No consumer with id '" + requestedConsumer + "' - using the default consumer instead.");
- return defaultMetricsConsumerId;
- }
- return consumerId;
+ Optional<ConsumerId> consumerId = consumers.getAllConsumers().stream()
+ .filter(consumer -> consumer.id.equalsIgnoreCase(requestedConsumer))
+ .findFirst();
+
+ if (consumerId.isPresent()) return consumerId.get();
+
+ log.info("No consumer with id '" + requestedConsumer + "' - using the default consumer instead.");
+ return defaultMetricsConsumerId;
}
}
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java
index 9ec22154627..12da0f7dcea 100644
--- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java
+++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/ConsumerId.java
@@ -9,7 +9,9 @@ import java.util.Objects;
public class ConsumerId {
public final String id;
- private ConsumerId(String id) { this.id = id; }
+ private ConsumerId(String id) {
+ this.id = Objects.requireNonNull(id);
+ }
public static ConsumerId toConsumerId(String id) { return new ConsumerId(id); }
diff --git a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java
index 1c6a09c3ee0..b6521a89ce7 100644
--- a/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java
+++ b/metrics-proxy/src/test/java/ai/vespa/metricsproxy/http/metrics/MetricsHandlerTestBase.java
@@ -13,6 +13,7 @@ import org.junit.Ignore;
import org.junit.Test;
import java.io.IOException;
+import java.util.Locale;
import static ai.vespa.metricsproxy.metric.dimensions.PublicDimensions.INTERNAL_SERVICE_ID;
import static ai.vespa.metricsproxy.metric.dimensions.PublicDimensions.REASON;
@@ -151,6 +152,16 @@ public abstract class MetricsHandlerTestBase<MODEL> extends HttpHandlerTestBase
assertEquals("custom-val", dummy1Metrics.dimensions.get(REASON));
}
+ @Test
+ public void consumer_name_is_case_insensitive() {
+ GenericJsonModel jsonModel = getResponseAsGenericJsonModel(CUSTOM_CONSUMER.toUpperCase(Locale.ROOT));
+ GenericService dummyService = jsonModel.services.get(0);
+ GenericMetrics dummy0Metrics = getMetricsForService("dummy0", dummyService);
+
+ // If name was case-sensitive, this would be the default value.
+ assertEquals("custom-val", dummy0Metrics.dimensions.get(REASON));
+ }
+
private static GenericMetrics getMetricsForService(String serviceInstance, GenericService service) {
for (var metrics : service.metrics) {
if (getServiceIdDimension(metrics).equals(serviceInstance))
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
index 41a23ac21ff..d641f59eafb 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Nodes.java
@@ -132,9 +132,7 @@ public class Nodes {
illegal("Cannot add " + node + ": Child nodes need to be allocated");
Optional<Node> existing = node(node.hostname());
if (existing.isPresent())
- illegal("Cannot add " + node + ": A node with this name already exists (" +
- existing.get() + ", " + existing.get().history() + "). Node to be added: " +
- node + ", " + node.history());
+ illegal("Cannot add " + node + ": A node with this name already exists");
}
return db.addNodesInState(nodes.asList(), Node.State.reserved, Agent.system);
}
@@ -291,16 +289,13 @@ public class Nodes {
List<Node> nodesToDirty =
(nodeToDirty.type().isHost() ?
Stream.concat(list().childrenOf(hostname).asList().stream(), Stream.of(nodeToDirty)) :
- Stream.of(nodeToDirty))
- .filter(node -> node.state() != Node.State.dirty)
- .collect(Collectors.toList());
+ Stream.of(nodeToDirty)).filter(node -> node.state() != Node.State.dirty).toList();
List<String> hostnamesNotAllowedToDirty = nodesToDirty.stream()
.filter(node -> node.state() != Node.State.provisioned)
.filter(node -> node.state() != Node.State.failed)
.filter(node -> node.state() != Node.State.parked)
.filter(node -> node.state() != Node.State.breakfixed)
- .map(Node::hostname)
- .collect(Collectors.toList());
+ .map(Node::hostname).toList();
if ( ! hostnamesNotAllowedToDirty.isEmpty())
illegal("Could not deallocate " + nodeToDirty + ": " +
hostnamesNotAllowedToDirty + " are not in states [provisioned, failed, parked, breakfixed]");