summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2024-01-16 15:15:32 +0100
committerGitHub <noreply@github.com>2024-01-16 15:15:32 +0100
commitada510e89058979aecd66598d1853fd09ee0b42d (patch)
treecff3cadd0e6a5aa47b76d85be651ea0a044a513f
parent01440025159d2a4b7fb7ac91d7f1d49237bc9d56 (diff)
parent2f85da5353cdfc319415d61834197d12ef45136f (diff)
Merge pull request #29933 from vespa-engine/revert-29931-jonmv/reapply-defer-container-config-on-restart
Revert "Reapply defer container config changes when restarting"
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java17
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java5
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java8
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java1
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java1
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/ActivationTriggers.java9
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/ActivationTriggersSerializer.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java3
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java14
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/ActivationTriggersSerializerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java2
14 files changed, 10 insertions, 69 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
index 04256ef2d9c..eb5942bd49c 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
@@ -43,7 +43,7 @@ public interface ModelContext {
FileRegistry getFileRegistry();
ExecutorService getExecutor();
default Optional<? extends Reindexing> reindexing() { return Optional.empty(); }
- default Set<ClusterSpec.Id> restartingClusters() { return Set.of(); }
+ default Set<ClusterSpec.Id> restartingClusters() { return Set.of(); } // TODO: Remove after 8.290 is gone.
Properties properties();
default Optional<File> appDir() { return Optional.empty(); }
OnnxModelCost onnxModelCost();
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 647745eba5d..f19341098f4 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,7 +27,6 @@ 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;
@@ -93,7 +92,6 @@ 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();
@@ -129,8 +127,7 @@ public class DeployState implements ConfigDefinitionStore {
Optional<DockerImage> wantedDockerImageRepo,
Reindexing reindexing,
Optional<ValidationOverrides> validationOverrides,
- OnnxModelCost onnxModelCost,
- Set<ClusterSpec.Id> restartingClusters) {
+ OnnxModelCost onnxModelCost) {
this.logger = deployLogger;
this.fileRegistry = fileRegistry;
this.executor = executor;
@@ -159,7 +156,6 @@ 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) {
@@ -315,8 +311,6 @@ 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;
@@ -346,7 +340,6 @@ 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() {}
@@ -466,11 +459,6 @@ 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());
}
@@ -504,8 +492,7 @@ public class DeployState implements ConfigDefinitionStore {
wantedDockerImageRepo,
reindexing,
validationOverrides,
- onnxModelCost,
- restartingClusters);
+ onnxModelCost);
}
}
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 1b9d4004b5d..65572d07cc2 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,8 +198,7 @@ public class VespaModelFactory implements ModelFactory {
.now(clock.instant())
.wantedNodeVespaVersion(modelContext.wantedNodeVespaVersion())
.wantedDockerImageRepo(modelContext.wantedDockerImageRepo())
- .onnxModelCost(modelContext.onnxModelCost())
- .restartingClusters(modelContext.restartingClusters());
+ .onnxModelCost(modelContext.onnxModelCost());
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 f36836092b8..ed7646b3066 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,7 +50,6 @@ 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;
@@ -152,10 +151,8 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
registerApplicationBundles(deployState);
registerUserConfiguredFiles(deployState);
createEndpoints(deployState);
- if (onnxModelCostCalculator.restartOnDeploy() || deployState.restartingClusters().contains(id())) {
- deployState.getDeployLogger().log(Level.INFO, "Deferring config change until restart for cluster '" + id() + "'");
+ if (onnxModelCostCalculator.restartOnDeploy())
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 799e0bd62e8..aeb6c030a49 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 boolean deferChangesUntilRestart = false;
+ private volatile boolean deferChangesUntilRestart = false;
private boolean clientsLegacyMode;
private List<Client> clients = List.of();
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 c5449475136..22b2b581b44 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,7 +22,6 @@ 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;
@@ -40,7 +39,6 @@ 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;
@@ -69,7 +67,6 @@ 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;
@@ -97,7 +94,6 @@ public class ModelContextImpl implements ModelContext {
ModelContext.Properties properties,
Optional<File> appDir,
OnnxModelCost onnxModelCost,
- Collection<Id> restartingClusters,
Optional<DockerImage> wantedDockerImageRepository,
Version modelVespaVersion,
Version wantedNodeVespaVersion) {
@@ -116,7 +112,6 @@ public class ModelContextImpl implements ModelContext {
this.modelVespaVersion = modelVespaVersion;
this.wantedNodeVespaVersion = wantedNodeVespaVersion;
this.onnxModelCost = onnxModelCost;
- this.restartingClusters = Set.copyOf(restartingClusters);
}
@Override
@@ -153,9 +148,6 @@ 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 02e49e3990c..ad785a33d5b 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,7 +118,6 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
modelContextProperties,
Optional.empty(),
onnxModelCost,
- zkClient.readActivationTriggers().restartingClusters(),
wantedDockerImageRepository,
modelFactory.version(),
wantedNodeVespaVersion);
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 894cedd0a34..fd8728ac655 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,7 +128,6 @@ 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/main/java/com/yahoo/vespa/config/server/session/ActivationTriggers.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/ActivationTriggers.java
index 04db4b1b806..e704a36d21e 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/ActivationTriggers.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/ActivationTriggers.java
@@ -15,9 +15,9 @@ import java.util.List;
*
* @author jonmv
*/
-public record ActivationTriggers(List<NodeRestart> nodeRestarts, List<ClusterSpec.Id> restartingClusters, List<Reindexing> reindexings) {
+public record ActivationTriggers(List<NodeRestart> nodeRestarts, List<Reindexing> reindexings) {
- private static final ActivationTriggers empty = new ActivationTriggers(List.of(), List.of(), List.of());
+ private static final ActivationTriggers empty = new ActivationTriggers(List.of(), List.of());
public record NodeRestart(String hostname) { }
public record Reindexing(String clusterId, String documentType) { }
@@ -30,11 +30,6 @@ public record ActivationTriggers(List<NodeRestart> nodeRestarts, List<ClusterSpe
.hostnames().stream()
.map(NodeRestart::new)
.toList(),
- configChangeActions.getRestartActions()
- .useForInternalRestart(isInternalRedeployment)
- .getEntries().stream()
- .map(entry -> ClusterSpec.Id.from(entry.getClusterName()))
- .toList(),
configChangeActions.getReindexActions().getEntries().stream()
.map(entry -> new Reindexing(entry.getClusterName(), entry.getDocumentType()))
.toList());
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/ActivationTriggersSerializer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/ActivationTriggersSerializer.java
index 11a0f3cb935..4bad32ffee4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/ActivationTriggersSerializer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/ActivationTriggersSerializer.java
@@ -17,7 +17,6 @@ import static com.yahoo.yolean.Exceptions.uncheck;
public class ActivationTriggersSerializer {
static final String NODE_RESTARTS = "nodeRestarts";
- static final String RESTARTING_CLUSTERS = "restartingClusters";
static final String REINDEXINGS = "reindexings";
static final String CLUSTER_NAME = "clusterName";
static final String DOCUMENT_TYPE = "documentType";
@@ -37,10 +36,6 @@ public class ActivationTriggersSerializer {
for (NodeRestart nodeRestart : triggers.nodeRestarts())
nodeRestarts.addString(nodeRestart.hostname());
- Cursor restartingClusters = object.setArray(RESTARTING_CLUSTERS);
- for (ClusterSpec.Id clusterId : triggers.restartingClusters())
- restartingClusters.addString(clusterId.value());
-
Cursor reindexings = object.setArray(REINDEXINGS);
for (Reindexing reindexing : triggers.reindexings()) {
Cursor entry = reindexings.addObject();
@@ -56,14 +51,11 @@ public class ActivationTriggersSerializer {
List<NodeRestart> nodeRestarts = SlimeUtils.entriesStream(object.field(NODE_RESTARTS))
.map(entry -> new NodeRestart(entry.asString()))
.toList();
- List<ClusterSpec.Id> restartingClusters = SlimeUtils.entriesStream(object.field(RESTARTING_CLUSTERS))
- .map(entry -> ClusterSpec.Id.from(entry.asString()))
- .toList();
List<Reindexing> reindexings = SlimeUtils.entriesStream(object.field(REINDEXINGS))
.map(entry -> new Reindexing(entry.field(CLUSTER_NAME).asString(),
entry.field(DOCUMENT_TYPE).asString()))
.toList();
- return new ActivationTriggers(nodeRestarts, restartingClusters, reindexings);
+ return new ActivationTriggers(nodeRestarts, reindexings);
}
}
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 27d82e90197..3289cc71357 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,7 +16,6 @@ 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;
@@ -81,7 +80,6 @@ public class ModelContextImplTest {
List.of()),
Optional.empty(),
OnnxModelCost.disabled(),
- List.of(Id.from("foobar")),
Optional.empty(),
new Version(7),
new Version(8));
@@ -90,7 +88,6 @@ 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());
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java
index a6f2eb38cc3..838b1b6b209 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java
@@ -537,20 +537,6 @@ public class HostedDeployTest {
assertEquals(Optional.of(ApplicationReindexing.empty()
.withPending("music", "music", prepareResult.sessionId())),
tester.tenant().getApplicationRepo().database().readReindexingStatus(tester.applicationId()));
-
- VespaModel model = ((VespaModel) tester.tenant().getSessionRepository()
- .activeApplicationVersions(tester.applicationId()).get().get(Version.fromString("6.1.0")).get()
- .getModel());
-
- // Config for the container cluster to be restarted has been deferred until after restart.
- ComponentsConfig.Builder builder1 = new ComponentsConfig.Builder();
- model.getContainerClusters().get("container").getContainers().get(0).getConfig(builder1);
- assertTrue(builder1.getApplyOnRestart());
-
- // Config for the metricsproxy cluster, which is not restarted, has not been deferred until after restart.
- ComponentsConfig.Builder builder2 = new ComponentsConfig.Builder();
- model.getAdmin().getMetricsProxyCluster().getContainers().get(0).getConfig(builder2);
- assertFalse(builder2.getApplyOnRestart());
}
@Test
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/ActivationTriggersSerializerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/ActivationTriggersSerializerTest.java
index 085fecaea16..5ef143198e8 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/ActivationTriggersSerializerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/ActivationTriggersSerializerTest.java
@@ -1,6 +1,5 @@
package com.yahoo.vespa.config.server.session;
-import com.yahoo.config.provision.ClusterSpec.Id;
import com.yahoo.vespa.config.server.session.ActivationTriggers.NodeRestart;
import com.yahoo.vespa.config.server.session.ActivationTriggers.Reindexing;
import org.junit.jupiter.api.Test;
@@ -18,7 +17,6 @@ class ActivationTriggersSerializerTest {
void testSerialization() {
ActivationTriggers triggers = new ActivationTriggers(List.of(new NodeRestart("node1"),
new NodeRestart("node2")),
- List.of(Id.from("cluster1")),
List.of(new Reindexing("cluster1", "type1"),
new Reindexing("cluster1", "type2"),
new Reindexing("cluster2", "type1")));
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
index e182c3f557b..2fe46868562 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClientTest.java
@@ -178,7 +178,7 @@ public class SessionZooKeeperClientTest {
String data = Utf8.toString(curator.getData(path).get());
assertTrue(data.contains("{\"applicationId\":\"default:default:default\",\"applicationPackageReference\":\"foo\",\"version\":\"8.195.1\",\"createTime\":"));
assertTrue(data.contains(",\"tenantSecretStores\":[],\"operatorCertificates\":[],\"dataplaneTokens\":[]," +
- "\"activationTriggers\":{\"nodeRestarts\":[],\"restartingClusters\":[],\"reindexings\":[]}"));
+ "\"activationTriggers\":{\"nodeRestarts\":[],\"reindexings\":[]}"));
}
private void assertApplicationIdParse(long sessionId, String idString, String expectedIdString) {