diff options
author | jonmv <venstad@gmail.com> | 2024-01-15 11:36:04 +0100 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2024-01-15 11:36:04 +0100 |
commit | bc9dc71c2c8bae4e177cdb0054e0e52f1d578d09 (patch) | |
tree | 3f63e3a1bfd36371c09e672e2cfdd98a54cb37ab /configserver | |
parent | e5c92075e6f0e9caaa6c81254be889c3dba77634 (diff) |
Move cluster restarting -> defer config inside model
Diffstat (limited to 'configserver')
4 files changed, 14 insertions, 12 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java index 5dd04c102c4..df01d1edac3 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java @@ -22,6 +22,7 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.AthenzDomain; import com.yahoo.config.provision.CloudAccount; import com.yahoo.config.provision.ClusterSpec; +import com.yahoo.config.provision.ClusterSpec.Id; import com.yahoo.config.provision.DataplaneToken; import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.HostName; @@ -39,6 +40,7 @@ import java.io.File; import java.net.URI; import java.security.cert.X509Certificate; import java.time.Duration; +import java.util.Collection; import java.util.List; import java.util.Optional; import java.util.Set; @@ -67,6 +69,7 @@ public class ModelContextImpl implements ModelContext { private final ModelContext.Properties properties; private final Optional<File> appDir; private final OnnxModelCost onnxModelCost; + private final Set<ClusterSpec.Id> restartingClusters; private final Optional<DockerImage> wantedDockerImageRepository; @@ -94,6 +97,7 @@ public class ModelContextImpl implements ModelContext { ModelContext.Properties properties, Optional<File> appDir, OnnxModelCost onnxModelCost, + Collection<Id> restartingClusters, Optional<DockerImage> wantedDockerImageRepository, Version modelVespaVersion, Version wantedNodeVespaVersion) { @@ -112,6 +116,7 @@ public class ModelContextImpl implements ModelContext { this.modelVespaVersion = modelVespaVersion; this.wantedNodeVespaVersion = wantedNodeVespaVersion; this.onnxModelCost = onnxModelCost; + this.restartingClusters = Set.copyOf(restartingClusters); } @Override @@ -148,6 +153,9 @@ public class ModelContextImpl implements ModelContext { public Optional<? extends Reindexing> reindexing() { return reindexing; } @Override + public Set<ClusterSpec.Id> restartingClusters() { return restartingClusters; } + + @Override public ModelContext.Properties properties() { return properties; } @Override 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 64ccd910120..02e49e3990c 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 @@ -118,12 +118,13 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> { modelContextProperties, Optional.empty(), onnxModelCost, + zkClient.readActivationTriggers().restartingClusters(), wantedDockerImageRepository, modelFactory.version(), wantedNodeVespaVersion); MetricUpdater applicationMetricUpdater = metrics.getOrCreateMetricUpdater(Metrics.createDimensions(applicationId)); ServerCache serverCache = new ServerCache(configDefinitionRepo, zkClient.getUserConfigDefinitions()); - return new Application(withDeferredConfigForRestartingClusters(modelFactory.createModel(modelContext)), + return new Application(modelFactory.createModel(modelContext), serverCache, applicationGeneration, modelFactory.version(), @@ -170,15 +171,4 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> { zkClient.readDataplaneTokens()); } - private Model withDeferredConfigForRestartingClusters(Model model) { - if ( ! (model instanceof VespaModel vespaModel)) return model; - for (ClusterSpec.Id cluster : zkClient.readActivationTriggers().restartingClusters()) { - ApplicationContainerCluster containerCluster = vespaModel.getContainerClusters().get(cluster.value()); - if (containerCluster != null) containerCluster.setDeferChangesUntilRestart(true); - ContentCluster contentCluster = vespaModel.getContentClusters().get(cluster.value()); - if (contentCluster != null) contentCluster.setDeferChangesUntilRestart(true); - } - return model; - } - } 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 fd8728ac655..894cedd0a34 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 @@ -128,6 +128,7 @@ public class PreparedModelsBuilder extends ModelsBuilder<PreparedModelsBuilder.P createModelContextProperties(modelFactory.version(), applicationPackage), getAppDir(applicationPackage), onnxModelCost, + Set.of(), // Known after preparation and validation, passed from activated models builder only. wantedDockerImageRepository, modelVersion, wantedNodeVespaVersion); diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java index 3289cc71357..27d82e90197 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java @@ -16,6 +16,7 @@ import com.yahoo.config.model.application.provider.MockFileRegistry; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.test.MockApplicationPackage; import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.ClusterSpec.Id; import com.yahoo.config.provision.Zone; import com.yahoo.container.jdisc.SecretStoreProvider; import com.yahoo.vespa.config.server.deploy.ModelContextImpl; @@ -80,6 +81,7 @@ public class ModelContextImplTest { List.of()), Optional.empty(), OnnxModelCost.disabled(), + List.of(Id.from("foobar")), Optional.empty(), new Version(7), new Version(8)); @@ -88,6 +90,7 @@ public class ModelContextImplTest { assertFalse(context.previousModel().isPresent()); assertTrue(context.getFileRegistry() instanceof MockFileRegistry); assertTrue(context.configDefinitionRepo() instanceof StaticConfigDefinitionRepo); + assertEquals(Set.of(Id.from("foobar")), context.restartingClusters()); assertEquals(ApplicationId.defaultId(), context.properties().applicationId()); assertTrue(context.properties().configServerSpecs().isEmpty()); assertTrue(context.properties().multitenant()); |