aboutsummaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorValerij Fredriksen <valerij92@gmail.com>2020-09-24 13:54:32 +0200
committerValerij Fredriksen <valerij92@gmail.com>2020-09-24 13:54:32 +0200
commit6c6e773f39bf88b66ef1b4d0782f9a0025b244a0 (patch)
treec324b1e71cd511593c4539fd181b7e1e3b20f02a /configserver
parenta4e7bca517671223e797623c000d7bf4e9de8cc3 (diff)
Restart nodes after activate
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java15
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActions.java12
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActions.java2
3 files changed, 24 insertions, 5 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
index 3564a6e6da7..fb981eb1c67 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
@@ -313,11 +313,26 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
}
public PrepareResult deploy(File applicationPackage, PrepareParams prepareParams, Instant now) {
+ if (prepareParams.internalRestart() && hostProvisioner.isEmpty())
+ throw new IllegalArgumentException("Internal restart not supported without HostProvisioner");
+
ApplicationId applicationId = prepareParams.getApplicationId();
long sessionId = createSession(applicationId, prepareParams.getTimeoutBudget(), applicationPackage);
Tenant tenant = getTenant(applicationId);
PrepareResult result = prepare(tenant, sessionId, prepareParams, now);
activate(tenant, sessionId, prepareParams.getTimeoutBudget(), prepareParams.force());
+
+ if (prepareParams.internalRestart() && !result.configChangeActions().getRestartActions().isEmpty()) {
+ Set<String> hostnames = result.configChangeActions().getRestartActions().getEntries().stream()
+ .flatMap(entry -> entry.getServices().stream())
+ .map(ServiceInfo::getHostName)
+ .collect(Collectors.toUnmodifiableSet());
+
+ hostProvisioner.get().restart(applicationId, HostFilter.from(hostnames, Set.of(), Set.of(), Set.of()));
+ ConfigChangeActions newActions = new ConfigChangeActions(new RestartActions(), result.configChangeActions().getRefeedActions());
+ return new PrepareResult(result.sessionId(), newActions, result.deployLog());
+ }
+
return result;
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActions.java b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActions.java
index d783dc105c3..dd9c8e4b6bb 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActions.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/ConfigChangeActions.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.config.server.configchange;
import com.yahoo.config.model.api.ConfigChangeAction;
import java.util.List;
+import java.util.Objects;
/**
* Contains an aggregated view of which actions that must be performed to handle config
@@ -18,13 +19,16 @@ public class ConfigChangeActions {
private final RefeedActions refeedActions;
public ConfigChangeActions() {
- this.restartActions = new RestartActions();
- this.refeedActions = new RefeedActions();
+ this(new RestartActions(), new RefeedActions());
}
public ConfigChangeActions(List<ConfigChangeAction> actions) {
- this.restartActions = new RestartActions(actions);
- this.refeedActions = new RefeedActions(actions);
+ this(new RestartActions(actions), new RefeedActions(actions));
+ }
+
+ public ConfigChangeActions(RestartActions restartActions, RefeedActions refeedActions) {
+ this.restartActions = Objects.requireNonNull(restartActions);
+ this.refeedActions = Objects.requireNonNull(refeedActions);
}
public RestartActions getRestartActions() {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActions.java b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActions.java
index 29b0b99e42e..4db5a5e125f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActions.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/configchange/RestartActions.java
@@ -97,6 +97,6 @@ public class RestartActions {
}
public boolean isEmpty() {
- return getEntries().isEmpty();
+ return actions.isEmpty();
}
}