diff options
5 files changed, 19 insertions, 11 deletions
diff --git a/configdefinitions/src/vespa/configserver.def b/configdefinitions/src/vespa/configserver.def index 6833c00da8e..daaf8906d24 100644 --- a/configdefinitions/src/vespa/configserver.def +++ b/configdefinitions/src/vespa/configserver.def @@ -67,3 +67,4 @@ sleepTimeWhenRedeployingFails long default=30 # Feature Flags (poor man's feature flags, to be overridden in configserver-config.xml if needed) deleteApplicationLegacy bool default=false +buildMinimalSetOfConfigModels bool default=true diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java index 2955d948d69..c18d3c7fe48 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java @@ -46,21 +46,19 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> { private final long appGeneration; private final SessionZooKeeperClient zkClient; private final PermanentApplicationPackage permanentApplicationPackage; - private final ConfigserverConfig configserverConfig; private final ConfigDefinitionRepo configDefinitionRepo; private final Metrics metrics; private final Curator curator; private final DeployLogger logger; public ActivatedModelsBuilder(TenantName tenant, long appGeneration, SessionZooKeeperClient zkClient, GlobalComponentRegistry globalComponentRegistry) { - super(globalComponentRegistry.getModelFactoryRegistry(), - globalComponentRegistry.getHostProvisioner().isPresent(), + super(globalComponentRegistry.getModelFactoryRegistry(), + globalComponentRegistry.getConfigserverConfig(), globalComponentRegistry.getZone()); this.tenant = tenant; this.appGeneration = appGeneration; this.zkClient = zkClient; this.permanentApplicationPackage = globalComponentRegistry.getPermanentApplicationPackage(); - this.configserverConfig = globalComponentRegistry.getConfigserverConfig(); this.configDefinitionRepo = globalComponentRegistry.getConfigDefinitionRepo(); this.metrics = globalComponentRegistry.getMetrics(); this.curator = globalComponentRegistry.getCurator(); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java index 1b77d5321e7..7bb77fdcbff 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ModelsBuilder.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.config.server.modelfactory; import com.google.common.util.concurrent.UncheckedTimeoutException; +import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.model.api.HostProvisioner; import com.yahoo.config.model.api.ModelFactory; @@ -10,6 +11,7 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ApplicationLockException; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.OutOfCapacityException; +import com.yahoo.config.provision.SystemName; import com.yahoo.config.provision.Version; import com.yahoo.config.provision.Zone; import com.yahoo.lang.SettableOptional; @@ -42,15 +44,17 @@ public abstract class ModelsBuilder<MODELRESULT extends ModelResult> { private static final Logger log = Logger.getLogger(ModelsBuilder.class.getName()); private final ModelFactoryRegistry modelFactoryRegistry; + protected final ConfigserverConfig configserverConfig; /** True if we are running in hosted mode */ private final boolean hosted; private final Zone zone; - protected ModelsBuilder(ModelFactoryRegistry modelFactoryRegistry, boolean hosted, Zone zone) { + protected ModelsBuilder(ModelFactoryRegistry modelFactoryRegistry, ConfigserverConfig configserverConfig, Zone zone) { this.modelFactoryRegistry = modelFactoryRegistry; - this.hosted = hosted; + this.configserverConfig = configserverConfig; + this.hosted = configserverConfig.hostedVespa(); this.zone = zone; } @@ -143,8 +147,10 @@ public abstract class ModelsBuilder<MODELRESULT extends ModelResult> { allApplicationVersions.add(latestModelVersion); // TODO: Enable for all zones - // Note: Cannot be enabled for prod zones yet, due to an issue with how AccessControlValidator works - if (Arrays.asList(Environment.dev, Environment.test, Environment.staging).contains(zone().environment())) + if (configserverConfig.buildMinimalSetOfConfigModels() && + (SystemName.from(configserverConfig.system()) == SystemName.cd || + Arrays.asList(Environment.dev, Environment.test, Environment.staging).contains(zone().environment()) || + Arrays.asList("corp-us-east-1", "ap-southeast-1").contains(zone().region().value()))) versions = keepThoseUsedOn(allocatedHosts.get(), versions); // Make sure we build wanted version if we are building models for this major version and we are on hosted vespa 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 ba093ca9db1..56bdd432d90 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 @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.config.server.modelfactory; +import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.model.api.ConfigChangeAction; @@ -64,8 +65,9 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P DeployLogger logger, PrepareParams params, Optional<ApplicationSet> currentActiveApplicationSet, - ModelContext.Properties properties) { - super(modelFactoryRegistry, properties.hostedVespa(), properties.zone()); + ModelContext.Properties properties, + ConfigserverConfig configserverConfig) { + super(modelFactoryRegistry, configserverConfig, properties.zone()); this.permanentApplicationPackage = permanentApplicationPackage; this.configDefinitionRepo = configDefinitionRepo; 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 6a240806004..49287669a06 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 @@ -169,7 +169,8 @@ public class SessionPreparer { logger, params, currentActiveApplicationSet, - properties); + properties, + configserverConfig); } void checkTimeout(String step) { |