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 /config-model | |
parent | e5c92075e6f0e9caaa6c81254be889c3dba77634 (diff) |
Move cluster restarting -> defer config inside model
Diffstat (limited to 'config-model')
4 files changed, 22 insertions, 5 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java index f19341098f4..647745eba5d 100644 --- a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java +++ b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java @@ -27,6 +27,7 @@ import com.yahoo.config.model.application.provider.MockFileRegistry; import com.yahoo.config.model.provision.HostsXmlProvisioner; import com.yahoo.config.model.provision.SingleNodeProvisioner; import com.yahoo.config.model.test.MockApplicationPackage; +import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.DockerImage; import com.yahoo.config.provision.Zone; import com.yahoo.io.IOUtils; @@ -92,6 +93,7 @@ public class DeployState implements ConfigDefinitionStore { private final Reindexing reindexing; private final ExecutorService executor; private final OnnxModelCost onnxModelCost; + private final Set<ClusterSpec.Id> restartingClusters; public static DeployState createTestState() { return new Builder().build(); @@ -127,7 +129,8 @@ public class DeployState implements ConfigDefinitionStore { Optional<DockerImage> wantedDockerImageRepo, Reindexing reindexing, Optional<ValidationOverrides> validationOverrides, - OnnxModelCost onnxModelCost) { + OnnxModelCost onnxModelCost, + Set<ClusterSpec.Id> restartingClusters) { this.logger = deployLogger; this.fileRegistry = fileRegistry; this.executor = executor; @@ -156,6 +159,7 @@ public class DeployState implements ConfigDefinitionStore { this.wantedDockerImageRepo = wantedDockerImageRepo; this.reindexing = reindexing; this.onnxModelCost = onnxModelCost; + this.restartingClusters = Set.copyOf(restartingClusters); } public static HostProvisioner getDefaultModelHostProvisioner(ApplicationPackage applicationPackage) { @@ -311,6 +315,8 @@ public class DeployState implements ConfigDefinitionStore { public OnnxModelCost onnxModelCost() { return onnxModelCost; } + public Set<ClusterSpec.Id> restartingClusters() { return restartingClusters; } + public boolean isHostedTenantApplication(ApplicationType type) { boolean isTesterApplication = getProperties().applicationId().instance().isTester(); return isHosted() && type == ApplicationType.DEFAULT && !isTesterApplication; @@ -340,6 +346,7 @@ public class DeployState implements ConfigDefinitionStore { private Reindexing reindexing = null; private Optional<ValidationOverrides> validationOverrides = Optional.empty(); private OnnxModelCost onnxModelCost = OnnxModelCost.disabled(); + private Set<ClusterSpec.Id> restartingClusters = Set.of(); public Builder() {} @@ -459,6 +466,11 @@ public class DeployState implements ConfigDefinitionStore { public Builder onnxModelCost(OnnxModelCost instance) { this.onnxModelCost = instance; return this; } + public Builder restartingClusters(Set<ClusterSpec.Id> restartingClusters) { + this.restartingClusters = Set.copyOf(restartingClusters); + return this; + } + public DeployState build() { return build(new ValidationParameters()); } @@ -492,7 +504,8 @@ public class DeployState implements ConfigDefinitionStore { wantedDockerImageRepo, reindexing, validationOverrides, - onnxModelCost); + onnxModelCost, + restartingClusters); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java index 65572d07cc2..1b9d4004b5d 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java @@ -198,7 +198,8 @@ public class VespaModelFactory implements ModelFactory { .now(clock.instant()) .wantedNodeVespaVersion(modelContext.wantedNodeVespaVersion()) .wantedDockerImageRepo(modelContext.wantedDockerImageRepo()) - .onnxModelCost(modelContext.onnxModelCost()); + .onnxModelCost(modelContext.onnxModelCost()) + .restartingClusters(modelContext.restartingClusters()); modelContext.previousModel().ifPresent(builder::previousModel); modelContext.reindexing().ifPresent(builder::reindexing); return builder.build(validationParameters); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java index 9896ca95e97..3fc194a505e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java @@ -50,6 +50,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Optional; import java.util.Set; +import java.util.logging.Level; import java.util.stream.Collectors; import static com.yahoo.vespa.model.container.docproc.DocprocChains.DOCUMENT_TYPE_MANAGER_CLASS; @@ -153,8 +154,10 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat registerApplicationBundles(deployState); registerUserConfiguredFiles(deployState); createEndpoints(deployState); - if (onnxModelCostCalculator.restartOnDeploy()) + if (onnxModelCostCalculator.restartOnDeploy() || deployState.restartingClusters().contains(id())) { + deployState.getDeployLogger().log(Level.INFO, "Deferring config change until restart for cluster '" + id() + "'"); setDeferChangesUntilRestart(true); + } } private void registerApplicationBundles(DeployState deployState) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java index aeb6c030a49..799e0bd62e8 100755 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java @@ -166,7 +166,7 @@ public abstract class ContainerCluster<CONTAINER extends Container> private String hostClusterId = null; private String jvmGCOptions = null; - private volatile boolean deferChangesUntilRestart = false; + private boolean deferChangesUntilRestart = false; private boolean clientsLegacyMode; private List<Client> clients = List.of(); |