diff options
22 files changed, 185 insertions, 120 deletions
diff --git a/application-model/pom.xml b/application-model/pom.xml index 7eac247e249..3abf9851d5c 100644 --- a/application-model/pom.xml +++ b/application-model/pom.xml @@ -23,12 +23,6 @@ </dependency> <dependency> <groupId>com.yahoo.vespa</groupId> - <artifactId>vespajlib</artifactId> - <version>${project.version}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>com.yahoo.vespa</groupId> <artifactId>config-provisioning</artifactId> <version>${project.version}</version> <scope>provided</scope> diff --git a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java index 20aca379015..7d94a0418e4 100644 --- a/application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java +++ b/application-model/src/main/java/com/yahoo/vespa/applicationmodel/TenantId.java @@ -31,6 +31,8 @@ public class TenantId { return id; } + public TenantName toName() { return TenantName.from(id); } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java b/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java index 1838f1e36b7..824bf248b5c 100644 --- a/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java +++ b/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java @@ -99,7 +99,7 @@ public class MockApplicationPackage implements ApplicationPackage { @SuppressWarnings("deprecation") // not redundant @Override public String getApplicationName() { - return "mock-application"; + return "mock application"; } @Override diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java index 796fe586fb9..76d4ae3f1a6 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationId.java @@ -3,10 +3,6 @@ package com.yahoo.config.provision; import com.yahoo.cloud.config.ApplicationIdConfig; -import java.util.Comparator; -import java.util.Objects; -import java.util.regex.Pattern; - /** * A complete, immutable identification of an application instance. * @@ -14,40 +10,27 @@ import java.util.regex.Pattern; * @author vegard * @author bratseth */ -public class ApplicationId implements Comparable<ApplicationId> { - - // TODO: remove '.' and '*' from this pattern. - static final Pattern namePattern = Pattern.compile("(?!\\.\\.)[a-zA-Z0-9_.*-]{1,64}"); - - private static final ApplicationId global = new ApplicationId(TenantName.from("*"), - ApplicationName.from("*"), - InstanceName.from("*")) { - @Override public boolean equals(Object other) { return this == other; } - }; - - private static final Comparator<ApplicationId> comparator = Comparator.comparing(ApplicationId::tenant) - .thenComparing(ApplicationId::application) - .thenComparing(ApplicationId::instance) - .thenComparing(global::equals, Boolean::compare); +public final class ApplicationId implements Comparable<ApplicationId> { private final TenantName tenant; private final ApplicationName application; private final InstanceName instance; + + private final String stringValue; private final String serializedForm; + public ApplicationId(ApplicationIdConfig config) { + this(TenantName.from(config.tenant()), ApplicationName.from(config.application()), InstanceName.from(config.instance())); + } + private ApplicationId(TenantName tenant, ApplicationName applicationName, InstanceName instanceName) { this.tenant = tenant; this.application = applicationName; this.instance = instanceName; + this.stringValue = toStringValue(); this.serializedForm = toSerializedForm(); } - public static ApplicationId from(ApplicationIdConfig config) { - return from(TenantName.from(config.tenant()), - ApplicationName.from(config.application()), - InstanceName.from(config.instance())); - } - public static ApplicationId from(TenantName tenant, ApplicationName application, InstanceName instance) { return new ApplicationId(tenant, application, instance); } @@ -61,7 +44,7 @@ public class ApplicationId implements Comparable<ApplicationId> { if (parts.length < 3) throw new IllegalArgumentException("Application ids must be on the form tenant:application:instance, but was " + idString); - return from(parts[0], parts[1], parts[2]); + return new Builder().tenant(parts[0]).applicationName(parts[1]).instanceName(parts[2]).build(); } public static ApplicationId fromFullString(String idString) { @@ -69,11 +52,11 @@ public class ApplicationId implements Comparable<ApplicationId> { if (parts.length < 3) throw new IllegalArgumentException("Application ids must be on the form tenant.application.instance, but was " + idString); - return from(parts[0], parts[1], parts[2]); + return new Builder().tenant(parts[0]).applicationName(parts[1]).instanceName(parts[2]).build(); } @Override - public int hashCode() { return Objects.hash(tenant, application, instance); } + public int hashCode() { return stringValue.hashCode(); } @Override public boolean equals(Object other) { @@ -89,6 +72,10 @@ public class ApplicationId implements Comparable<ApplicationId> { /** Returns a serialized form of the content of this: tenant:application:instance */ public String serializedForm() { return serializedForm; } + private String toStringValue() { + return "tenant '" + tenant + "', application '" + application + "', instance '" + instance + "'"; + } + /** Returns "dotted" string (tenant.application.instance) with instance name omitted if it is "default" */ public String toShortString() { return tenant().value() + "." + application().value() + @@ -101,7 +88,7 @@ public class ApplicationId implements Comparable<ApplicationId> { } private String toSerializedForm() { - return tenant.value() + ":" + application.value() + ":" + instance.value(); + return tenant + ":" + application + ":" + instance; } @Override @@ -113,7 +100,18 @@ public class ApplicationId implements Comparable<ApplicationId> { @Override public int compareTo(ApplicationId other) { - return comparator.compare(this, other); + int diff; + + diff = tenant.compareTo(other.tenant); + if (diff != 0) { return diff; } + + diff = application.compareTo(other.application); + if (diff != 0) { return diff; } + + diff = instance.compareTo(other.instance); + if (diff != 0) { return diff; } + + return 0; } /** Returns an application id where all fields are "default" */ @@ -121,10 +119,12 @@ public class ApplicationId implements Comparable<ApplicationId> { return new ApplicationId(TenantName.defaultName(), ApplicationName.defaultName(), InstanceName.defaultName()); } - // TODO: kill this - /** Returns a very special application id, which is not equal to any other id. */ + /** Returns an application id where all fields are "*" */ public static ApplicationId global() { - return global; + return new Builder().tenant("*") + .applicationName("*") + .instanceName("*") + .build(); } public static class Builder { diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationName.java index f2585913015..f16c126dec2 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationName.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ApplicationName.java @@ -1,7 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.provision; -import ai.vespa.validation.PatternedStringWrapper; +import java.util.Objects; /** * Represents an applications name, which may be any kind of string or default. This type is defined @@ -10,12 +10,28 @@ import ai.vespa.validation.PatternedStringWrapper; * @author Ulf Lilleengen * @since 5.25 */ -public class ApplicationName extends PatternedStringWrapper<ApplicationName> { +public class ApplicationName implements Comparable<ApplicationName> { - private static final ApplicationName defaultName = new ApplicationName("default"); + private final String applicationName; - private ApplicationName(String name) { - super(name, ApplicationId.namePattern, "application name"); + private ApplicationName(String applicationName) { + this.applicationName = applicationName; + } + + @Override + public int hashCode() { + return applicationName.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof ApplicationName)) return false; + return Objects.equals(((ApplicationName) obj).applicationName, applicationName); + } + + @Override + public String toString() { + return applicationName; } public static ApplicationName from(String name) { @@ -23,11 +39,20 @@ public class ApplicationName extends PatternedStringWrapper<ApplicationName> { } public static ApplicationName defaultName() { - return defaultName; + return new ApplicationName("default"); } public boolean isDefault() { - return equals(defaultName); + return equals(ApplicationName.defaultName()); + } + + public String value() { + return applicationName; + } + + @Override + public int compareTo(ApplicationName name) { + return this.applicationName.compareTo(name.applicationName); } } diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/InstanceName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/InstanceName.java index fc40d351465..8101b70b943 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/InstanceName.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/InstanceName.java @@ -1,7 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.provision; -import ai.vespa.validation.PatternedStringWrapper; +import java.util.Objects; /** * Represents an applications instance name, which may be any kind of string or default. This type is defined @@ -9,12 +9,30 @@ import ai.vespa.validation.PatternedStringWrapper; * * @author Ulf Lilleengen */ -public class InstanceName extends PatternedStringWrapper<InstanceName> { +public class InstanceName implements Comparable<InstanceName> { - private static final InstanceName defaultName = new InstanceName("default"); + private static final InstanceName defaultInstance = new InstanceName("default"); - private InstanceName(String name) { - super(name, ApplicationId.namePattern, "instance name"); + private final String instanceName; + + private InstanceName(String instanceName) { + this.instanceName = instanceName; + } + + @Override + public int hashCode() { + return instanceName.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof InstanceName)) return false; + return Objects.equals(((InstanceName) obj).instanceName, instanceName); + } + + @Override + public String toString() { + return instanceName; } public static InstanceName from(String name) { @@ -22,15 +40,22 @@ public class InstanceName extends PatternedStringWrapper<InstanceName> { } public static InstanceName defaultName() { - return defaultName; + return defaultInstance; } public boolean isDefault() { - return equals(defaultName); + return equals(InstanceName.defaultName()); } public boolean isTester() { return value().endsWith("-t"); } + public String value() { return instanceName; } + + @Override + public int compareTo(InstanceName instance) { + return instanceName.compareTo(instance.instanceName); + } + } diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/TenantName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/TenantName.java index 9909ab360a0..92fe5345b4e 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/TenantName.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/TenantName.java @@ -1,31 +1,56 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.provision; -import ai.vespa.validation.PatternedStringWrapper; +import java.util.Objects; /** * Represents a tenant in the provision API. * * @author Ulf Lilleengen */ -public class TenantName extends PatternedStringWrapper<TenantName> { +public class TenantName implements Comparable<TenantName> { - private static final TenantName defaultName = new TenantName("default"); + private final String name; private TenantName(String name) { - super(name, ApplicationId.namePattern, "tenant name"); + this.name = name; } + public String value() { return name; } + + /** + * Create a {@link TenantName} with a given name. + * + * @param name Name of tenant. + * @return instance of {@link TenantName}. + */ public static TenantName from(String name) { return new TenantName(name); } + @Override + public int hashCode() { + return name.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof TenantName)) return false; + return Objects.equals(((TenantName)obj).value(), value()); + } + + @Override + public String toString() { + return name; + } + public static TenantName defaultName() { - return defaultName; + return from("default"); } - public boolean isDefault() { - return equals(defaultName); + @Override + public int compareTo(TenantName that) { + return this.name.compareTo(that.name); } } diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationIdTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationIdTest.java index 01904b5eece..c82230f7edf 100644 --- a/config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationIdTest.java +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/ApplicationIdTest.java @@ -106,7 +106,7 @@ public class ApplicationIdTest { builder.tenant("a"); builder.application("b"); builder.instance("c"); - ApplicationId applicationId = ApplicationId.from(new ApplicationIdConfig(builder)); + ApplicationId applicationId = new ApplicationId(new ApplicationIdConfig(builder)); assertEquals("a", applicationId.tenant().value()); assertEquals("b", applicationId.application().value()); assertEquals("c", applicationId.instance().value()); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponses.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponses.java index 7e6fccb6d2f..d3976464bde 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponses.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponses.java @@ -193,9 +193,10 @@ public class DelayedConfigResponses { } private synchronized void metricDelayedResponses(ApplicationId app, int elems) { - metrics.computeIfAbsent(app, key -> rpcServer.metricUpdaterFactory() - .getOrCreateMetricUpdater(Metrics.createDimensions(key))) - .setDelayedResponses(elems); + if ( ! metrics.containsKey(app)) { + metrics.put(app, rpcServer.metricUpdaterFactory().getOrCreateMetricUpdater(Metrics.createDimensions(app))); + } + metrics.get(app).setDelayedResponses(elems); } private synchronized void createQueueIfNotExists(GetConfigContext context) { diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java index ebf1fb32141..99ffff6403b 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java @@ -243,9 +243,13 @@ public class RpcServer implements Runnable, ReloadListener, TenantListener { } private ApplicationState getState(ApplicationId id) { - return applicationStateMap.computeIfAbsent(id, __ -> new ApplicationState(0)); + ApplicationState state = applicationStateMap.get(id); + if (state == null) { + applicationStateMap.putIfAbsent(id, new ApplicationState(0)); + state = applicationStateMap.get(id); + } + return state; } - boolean hasNewerGeneration(ApplicationId id, long generation) { return getState(id).getActiveGeneration() > generation; } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java index 68ebc5e86aa..fe7beb538da 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java @@ -20,6 +20,6 @@ public class NodeRepoStats { public Load load() { return load; } public Load activeLoad() { return activeLoad; } - public List<ApplicationStats> applicationStats() { return applicationStats; } + public List<ApplicationStats> applicationStats() { return applicationStats; } } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java index 1a4a42cb521..158cc6caede 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/deployment/DeploymentApiHandler.java @@ -30,7 +30,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.TreeMap; import java.util.logging.Level; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -133,7 +132,7 @@ public class DeploymentApiHandler extends ThreadedHttpRequestHandler { entry -> entry.getValue().instanceJobs().get(entry.getKey()))); Cursor productionArray = versionObject.setArray("productionApplications"); statistics.productionSuccesses().stream() - .collect(groupingBy(run -> run.id().application(), TreeMap::new, toList())) + .collect(groupingBy(run -> run.id().application())) .forEach((id, runs) -> { Cursor applicationObject = productionArray.addObject(); toSlime(applicationObject, id, request); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java index a464e3d7e9b..640e6860eb6 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/ApplicationPackageBuilder.java @@ -264,38 +264,36 @@ public class ApplicationPackageBuilder { xml.append(athenzIdentityAttributes); } xml.append(">\n"); - for (String instance : instances.split(",")) { - xml.append(" <instance id='").append(instance).append("'>\n"); - if (upgradePolicy != null || revisionTarget != null || revisionChange != null || upgradeRollout != null) { - xml.append(" <upgrade "); - if (upgradePolicy != null) xml.append("policy='").append(upgradePolicy).append("' "); - if (revisionTarget != null) xml.append("revision-target='").append(revisionTarget).append("' "); - if (revisionChange != null) xml.append("revision-change='").append(revisionChange).append("' "); - if (upgradeRollout != null) xml.append("rollout='").append(upgradeRollout).append("' "); - xml.append("/>\n"); - } - xml.append(notifications); - if (explicitSystemTest) - xml.append(" <test />\n"); - if (explicitStagingTest) - xml.append(" <staging />\n"); - xml.append(blockChange); - xml.append(" <prod"); - if (globalServiceId != null) { - xml.append(" global-service-id='"); - xml.append(globalServiceId); - xml.append("'"); - } - xml.append(">\n"); - xml.append(prodBody); - xml.append(" </prod>\n"); - if (endpointsBody.length() > 0) { - xml.append(" <endpoints>\n"); - xml.append(endpointsBody); - xml.append(" </endpoints>\n"); - } - xml.append(" </instance>\n"); + xml.append(" <instance id='").append(instances).append("'>\n"); + if (upgradePolicy != null || revisionTarget != null || revisionChange != null || upgradeRollout != null) { + xml.append(" <upgrade "); + if (upgradePolicy != null) xml.append("policy='").append(upgradePolicy).append("' "); + if (revisionTarget != null) xml.append("revision-target='").append(revisionTarget).append("' "); + if (revisionChange != null) xml.append("revision-change='").append(revisionChange).append("' "); + if (upgradeRollout != null) xml.append("rollout='").append(upgradeRollout).append("' "); + xml.append("/>\n"); + } + xml.append(notifications); + if (explicitSystemTest) + xml.append(" <test />\n"); + if (explicitStagingTest) + xml.append(" <staging />\n"); + xml.append(blockChange); + xml.append(" <prod"); + if (globalServiceId != null) { + xml.append(" global-service-id='"); + xml.append(globalServiceId); + xml.append("'"); + } + xml.append(">\n"); + xml.append(prodBody); + xml.append(" </prod>\n"); + if (endpointsBody.length() > 0 ) { + xml.append(" <endpoints>\n"); + xml.append(endpointsBody); + xml.append(" </endpoints>\n"); } + xml.append(" </instance>\n"); if (applicationEndpointsBody.length() > 0) { xml.append(" <endpoints>\n"); xml.append(applicationEndpointsBody); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java index 7b67db39350..a2a1b4ba0a1 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/NodeRepositoryMock.java @@ -26,7 +26,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.TreeMap; import java.util.function.UnaryOperator; import java.util.stream.Collectors; @@ -225,7 +224,7 @@ public class NodeRepositoryMock implements NodeRepository { } public void putApplication(ZoneId zone, Application application) { - applications.computeIfAbsent(zone, (k) -> new TreeMap<>()) + applications.computeIfAbsent(zone, (k) -> new HashMap<>()) .put(application.id(), application); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java index a9abc352d8c..379bb2566df 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDatabaseClient.java @@ -43,8 +43,8 @@ import java.util.logging.Logger; import java.util.stream.Collectors; import java.util.stream.IntStream; -import static com.yahoo.stream.CustomCollectors.toLinkedMap; import static java.util.stream.Collectors.collectingAndThen; +import static java.util.stream.Collectors.toMap; /** * Client which reads and writes nodes to a curator database. @@ -453,8 +453,7 @@ public class CuratorDatabaseClient { .map(this::readLoadBalancer) .filter(Optional::isPresent) .map(Optional::get) - .collect(collectingAndThen(toLinkedMap(LoadBalancer::id, - Function.identity()), + .collect(collectingAndThen(toMap(LoadBalancer::id, Function.identity()), Collections::unmodifiableMap)); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java index 48ee23c7b60..cc121ba8104 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializerTest.java @@ -334,9 +334,6 @@ public class NodeSerializerTest { " \"hostname\" : \"myHostname\",\n" + " \"ipAddresses\" : [\"127.0.0.1\"],\n" + " \"instance\": {\n" + - " \"tenantId\":\"t\",\n" + - " \"applicationId\":\"a\",\n" + - " \"instanceId\":\"i\",\n" + " \"serviceId\": \"content/myId/0/0/stateful\",\n" + " \"wantedVespaVersion\": \"6.42.2\"\n" + " }\n" + diff --git a/routing-generator/src/main/java/com/yahoo/vespa/hosted/routing/nginx/NginxMetricsReporter.java b/routing-generator/src/main/java/com/yahoo/vespa/hosted/routing/nginx/NginxMetricsReporter.java index b9ab1dbe9b6..79381b8c99e 100644 --- a/routing-generator/src/main/java/com/yahoo/vespa/hosted/routing/nginx/NginxMetricsReporter.java +++ b/routing-generator/src/main/java/com/yahoo/vespa/hosted/routing/nginx/NginxMetricsReporter.java @@ -58,7 +58,7 @@ public class NginxMetricsReporter extends AbstractComponent implements Runnable @Inject public NginxMetricsReporter(ApplicationIdConfig applicationId, Metric metric, HealthStatus healthStatus, RoutingGenerator routingGenerator) { - this(ApplicationId.from(applicationId), metric, healthStatus, FileSystems.getDefault(), interval, routingGenerator::routingTable); + this(new ApplicationId(applicationId), metric, healthStatus, FileSystems.getDefault(), interval, routingGenerator::routingTable); } NginxMetricsReporter(ApplicationId application, Metric metric, HealthStatus healthStatus, FileSystem fileSystem, Duration interval, diff --git a/testutil/src/main/java/com/yahoo/test/OrderTester.java b/testutil/src/main/java/com/yahoo/test/OrderTester.java index cc28ca9f469..4acba4ee7fe 100644 --- a/testutil/src/main/java/com/yahoo/test/OrderTester.java +++ b/testutil/src/main/java/com/yahoo/test/OrderTester.java @@ -15,8 +15,8 @@ import java.util.List; * */ -public abstract class OrderTester<T extends Comparable<? super T>> { - private final ArrayList<List<T>> groups = new ArrayList<>(); +public abstract class OrderTester<T extends Comparable<T>> { + private ArrayList<List<T>> groups = new ArrayList<>(); abstract protected void lessTest(T a, T b); abstract protected void greaterTest(T a, T b); @@ -24,7 +24,7 @@ public abstract class OrderTester<T extends Comparable<? super T>> { @SafeVarargs @SuppressWarnings("varargs") - private OrderTester<T> addGroup(T... group) { + private final OrderTester<T> addGroup(T... group) { groups.add(Arrays.asList(group)); return this; } diff --git a/testutil/src/main/java/com/yahoo/test/TotalOrderTester.java b/testutil/src/main/java/com/yahoo/test/TotalOrderTester.java index e95bc056ba8..850369fbc2e 100644 --- a/testutil/src/main/java/com/yahoo/test/TotalOrderTester.java +++ b/testutil/src/main/java/com/yahoo/test/TotalOrderTester.java @@ -20,7 +20,7 @@ import static org.junit.Assert.assertTrue; * @author Vegard Sjonfjell */ -public class TotalOrderTester<T extends Comparable<? super T>> extends OrderTester<T> { +public class TotalOrderTester<T extends Comparable<T>> extends OrderTester<T> { protected void lessTest(T a, T b) throws AssertionError { assertTrue(a + " must be less than " + b, a.compareTo(b) <= -1); } diff --git a/vespajlib/src/main/java/ai/vespa/validation/Name.java b/vespajlib/src/main/java/ai/vespa/validation/Name.java index a6ab456c285..b275917dcff 100644 --- a/vespajlib/src/main/java/ai/vespa/validation/Name.java +++ b/vespajlib/src/main/java/ai/vespa/validation/Name.java @@ -3,6 +3,8 @@ package ai.vespa.validation; import java.util.regex.Pattern; +import static ai.vespa.validation.Validation.requireMatch; + /** * A name has from 1 to 64 {@link String} characters which may be letters, numbers, * dashes or underscores, and must start with a letter. diff --git a/vespajlib/src/main/java/ai/vespa/validation/package-info.java b/vespajlib/src/main/java/ai/vespa/validation/package-info.java deleted file mode 100644 index edbab3a6fd1..00000000000 --- a/vespajlib/src/main/java/ai/vespa/validation/package-info.java +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -@ExportPackage -package ai.vespa.validation; - -import com.yahoo.osgi.annotation.ExportPackage; diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java index 7c91e54dd4b..bd3389b8d4d 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java @@ -36,7 +36,7 @@ public class MockCurator extends Curator { /** * Creates a mock curator * - * @param stableOrdering if true children of a node are returned in the same order each time they are queried. + * @param stableOrdering if true children of a node are returned in the same order each time they are queries. * This is not what ZooKeeper does. */ public MockCurator(boolean stableOrdering) { |