diff options
author | HÃ¥kon Hallingstad <hakon.hallingstad@gmail.com> | 2023-02-10 23:50:04 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-10 23:50:04 +0100 |
commit | 31b7cd9833fe8ecf783148b8510ee67222934d18 (patch) | |
tree | 22c7412683c8a6990355083d485cbed05e75504c /configserver/src | |
parent | 6f6a7ee65709642ea32e250eca618ffcf6a08e20 (diff) | |
parent | 4d74de92bf39aa834b93ee3a6aee7847b4de5d31 (diff) |
Merge pull request #25973 from vespa-engine/hmusum/ungenerify-HostValidator
Ungenerify host validator
Diffstat (limited to 'configserver/src')
6 files changed, 19 insertions, 27 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java index 2a0d62a1c9a..5831cb3e75f 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/TenantApplications.java @@ -57,7 +57,7 @@ import static java.util.stream.Collectors.toSet; * @author Ulf Lilleengen * @author jonmv */ -public class TenantApplications implements RequestHandler, HostValidator<ApplicationId> { +public class TenantApplications implements RequestHandler, HostValidator { private static final Logger log = Logger.getLogger(TenantApplications.class.getName()); @@ -402,10 +402,6 @@ public class TenantApplications implements RequestHandler, HostValidator<Applica configActivationListener.verifyHostsAreAvailable(applicationId, newHosts); } - public HostValidator<ApplicationId> getHostValidator() { - return this; - } - public ApplicationId getApplicationIdForHostName(String hostname) { return hostRegistry.getKeyForHost(hostname); } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistry.java b/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistry.java index 5c161a5f746..b89f3bba835 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistry.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostRegistry.java @@ -1,27 +1,25 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.config.server.host; +import com.google.common.collect.Collections2; +import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.TenantName; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; -import com.google.common.collect.Collections2; -import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.TenantName; - -import java.util.logging.Level; - /** * A host registry with a mapping between hosts (hostname as a String) and some type T * TODO: Maybe we should have a Host type, but using String for now. * * @author Ulf Lilleengen */ -public class HostRegistry implements HostValidator<ApplicationId> { +public class HostRegistry implements HostValidator { private static final Logger log = Logger.getLogger(HostRegistry.class.getName()); @@ -43,10 +41,10 @@ public class HostRegistry implements HostValidator<ApplicationId> { } @Override - public synchronized void verifyHosts(ApplicationId key, Collection<String> newHosts) { + public synchronized void verifyHosts(ApplicationId applicationId, Collection<String> newHosts) { for (String host : newHosts) { - if (hostAlreadyTaken(host, key)) { - throw new IllegalArgumentException("'" + key + "' tried to allocate host '" + host + + if (hostAlreadyTaken(host, applicationId)) { + throw new IllegalArgumentException("'" + applicationId + "' tried to allocate host '" + host + "', but the host is already taken by '" + host2KeyMap.get(host) + "'"); } } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostValidator.java b/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostValidator.java index 0d3cbb3860b..115d135b0c1 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostValidator.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/host/HostValidator.java @@ -1,16 +1,16 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.config.server.host; +import com.yahoo.config.provision.ApplicationId; import java.util.Collection; /** - * A read only host registry that has mappings from a host to some type T. - * strings. + * A read only host registry that has mappings from a host to application id * * @author Ulf Lilleengen */ -public interface HostValidator<T> { +public interface HostValidator { - void verifyHosts(T key, Collection<String> newHosts); + void verifyHosts(ApplicationId applicationId, Collection<String> newHosts); } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java index 18f33224d83..1bfa94a1355 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java @@ -45,7 +45,6 @@ import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.logging.Level; import java.util.logging.Logger; -import java.util.stream.Collectors; /** * @author bratseth @@ -59,7 +58,7 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P private final List<ContainerEndpoint> containerEndpoints; private final Optional<EndpointCertificateSecrets> endpointCertificateSecrets; private final ConfigDefinitionRepo configDefinitionRepo; - private final HostValidator<ApplicationId> hostValidator; + private final HostValidator hostValidator; private final PrepareParams params; private final FileRegistry fileRegistry; private final Optional<ApplicationSet> currentActiveApplicationSet; @@ -76,7 +75,7 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P ExecutorService executor, HostProvisionerProvider hostProvisionerProvider, Curator curator, - HostValidator<ApplicationId> hostValidator, + HostValidator hostValidator, DeployLogger deployLogger, PrepareParams params, Optional<ApplicationSet> currentActiveApplicationSet, @@ -171,7 +170,7 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P } } - private void validateModelHosts(HostValidator<ApplicationId> hostValidator, ApplicationId applicationId, Model model) { + private void validateModelHosts(HostValidator hostValidator, ApplicationId applicationId, Model model) { // Will retry here, since hosts used might not be in sync on all config servers (we wait for 2/3 servers // to respond to deployments and deletions). Instant end = Instant.now().plus(Duration.ofSeconds(1)); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java index 17a019067a3..ffafbb8827e 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java @@ -126,7 +126,7 @@ public class SessionPreparer { * @param activeApplicationSet set of currently active applications. * @return the config change actions that must be done to handle the activation of the models prepared. */ - public PrepareResult prepare(HostValidator<ApplicationId> hostValidator, DeployLogger logger, PrepareParams params, + public PrepareResult prepare(HostValidator hostValidator, DeployLogger logger, PrepareParams params, Optional<ApplicationSet> activeApplicationSet, Instant now, File serverDbSessionDir, ApplicationPackage applicationPackage, SessionZooKeeperClient sessionZooKeeperClient) { ApplicationId applicationId = params.getApplicationId(); @@ -181,7 +181,7 @@ public class SessionPreparer { private final PreparedModelsBuilder preparedModelsBuilder; private final FileRegistry fileRegistry; - Preparation(HostValidator<ApplicationId> hostValidator, DeployLogger logger, PrepareParams params, + Preparation(HostValidator hostValidator, DeployLogger logger, PrepareParams params, Optional<ApplicationSet> currentActiveApplicationSet, Path tenantPath, File serverDbSessionDir, ApplicationPackage applicationPackage, SessionZooKeeperClient sessionZooKeeperClient) { diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java index 306b24a3c69..a0597b77539 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionRepository.java @@ -13,7 +13,6 @@ import com.yahoo.config.model.api.ConfigDefinitionRepo; import com.yahoo.config.model.application.provider.DeployData; import com.yahoo.config.model.application.provider.FilesApplicationPackage; import com.yahoo.config.provision.ApplicationId; -import com.yahoo.config.provision.Tags; import com.yahoo.config.provision.TenantName; import com.yahoo.config.provision.Zone; import com.yahoo.container.jdisc.secretstore.SecretStore; @@ -243,7 +242,7 @@ public class SessionRepository { ? Optional.empty() : Optional.of(sessionZooKeeperClient.createPrepareWaiter()); Optional<ApplicationSet> activeApplicationSet = getActiveApplicationSet(params.getApplicationId()); - ConfigChangeActions actions = sessionPreparer.prepare(applicationRepo.getHostValidator(), logger, params, + ConfigChangeActions actions = sessionPreparer.prepare(applicationRepo, logger, params, activeApplicationSet, now, getSessionAppDir(sessionId), session.getApplicationPackage(), sessionZooKeeperClient) .getConfigChangeActions(); |