summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2020-12-04 14:52:35 +0100
committerGitHub <noreply@github.com>2020-12-04 14:52:35 +0100
commit8091fb8275d26af887ccc6e20058ab4d16787d05 (patch)
tree14862cc0196cff101eef7ddcf68e3c4acea21297
parentf026346fd89244da9a71a1fb9fcf17b1196c066b (diff)
parentc3461d455816ebdc3f1f96fd0cf674a531f031f2 (diff)
Merge pull request #15680 from vespa-engine/bratseth/propagate-restartOnDeploy
Propagate explicit restartOnDeploy to cluster
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java14
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java15
4 files changed, 34 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
index 9fdaaff9d5e..9f9c5def406 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
@@ -29,6 +29,7 @@ import com.yahoo.config.model.producer.AbstractConfigProducerRoot;
import com.yahoo.config.model.producer.UserConfigRepo;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ClusterSpec;
+import com.yahoo.container.QrConfig;
import com.yahoo.searchdefinition.RankProfile;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.RankingConstants;
@@ -190,6 +191,7 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
configModelRepo.prepareConfigModels(deployState);
validateWrapExceptions();
hostSystem.dumpPortAllocations();
+ propagateRestartOnDeploy();
// must happen after stuff above
this.allocatedHosts = AllocatedHosts.withHosts(hostSystem.getHostSpecs());
}
@@ -197,6 +199,18 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
this.allocatedHosts = AllocatedHosts.withHosts(hostSystem.getHostSpecs());
this.fileDistributor = fileDistributor;
}
+
+ }
+
+ private void propagateRestartOnDeploy() {
+ if (applicationPackage.getMetaData().isInternalRedeploy()) return;
+
+ // Propagate application config setting of restartOnDeploy to cluster deferChangesUntilRestart
+ for (ApplicationContainerCluster containerCluster : getContainerClusters().values()) {
+ QrConfig config = getConfig(QrConfig.class, containerCluster.getConfigId());
+ if (config.restartOnDeploy())
+ containerCluster.setDeferChangesUntilRestart(true);
+ }
}
/** Returns the application package owning this */
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 c2a4b1f3bbf..5de03f17958 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
@@ -22,8 +22,10 @@ import com.yahoo.config.model.builder.xml.ConfigModelBuilder;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.TransientException;
import com.yahoo.config.provision.Zone;
+import com.yahoo.container.QrConfig;
import com.yahoo.vespa.config.VespaVersion;
import com.yahoo.vespa.model.application.validation.Validation;
+import com.yahoo.vespa.model.container.ApplicationContainerCluster;
import org.xml.sax.SAXException;
import java.io.IOException;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java
index e028eaea3c1..da3163b5533 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java
@@ -9,6 +9,7 @@ import com.yahoo.config.model.api.Model;
import com.yahoo.config.model.api.ValidationParameters;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.ClusterSpec;
+import com.yahoo.container.QrConfig;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.application.validation.change.ChangeValidator;
import com.yahoo.vespa.model.application.validation.change.ClusterSizeReductionValidator;
@@ -24,6 +25,8 @@ import com.yahoo.vespa.model.application.validation.change.ResourcesReductionVal
import com.yahoo.vespa.model.application.validation.change.StartupCommandChangeValidator;
import com.yahoo.vespa.model.application.validation.change.StreamingSearchClusterChangeValidator;
import com.yahoo.vespa.model.application.validation.first.AccessControlOnFirstDeploymentValidator;
+import com.yahoo.vespa.model.container.ApplicationContainerCluster;
+import com.yahoo.vespa.model.container.Container;
import java.time.Instant;
import java.util.Arrays;
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java
index c1730528a39..ad05180cf60 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.container.QrConfig;
import com.yahoo.vespa.defaults.Defaults;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.config.application.api.ValidationOverrides;
@@ -13,6 +14,7 @@ import java.util.Collections;
import java.util.List;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
@@ -44,6 +46,19 @@ public class ContainerRestartValidatorTest {
assertTrue(result.isEmpty());
}
+ @Test
+ public void restart_on_deploy_is_propagated_to_cluster() {
+ VespaModel model1 = createModel(false);
+ assertFalse(model1.getContainerClusters().get("cluster1").getDeferChangesUntilRestart());
+ assertFalse(model1.getContainerClusters().get("cluster2").getDeferChangesUntilRestart());
+ assertFalse(model1.getContainerClusters().get("cluster3").getDeferChangesUntilRestart());
+
+ VespaModel model2 = createModel(true);
+ assertTrue(model2.getContainerClusters().get("cluster1").getDeferChangesUntilRestart());
+ assertTrue(model2.getContainerClusters().get("cluster2").getDeferChangesUntilRestart());
+ assertFalse(model2.getContainerClusters().get("cluster3").getDeferChangesUntilRestart());
+ }
+
private static List<ConfigChangeAction> validateModel(VespaModel current, VespaModel next) {
return new ContainerRestartValidator()
.validate(current, next, new ValidationOverrides(Collections.emptyList()), Instant.now());