aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2024-06-17 14:30:58 +0200
committerjonmv <venstad@gmail.com>2024-06-17 14:30:58 +0200
commit3d68262b223d4edc9b432ba91350783decd4e714 (patch)
tree57deba03c5d93a76bd03c6be165afa4579122de0
parentd5aa7bb8a9c40e08c7580c6e95cebaf537ca2ea4 (diff)
Provide services to restart for global-doc, ONNX and LLM change validators
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForLocalLLMValidator.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForOnnxModelChangesValidator.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRestartAction.java1
5 files changed, 14 insertions, 3 deletions
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 7f624032627..f073c0f27c1 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
@@ -23,6 +23,7 @@ import com.yahoo.vespa.model.application.validation.change.RestartOnDeployForLoc
import com.yahoo.vespa.model.application.validation.change.RestartOnDeployForOnnxModelChangesValidator;
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.change.VespaRestartAction;
import com.yahoo.vespa.model.application.validation.first.RedundancyValidator;
import com.yahoo.yolean.Exceptions;
@@ -215,6 +216,9 @@ public class Validation {
@Override
public void require(ConfigChangeAction action) {
+ if (action instanceof VespaRestartAction && action.getServices().isEmpty())
+ throw new IllegalStateException("restart actions must have services specified");
+
actions.add(action);
action.validationId().ifPresent(id -> invalid(id, action.getMessage()));
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java
index df8bf0e9b01..f86a3b31182 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.documentmodel.NewDocumentType;
+import com.yahoo.vespa.model.AbstractService;
import com.yahoo.vespa.model.application.validation.Validation.ChangeContext;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
@@ -38,7 +39,8 @@ public class GlobalDocumentChangeValidator implements ChangeValidator {
if ( ! context.deployState().validationOverrides().allows(ValidationId.globalDocumentChange, context.deployState().now()))
context.invalid(ValidationId.globalDocumentChange, reason);
else if (context.deployState().isHosted())
- context.require(new VespaRestartAction(ClusterSpec.Id.from(clusterName), reason));
+ context.require(new VespaRestartAction(ClusterSpec.Id.from(clusterName), reason,
+ nextCluster.getSearch().getSearchNodes().stream().map(AbstractService::getServiceInfo).toList()));
}
}
});
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForLocalLLMValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForLocalLLMValidator.java
index ccfc611c3dc..ba1f19ff68c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForLocalLLMValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForLocalLLMValidator.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.provision.ClusterSpec;
+import com.yahoo.vespa.model.AbstractService;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.application.validation.Validation.ChangeContext;
import com.yahoo.vespa.model.container.ApplicationContainerCluster;
@@ -33,7 +34,9 @@ public class RestartOnDeployForLocalLLMValidator implements ChangeValidator {
// Only restart services if we use a local LLM in both the next and previous generation
for (var clusterId : intersect(previousClustersWithLocalLLM, nextClustersWithLocalLLM)) {
String message = "Need to restart services in %s due to use of local LLM".formatted(clusterId);
- context.require(new VespaRestartAction(clusterId, message));
+ context.require(new VespaRestartAction(clusterId, message,
+ context.model().getContainerClusters().get(clusterId.value()).getContainers()
+ .stream().map(AbstractService::getServiceInfo).toList()));
log.log(INFO, message);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForOnnxModelChangesValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForOnnxModelChangesValidator.java
index c68e13102d7..f95f0a6c079 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForOnnxModelChangesValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RestartOnDeployForOnnxModelChangesValidator.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.api.ConfigChangeAction;
import com.yahoo.config.model.api.OnnxModelCost;
+import com.yahoo.vespa.model.AbstractService;
import com.yahoo.vespa.model.Host;
import com.yahoo.vespa.model.application.validation.Validation.ChangeContext;
import com.yahoo.vespa.model.container.ApplicationContainer;
@@ -99,7 +100,7 @@ public class RestartOnDeployForOnnxModelChangesValidator implements ChangeValida
log.log(INFO, message);
cluster.onnxModelCostCalculator().setRestartOnDeploy();
cluster.onnxModelCostCalculator().store();
- actions.add(new VespaRestartAction(cluster.id(), message));
+ actions.add(new VespaRestartAction(cluster.id(), message, cluster.getContainers().stream().map(AbstractService::getServiceInfo).toList()));
}
private static boolean enoughMemoryToAvoidRestart(ApplicationContainerCluster clusterInCurrentModel,
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRestartAction.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRestartAction.java
index c0b55d856ab..e36fa5b7373 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRestartAction.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/VespaRestartAction.java
@@ -16,6 +16,7 @@ public class VespaRestartAction extends VespaConfigChangeAction implements Confi
private final boolean ignoreForInternalRedeploy;
+ /** <strong>This does <em>not</em> trigger restarts; you <em>need</em> the {@code ServiceInfo}!</strong>*/
public VespaRestartAction(ClusterSpec.Id id, String message) {
this(id, message, List.of());
}